From: Xuehan Xu Date: Thu, 27 Jun 2024 10:17:29 +0000 (+0800) Subject: crimson/osd/osd_operations: make the "recover_missing" phase concurrent X-Git-Tag: v20.0.0~1262^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=1b2e4d9ab06c68ce73259e4e425ca4e3ecdda027;p=ceph.git crimson/osd/osd_operations: make the "recover_missing" phase concurrent Otherwise, UrgentRecovery requests within the same pg can only be processed sequentially Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/osd_operation_external_tracking.h b/src/crimson/osd/osd_operation_external_tracking.h index 28738a11dda4d..2f05d70a8bde2 100644 --- a/src/crimson/osd/osd_operation_external_tracking.h +++ b/src/crimson/osd/osd_operation_external_tracking.h @@ -33,6 +33,8 @@ struct LttngBackend PGActivationBlocker::BlockingEvent::Backend, scrub::PGScrubber::BlockingEvent::Backend, ClientRequest::PGPipeline::RecoverMissing::BlockingEvent::Backend, + ClientRequest::PGPipeline::RecoverMissing:: + BlockingEvent::ExitBarrierEvent::Backend, ClientRequest::PGPipeline::RecoverMissingLockOBC::BlockingEvent::Backend, ClientRequest::PGPipeline::RecoverMissingLockOBC:: BlockingEvent::ExitBarrierEvent::Backend, @@ -109,6 +111,10 @@ struct LttngBackend const ClientRequest::PGPipeline::RecoverMissing& blocker) override { } + void handle(ClientRequest::PGPipeline::RecoverMissing::BlockingEvent::ExitBarrierEvent& ev, + const Operation& op) override { + } + void handle(ClientRequest::PGPipeline::RecoverMissingLockOBC::BlockingEvent& ev, const Operation& op, const ClientRequest::PGPipeline::RecoverMissingLockOBC& blocker) override { @@ -175,6 +181,8 @@ struct HistoricBackend PGActivationBlocker::BlockingEvent::Backend, scrub::PGScrubber::BlockingEvent::Backend, ClientRequest::PGPipeline::RecoverMissing::BlockingEvent::Backend, + ClientRequest::PGPipeline::RecoverMissing:: + BlockingEvent::ExitBarrierEvent::Backend, ClientRequest::PGPipeline::RecoverMissingLockOBC::BlockingEvent::Backend, ClientRequest::PGPipeline::RecoverMissingLockOBC:: BlockingEvent::ExitBarrierEvent::Backend, @@ -251,6 +259,10 @@ struct HistoricBackend const ClientRequest::PGPipeline::RecoverMissing& blocker) override { } + void handle(ClientRequest::PGPipeline::RecoverMissing::BlockingEvent::ExitBarrierEvent& ev, + const Operation& op) override { + } + void handle(ClientRequest::PGPipeline::RecoverMissingLockOBC::BlockingEvent& ev, const Operation& op, const ClientRequest::PGPipeline::RecoverMissingLockOBC& blocker) override { diff --git a/src/crimson/osd/osd_operations/common/pg_pipeline.h b/src/crimson/osd/osd_operations/common/pg_pipeline.h index d13dbe2e0d200..5984a1399baeb 100644 --- a/src/crimson/osd/osd_operations/common/pg_pipeline.h +++ b/src/crimson/osd/osd_operations/common/pg_pipeline.h @@ -17,7 +17,7 @@ protected: struct WaitForActive : OrderedExclusivePhaseT { static constexpr auto type_name = "CommonPGPipeline:::wait_for_active"; } wait_for_active; - struct RecoverMissing : OrderedExclusivePhaseT { + struct RecoverMissing : OrderedConcurrentPhaseT { static constexpr auto type_name = "CommonPGPipeline::recover_missing"; } recover_missing; struct GetOBC : OrderedExclusivePhaseT {