Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

os/filestore/HashIndex: fix list_by_hash_* termination on reaching end #11898

Merged
merged 1 commit into from Nov 12, 2016

Conversation

liewegas
Copy link
Member

If we set *next to max, then the caller (a few lines up) doesn't terminate
the loop and will keep trying to list objects in every following hash
dir until it reaches the end of the collection. In fact, if we have an
end bound we will never to an efficient listing unless we hit the max
first.

For one user, this was causing OSD suicides when scrub ran because it
wasn't able to list all objects before the timeout. In general, this would
cause scrub to stall a PG for a long time and slow down requests.

Signed-off-by: Sage Weil sage@redhat.com

If we set *next to max, then the caller (a few lines up) doesn't terminate
the loop and will keep trying to list objects in every following hash
dir until it reaches the end of the collection.  In fact, if we have an
end bound we will never to an efficient listing unless we hit the max
first.

For one user, this was causing OSD suicides when scrub ran because it
wasn't able to list all objects before the timeout.  In general, this would
cause scrub to stall a PG for a long time and slow down requests.

Broken by refactor in 921c458.

Fixes: http://tracker.ceph.com/issues/17859
Signed-off-by: Sage Weil <sage@redhat.com>
@liewegas
Copy link
Member Author

Manual test resolves the problem

@liewegas liewegas merged commit 2eaa9fa into ceph:master Nov 12, 2016
@liewegas liewegas deleted the wip-filestore-hashindex branch November 12, 2016 13:34
@ktdreyer
Copy link
Member

Tracker ticket is http://tracker.ceph.com/issues/17859

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants