From 9d790117f9c40633089f14b8185ac729bb95ae3a Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Thu, 25 Jan 2024 16:47:38 +0800 Subject: [PATCH] crimson/.../client_request: introduce instance_handle_t::enter_stage_sync() Signed-off-by: Yingxin Cheng (cherry picked from commit 4f532cfd8fdf9b7ac11aa327baca355062dabcb1) --- src/crimson/osd/osd_operations/client_request.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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> -- 2.39.5