From: Sage Weil Date: Tue, 19 Sep 2017 20:26:40 +0000 (-0500) Subject: osd/PG: allow local recovery reservations to be preempted X-Git-Tag: v13.0.1~757^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a8534cce1a1661375a93aff2314633bce63695ed;p=ceph.git 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 --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 5f53cc6ea12..d333843b292 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(); }