From: Samuel Just Date: Fri, 19 Sep 2025 16:13:20 +0000 (-0700) Subject: crimson/.../transaction_manager: convert remove to coroutine X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9f5e89499d76be76bdb0fa7b2bead874b94f3598;p=ceph-ci.git crimson/.../transaction_manager: convert remove to coroutine Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index ca1a45af9a7..a38125bd57f 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -202,24 +202,21 @@ TransactionManager::close() { TransactionManager::ref_ret TransactionManager::remove( Transaction &t, - LogicalChildNodeRef &ref) + LogicalChildNodeRef ref) { LOG_PREFIX(TransactionManager::remove); DEBUGT("{} ...", t, *ref); - return lba_manager->get_mapping(t, *ref - ).si_then([ref, this, &t](auto mapping) { - return lba_manager->remove_mapping(t, std::move(mapping)); - }).si_then([this, FNAME, &t, ref](auto result) { - assert(!result.direct_result); - auto &primary_result = result.result; - if (primary_result.refcount == 0) { - cache->retire_extent(t, ref); - } - DEBUGT("removed {}~0x{:x} refcount={} -- {}", - t, primary_result.addr, primary_result.length, - primary_result.refcount, *ref); - return primary_result.refcount; - }); + auto mapping = co_await lba_manager->get_mapping(t, *ref); + auto result = co_await lba_manager->remove_mapping(t, std::move(mapping)); + assert(!result.direct_result); + auto &primary_result = result.result; + if (primary_result.refcount == 0) { + cache->retire_extent(t, ref); + } + DEBUGT("removed {}~0x{:x} refcount={} -- {}", + t, primary_result.addr, primary_result.length, + primary_result.refcount, *ref); + co_return primary_result.refcount; } TransactionManager::ref_ret TransactionManager::remove( @@ -228,12 +225,9 @@ TransactionManager::ref_ret TransactionManager::remove( { LOG_PREFIX(TransactionManager::remove); DEBUGT("{} ...", t, offset); - return lba_manager->get_mapping(t, offset - ).si_then([&t, this](auto mapping) { - return _remove(t, std::move(mapping)); - }).si_then([](auto result) { - return result.result.refcount; - }); + auto mapping = co_await lba_manager->get_mapping(t, offset); + auto result = co_await _remove(t, std::move(mapping)); + co_return result.result.refcount; } TransactionManager::ref_iertr::future @@ -241,11 +235,9 @@ TransactionManager::remove( Transaction &t, LBAMapping mapping) { - return mapping.refresh().si_then([&t, this](auto mapping) { - return _remove(t, std::move(mapping)); - }).si_then([](auto res) { - return std::move(res.result.mapping); - }); + mapping = co_await mapping.refresh(); + auto res = co_await _remove(t, std::move(mapping)); + co_return std::move(res.result.mapping); } TransactionManager::ref_iertr::future diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index d7b205c8f6a..816b760fe28 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -361,7 +361,7 @@ public: */ ref_ret remove( Transaction &t, - LogicalChildNodeRef &ref); + LogicalChildNodeRef ref); ref_ret remove( Transaction &t,