From: Yingxin Cheng Date: Thu, 25 Jan 2024 08:47:38 +0000 (+0800) Subject: crimson/.../client_request: introduce instance_handle_t::enter_stage_sync() X-Git-Tag: v19.1.1~236^2~4 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=9d790117f9c40633089f14b8185ac729bb95ae3a;p=ceph.git crimson/.../client_request: introduce instance_handle_t::enter_stage_sync() Signed-off-by: Yingxin Cheng (cherry picked from commit 4f532cfd8fdf9b7ac11aa327baca355062dabcb1) --- diff --git a/src/crimson/osd/osd_operations/client_request.h b/src/crimson/osd/osd_operations/client_request.h index eb27f91296499..c6ee364db5996 100644 --- a/src/crimson/osd/osd_operations/client_request.h +++ b/src/crimson/osd/osd_operations/client_request.h @@ -113,12 +113,15 @@ public: CompletionEvent > pg_tracking_events; + template + typename BlockingEventT::template Trigger + get_trigger(ClientRequest &op) { + return {std::get(pg_tracking_events), op}; + } + template auto with_blocking_event(F &&f, ClientRequest &op) { - auto ret = std::forward(f)( - typename BlockingEventT::template Trigger{ - std::get(pg_tracking_events), op - }); + auto ret = std::forward(f)(get_trigger(op)); if constexpr (std::is_same_v) { return ret; } else { @@ -138,6 +141,12 @@ public: }, op); } + template + void enter_stage_sync(StageT &stage, ClientRequest &op) { + handle.template enter_sync( + stage, get_trigger(op)); + } + template < typename InterruptorT=void, typename BlockingObj, typename Method, typename... Args>