From: Samuel Just Date: Fri, 13 Dec 2024 21:43:15 +0000 (+0000) Subject: crimson/.../replicated_request: convert with_pg_interruptible to coroutine X-Git-Tag: v20.0.0~458^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d299e46ed84d39464610a301353c12280ec17a83;p=ceph.git crimson/.../replicated_request: convert with_pg_interruptible to coroutine Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/osd_operations/replicated_request.cc b/src/crimson/osd/osd_operations/replicated_request.cc index c8b2bdd38169..4768b83e27c2 100644 --- a/src/crimson/osd/osd_operations/replicated_request.cc +++ b/src/crimson/osd/osd_operations/replicated_request.cc @@ -5,6 +5,7 @@ #include "common/Formatter.h" +#include "crimson/common/coroutine.h" #include "crimson/osd/osd.h" #include "crimson/osd/osd_connection_priv.h" #include "crimson/osd/osd_operation_external_tracking.h" @@ -68,17 +69,14 @@ RepRequest::interruptible_future<> RepRequest::with_pg_interruptible( { LOG_PREFIX(RepRequest::with_pg_interruptible); DEBUGI("{}", *this); - return this->template enter_stage(repop_pipeline(*pg).process - ).then_interruptible([this, pg] { - return this->template with_blocking_event< - PG_OSDMapGate::OSDMapBlocker::BlockingEvent - >([this, pg](auto &&trigger) { - return pg->osdmap_gate.wait_for_map( - std::move(trigger), req->min_epoch); - }); - }).then_interruptible([this, pg] (auto) { - return pg->handle_rep_op(req); - }); + co_await this->template enter_stage(repop_pipeline(*pg).process); + co_await interruptor::make_interruptible(this->template with_blocking_event< + PG_OSDMapGate::OSDMapBlocker::BlockingEvent + >([this, pg](auto &&trigger) { + return pg->osdmap_gate.wait_for_map( + std::move(trigger), req->min_epoch); + })); + co_await pg->handle_rep_op(req); } seastar::future<> RepRequest::with_pg(