From 8f176f31d091cb53e1baa8c317df9e64bef4d95e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 22 Oct 2017 22:46:00 -0500 Subject: [PATCH] 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) --- src/osd/PG.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index af86a5a7d8152..9f151e86f0f87 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 -- 2.39.5