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: v12.2.2~157^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ba106b6d32fb3138b7a61fe613b211e02f1e44aa;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 (cherry picked from commit a8534cce1a1661375a93aff2314633bce63695ed) --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 36d0aabfa8f5..c285d00e2693 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -6569,7 +6569,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(); } @@ -6827,7 +6830,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(); }