From a8534cce1a1661375a93aff2314633bce63695ed Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 19 Sep 2017 15:26:40 -0500 Subject: [PATCH] osd/PG: allow local recovery reservations to be preempted If a PG has a higher recovery priority and a lower-priority item is in progress, allow it to be preempted. This triggers the RecoveryCancel or BackfillCancel event with a 0 delay, which means it will immediately re-request a reservation (and presumably wait). Signed-off-by: Sage Weil --- src/osd/PG.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 5f53cc6ea12a2..d333843b292ef 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -6364,7 +6364,10 @@ PG::RecoveryState::WaitLocalBackfillReserved::WaitLocalBackfillReserved(my_conte new QueuePeeringEvt( pg, pg->get_osdmap()->get_epoch(), LocalBackfillReserved()), - pg->get_backfill_priority()); + pg->get_backfill_priority(), + new QueuePeeringEvt( + pg, pg->get_osdmap()->get_epoch(), + DeferBackfill(0.0))); pg->publish_stats_to_osd(); } @@ -6622,7 +6625,10 @@ PG::RecoveryState::WaitLocalRecoveryReserved::WaitLocalRecoveryReserved(my_conte new QueuePeeringEvt( pg, pg->get_osdmap()->get_epoch(), LocalRecoveryReserved()), - pg->get_recovery_priority()); + pg->get_recovery_priority(), + new QueuePeeringEvt( + pg, pg->get_osdmap()->get_epoch(), + DeferRecovery(0.0))); pg->publish_stats_to_osd(); } -- 2.39.5