From: Samuel Just Date: Thu, 2 Oct 2025 20:47:46 +0000 (-0700) Subject: crimson/.../transaction_manager: convert remove to use cursor interfaces X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7b9117ed3fe12d805dbc4fa0a879d6e503effa9b;p=ceph-ci.git crimson/.../transaction_manager: convert remove to use cursor interfaces Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 2c43c2f8f2a..e9cd605597c 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -206,17 +206,22 @@ TransactionManager::ref_ret TransactionManager::remove( { LOG_PREFIX(TransactionManager::remove); DEBUGT("{} ...", t, *ref); - 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) { + auto cursor = co_await lba_manager->get_cursor(t, *ref); + assert(cursor->is_direct()); + extent_ref_count_t refcount = cursor->get_refcount(); + auto laddr = cursor->get_laddr(); + auto length = cursor->get_length(); + assert(refcount > 0); + --refcount; + co_await lba_manager->update_mapping_refcount( + t, std::move(cursor), -1); + if (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; + t, laddr, length, + refcount, *ref); + co_return refcount; } TransactionManager::ref_ret TransactionManager::remove(