]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/PG: restart recovery if NotRecovering and unfound found 18974/head
authorSage Weil <sage@redhat.com>
Thu, 16 Nov 2017 20:26:27 +0000 (14:26 -0600)
committerSage Weil <sage@redhat.com>
Wed, 29 Nov 2017 18:44:59 +0000 (12:44 -0600)
commit4cfe31c63b519f2dce22f061c9951c302f6efb1e
tree807d9ff8c9ea04ec9c1f810141ee1745ba211e49
parent25b7965f8803ae68759973f4afe515d3da9c0f3f
osd/PG: restart recovery if NotRecovering and unfound found

If we are in recovery_unfound state waiting for unfound objects, and we
find them, we need to restart the recovery reservation process so that we
can recover.  Do this by queueing DoRecover() event instead of calling
queue_recovery() (which won't do anything since we're not in
recoverying|backfilling pg states).

Make the parent Active state ignore DoRecovery so that if we are already
in some phase of recovery/backfill the event gets ignored.  It is already
handled by the other important substates that care, like Clean (for
repair's benefit).

I'm not sure why states like Activating are paying attention tot his vevent...

Fixes: http://tracker.ceph.com/issues/22145
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc
src/osd/PG.h