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
jewel: osd: adjust scrub boundary to object without SnapSet #11311
Conversation
Signed-off-by: Samuel Just <sjust@redhat.com> (cherry picked from commit a2c27c9)
Previously, we needed to scrub all objects in clones in a single hash value mainly to ensure that _scrub had access to all clones of a single object at the same time. Instead, just avoid letting head or snapdir be a boundary (see the comment in the commit for details). Signed-off-by: Samuel Just <sjust@redhat.com> (cherry picked from commit 27bdc8c)
Previously, ScrubMap::objects was always sorted bitwise (nibblewise before the comparator change was made. It didn't matter because we always scrubbed whole hash values. Now, we need the objects in the objectstore ordering because we may be missing objects at the tail of the scanned range and need them to show up at the tail of the ScrubMap::objects mapping. We don't need to do anything else to handle the upgrade process since the actual objects *in* the map were determined by the objectstore ordering. Signed-off-by: Samuel Just <sjust@redhat.com> (cherry picked from commit 6d410e9)
See comment in commit. Signed-off-by: Samuel Just <sjust@redhat.com>
The commit 8833c64 is needed to backport the other code into Jewel because of interoperation with Hammer OSDs. |
A run passed with 5 failures all accounted for. |
Second run passed with 5 failures accounted for: http://pulpito.ceph.com/dzafman-2016-10-07_15:56:21-rados-wip-zafman-testing-jewel-distro-basic-smithi/ |
@liewegas Ready for review and merge after master. |
Is there an issue / pull request for this already ? If not it's fine, can be added later ;-) |
@dachary All that exists now is http://tracker.ceph.com/issues/17470, a feature tracker marked for backport to Jewel and Hammer. |
@dzafman thanks for the link :-) |
@liewegas Sam wrote and I modified these changes. Although you could count me as the reviewer, maybe you should review this so it could make 10.2.4. |
Reviewed-by: |
…t without SnapSet Reviewed-by: Loic Dachary <ldachary@redhat.com>
It passed the rados (http://tracker.ceph.com/issues/17487#note-12), upgrade/jewel-x and upgrade/hammer-x (http://tracker.ceph.com/issues/17487#note-15) suites (except for two bugs that are, I believe, unrelated) |
@@ -4184,13 +4192,15 @@ void PG::chunky_scrub(ThreadPool::TPHandle &handle) | |||
p != pg_log.get_log().log.rend(); | |||
++p) { | |||
if (cmp(p->soid, scrubber.start, get_sort_bitwise()) >= 0 && | |||
cmp(p->soid, scrubber.end, get_sort_bitwise()) < 0) { | |||
cmp(p->soid, scrubber.end, get_sort_bitwise()) <= 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The original PR didn't have the change because the later release would never have to interact with Hammer OSDs. Hammer OSDs had a small bug for EC pools http://tracker.ceph.com/issues/17491 that would include the end element. See comment in PG.h.
backport preparation for http://tracker.ceph.com/issues/17470