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: v12.2.2~115^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8f176f31d091cb53e1baa8c317df9e64bef4d95e;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 (cherry picked from commit 09c50e2fe4fc3e8951a483e4b2693f0ffc008dcf) --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index af86a5a7d815..9f151e86f0f8 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -6985,7 +6985,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