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 <sage@redhat.com>
(cherry picked from commit
09c50e2fe4fc3e8951a483e4b2693f0ffc008dcf)
pg->state_clear(PG_STATE_RECOVERING);
pg->state_clear(PG_STATE_FORCED_RECOVERY);
release_reservations();
- return transit<WaitRemoteBackfillReserved>();
+ pg->osd->local_reserver.cancel_reservation(pg->info.pgid);
+ return transit<WaitLocalBackfillReserved>();
}
boost::statechart::result