From: Sage Weil Date: Mon, 23 Oct 2017 03:46:00 +0000 (-0500) Subject: osd/PG: on recovery done, requeue for backfill X-Git-Tag: v13.0.1~414^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=09c50e2fe4fc3e8951a483e4b2693f0ffc008dcf;p=ceph.git osd/PG: on recovery done, requeue for backfill We were keeping our existing recovery reservation slot (with a high priority) and going straight to waiting for backfill reservations on the peers. This is a problem because the reserver thinks we're doing high priority work when we're actually doing lower-priority backfill. Fix by closing out our recovery reservation and going to the WaitLocalBackfillReserved state, where we'll re-request backfill at the appropriate priority. Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 838c5b34c3db..3161209e48a9 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -7015,7 +7015,8 @@ PG::RecoveryState::Recovering::react(const RequestBackfill &evt) pg->state_clear(PG_STATE_RECOVERING); pg->state_clear(PG_STATE_FORCED_RECOVERY); release_reservations(); - return transit(); + pg->osd->local_reserver.cancel_reservation(pg->info.pgid); + return transit(); } boost::statechart::result