]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
os/filestore/HashIndex: fix list_by_hash_* termination on reaching end
authorSage Weil <sage@redhat.com>
Thu, 10 Nov 2016 18:56:24 +0000 (13:56 -0500)
committerSage Weil <sage@redhat.com>
Thu, 10 Nov 2016 18:56:24 +0000 (13:56 -0500)
commitc5180262a086c2d3895aff4bf0fb0ff9a6666149
tree4fff232b0087a69698065791e8533c709deb1a69
parentf1476e221eec372196666bf81ca82aaf3703b787
os/filestore/HashIndex: fix list_by_hash_* termination on reaching end

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 921c4586f165ce39c17ef8b579c548dc8f6f4500.

Fixes: http://tracker.ceph.com/issues/17859
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/filestore/HashIndex.cc