From: Samuel Just Date: Tue, 30 Sep 2025 18:56:42 +0000 (+0000) Subject: crimson/.../btree_lba_manager: convert remove_mapping to coroutine X-Git-Tag: v21.0.0~99^2~47 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bbda6c1799722d657652bfded52e6389c5b9ec70;p=ceph.git crimson/.../btree_lba_manager: convert remove_mapping to coroutine Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.h b/src/crimson/os/seastore/lba/btree_lba_manager.h index 297d3f1fbc7..c4aeb27b8c7 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba/btree_lba_manager.h @@ -218,26 +218,18 @@ public: ref_ret remove_mapping( Transaction &t, laddr_t addr) final { - return update_refcount(t, addr, -1 - ).si_then([this, &t](auto res) { - ceph_assert(res.refcount == 0); - if (res.addr.is_paddr()) { - return ref_iertr::make_ready_future< - ref_update_result_t>(ref_update_result_t{ - std::move(res), std::nullopt}); - } - return update_refcount(t, res.key, -1 - ).si_then([indirect_result=std::move(res)](auto direct_result) mutable { - return indirect_result.mapping.refresh( - ).si_then([direct_result=std::move(direct_result), - indirect_result=std::move(indirect_result)](auto) { - return ref_iertr::make_ready_future< - ref_update_result_t>(ref_update_result_t{ - std::move(indirect_result), - std::move(direct_result)}); - }); - }); - }); + auto result = co_await update_refcount(t, addr, -1); + ceph_assert(result.refcount == 0); + if (result.addr.is_paddr()) { + co_return ref_update_result_t{std::move(result), std::nullopt}; + } + + auto direct_result = co_await update_refcount(t, result.key, -1); + result.mapping = co_await result.mapping.refresh(); + co_return ref_update_result_t{ + std::move(result), + std::move(direct_result) + }; } ref_ret remove_indirect_mapping_only(