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

osd: process _scan_snaps() with all snapshots with head #21546

Merged
merged 5 commits into from May 3, 2018

Conversation

dzafman
Copy link
Contributor

@dzafman dzafman commented Apr 20, 2018

Test with more than 1 osd with scrub errors

Fixes: http://tracker.ceph.com/issues/22881

}

function TEST_scrub_snaps_multi() {
scrub_snaps $dir 2 30 --osd_scrub_chunk_min=3 --osd_scrub_chunk_max=3
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting osd_scrub_chunk_min and max like this doesn't work.

@tchaikov
Copy link
Contributor

retest this please

@liewegas liewegas added this to the mimic milestone Apr 23, 2018
src/osd/PG.cc Outdated
}
}
for_meta_scrub.objects.insert(begin, iter);
scrubber.cleaned_meta_map.objects.erase(begin, iter);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we move this into a helper so that we aren't duplicating the fragment from scrub_compare_maps? Something like Scrubber::clean_meta_map(map, &for_meta_scrub), where the helper handles the insert/swap/erase dance?

@tchaikov
Copy link
Contributor

tchaikov commented Apr 26, 2018

@dzafman
Copy link
Contributor Author

dzafman commented Apr 27, 2018

More testing:

http://pulpito.ceph.com/dzafman-2018-04-26_09:49:15-rados:standalone-wip-zafman-testing-distro-basic-smithi/
PASSED

http://pulpito.ceph.com/dzafman-2018-04-26_09:56:48-rados:thrash-wip-zafman-testing-distro-basic-smithi/
1 Test failed but fixed by commit that fixes clean_meta_map()
1 Test failed scrub "stat mismatch, got 2/0 objects"

Signed-off-by: David Zafman <dzafman@redhat.com>
Check list-inconsistent-obj output
Check how many _scan_snap groupings
Use more general check for crashed osd(s)

Signed-off-by: David Zafman <dzafman@redhat.com>
Signed-off-by: David Zafman <dzafman@redhat.com>
When ending on a head object, the head and snapshots would stay in
cleaned_meta_map until more maps arrive.  The problem as that
during a scrub an eviction could occur because scrubber.start
is already past the stray object(s) so range_intersects_scrub() is false.

Fixes: http://tracker.ceph.com/issues/23909

Signed-off-by: David Zafman <dzafman@redhat.com>
@dzafman
Copy link
Contributor Author

dzafman commented May 1, 2018

Final retesting in progress

@dzafman
Copy link
Contributor Author

dzafman commented May 1, 2018

@dzafman dzafman requested a review from jdurgin May 1, 2018 15:48
@dzafman
Copy link
Contributor Author

dzafman commented May 1, 2018

@liewegas I created a common helper function and fixed a bug in how that code work. When the cleaned_meta_map ended in a head object that object wasn't returned. This means that range_intersects_scrub() can return false, but a previous object still hasn't been processed.

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