From: Matan Breizman Date: Tue, 20 Aug 2024 14:11:25 +0000 (+0000) Subject: crimson/osd/osd_operations/snaptrim_event: start to use coroutines X-Git-Tag: testing/wip-pdonnell-testing-20240916.200549-debug~52^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=24a278be8f9399b173d5468ad7b8a11267dc8943;p=ceph-ci.git crimson/osd/osd_operations/snaptrim_event: start to use coroutines Signed-off-by: Matan Breizman --- diff --git a/src/crimson/osd/osd_operations/snaptrim_event.cc b/src/crimson/osd/osd_operations/snaptrim_event.cc index 3a3645b9cf6..21d9c116aab 100644 --- a/src/crimson/osd/osd_operations/snaptrim_event.cc +++ b/src/crimson/osd/osd_operations/snaptrim_event.cc @@ -402,36 +402,29 @@ SnapTrimObjSubEvent::start() // lock both clone's and head's obcs co_await pg->obc_loader.with_obc( coid, - [this](auto head_obc, auto clone_obc) { + [this](auto head_obc, auto clone_obc) -> ObjectContextLoader::load_obc_iertr::future<> { logger().debug("{}: got clone_obc={}", *this, clone_obc->get_oid()); - return enter_stage( - client_pp().process - ).then_interruptible( - [this,clone_obc=std::move(clone_obc), head_obc=std::move(head_obc)]() mutable { - logger().debug("{}: processing clone_obc={}", *this, clone_obc->get_oid()); - return remove_or_update( - clone_obc, head_obc - ).safe_then_interruptible( - [clone_obc, this](auto&& txn) mutable { - return pg->submit_transaction( + + co_await enter_stage(client_pp().process); + + logger().debug("{}: processing clone_obc={}", *this, clone_obc->get_oid()); + + auto txn = co_await remove_or_update(clone_obc, head_obc); + + auto [submitted, all_completed] = co_await pg->submit_transaction( std::move(clone_obc), std::move(txn), std::move(osd_op_p), std::move(log_entries) - ).then_interruptible([this](auto p) { - auto &submitted = std::get<0>(p); - auto &all_completed = std::get<1>(p); - return submitted.then_interruptible( - [this, all_completed=std::move(all_completed)]() mutable { - return enter_stage( - client_pp().wait_repop - ).then_interruptible([all_completed=std::move(all_completed)]() mutable{ - return std::move(all_completed); - }); - }); - }); - }); - }); + ); + + co_await std::move(submitted); + + co_await enter_stage(client_pp().wait_repop); + + co_await std::move(all_completed); + + co_return; }, false ).handle_error_interruptible(