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

nautilus: osd: Fix the way that auto repair triggers after regular scrub #28869

Merged
merged 8 commits into from Jul 30, 2019

Conversation

@dzafman
Copy link
Member

commented Jul 3, 2019

dzafman and others added 8 commits Jun 7, 2019
osd: Don't randomize deep scrubs when noscrub set
Fixes: http://tracker.ceph.com/issues/40198

Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 974e374)
osd/: rephrase [un]reg_next_scrub as on_info_history_change
As PeeringState won't be as careful about usage of
on_info_history_change, add a scrub_registered flag
to protect against double-(un)registers.

Signed-off-by: sjust@redhat.com <sjust@redhat.com>
(cherry picked from commit 5ec8f68)

Conflicts:
	src/osd/PG.cc (bring in changes from PeeringState.cc)
	src/osd/PG.h (don't need override)
	src/osd/PeeringState.cc (doesn't exist)
	src/osd/PeeringState.h (doesn't exist)
osd: cleanup: Use the specific sched_time to see if scrub user requested
Replace bool scrub_registered with check of scrub_reg_stamp

Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 7597a9a)

Conflicts:
	src/osd/PG.cc (code rearrangment cause conflicts)
	src/osd/PG.h (trivial)
osd: Fix the way that auto repair triggers after regular scrub
We used a trick to get auto repair to happen after scrub errors
which reset the scrub/deep-scrub stamps.  This not only
looks bad to the user, but causes health warnings.  Instead
use a new scrubber flag need_auto which causes reg_next_srub()
to set deadline for immediate scrubbing.  It also causes time_for_deep
to be set so that auto repair triggers.

Every regular scrub was triggering a deep scrub. Check
scrubber.authoritative.size() (scrub error count), so regular scrub doesn't
trigger deep-scrub when there are no errors.

Caused by: 2202e5d

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

Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 4a4c1fd)

Conflicts:
	src/osd/PG.cc (differences in scrub_finish())
	src/osd/PG.h (don't need override)
	src/osd/PeeringState.h (doesn't exist)
osd: Fix PG::sched_scrub() logic so time_for_deep is consistent on re…
…-entry

Perform calculations on the first entry to PG::sched_scrub() and save
scrubber.time_for_deep.  This makes it clear that upon re-entry we
are already committed to a deep scrub and/or auto repair.

Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 445b022)

Conflicts:
	src/osd/PG.cc (code rearrangment cause conflicts)
osd: Handle scrub interval changes
Global changes reschedule all PG scrubs
Pool changes reschedule pool PG scrubs

Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 27918bb)

Conflicts:
	src/osd/OSD.cc (trivial)
osd: Handle osd_max_scrub > 1 by not getting stuck on first ScrubJob
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit d938b28)

Conflicts:
	src/osd/PG.cc (code rearrangment cause conflict)
osd: Only request scrub reservations from PG's acting set
Fixes: http://tracker.ceph.com/issues/40530

Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 0855ef8)

Conflicts:
	src/osd/PG.cc (Use actingset instead of get_actingset(), code
rearranged)

@dzafman dzafman added this to the nautilus milestone Jul 3, 2019

@dzafman dzafman changed the title Wip backport 40073 nautilus: osd: Fix the way that auto repair triggers after regular scrub Jul 3, 2019

@neha-ojha
Copy link
Member

left a comment

looks like 8296212 was already merged #28768?

@yuriw

This comment has been minimized.

Copy link
Contributor

commented Jul 24, 2019

@yuriw yuriw merged commit a739847 into ceph:nautilus Jul 30, 2019

4 of 5 checks passed

make check (arm64) Build triggered for original commit.
Details
Docs: build check OK - docs built
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.