From: Samuel Just Date: Wed, 8 Oct 2025 00:30:46 +0000 (-0700) Subject: crimson/.../transaction_manager: avoid using LBAManager::ref_update_result_t X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c1aa03717bca6cd7248df7bfcdfa375926c60275;p=ceph-ci.git crimson/.../transaction_manager: avoid using LBAManager::ref_update_result_t Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 419aef509c2..147a5e46fde 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -231,9 +231,11 @@ TransactionManager::ref_ret TransactionManager::remove( LOG_PREFIX(TransactionManager::remove); DEBUGT("{} ...", t, offset); auto cursor = co_await lba_manager->get_cursor(t, offset); + auto refcount = cursor->get_refcount(); + ceph_assert(refcount > 0); auto mapping = co_await resolve_cursor_to_mapping(t, std::move(cursor)); - auto result = co_await _remove(t, std::move(mapping)); - co_return result.result.refcount; + mapping = co_await _remove(t, std::move(mapping)); + co_return refcount - 1; } TransactionManager::ref_iertr::future @@ -242,8 +244,8 @@ TransactionManager::remove( LBAMapping mapping) { mapping = co_await mapping.refresh(); - auto res = co_await _remove(t, std::move(mapping)); - co_return std::move(res.result.mapping); + mapping = co_await _remove(t, std::move(mapping)); + co_return mapping; } TransactionManager::ref_iertr::future @@ -260,8 +262,7 @@ TransactionManager::_remove_indirect_mapping_only( ret_cursor); } -TransactionManager::ref_iertr::future< - TransactionManager::_remove_mapping_result_t> +TransactionManager::ref_iertr::future TransactionManager::_remove_indirect_mapping( Transaction &t, LBAMapping mapping) @@ -292,7 +293,7 @@ TransactionManager::_remove_indirect_mapping( direct_result.length, direct_result.refcount, direct_result.key); - co_return result; + co_return result.result.mapping; } else { auto remove_direct = mapping.would_cascade_remove(); if (remove_direct) { @@ -321,12 +322,11 @@ TransactionManager::_remove_indirect_mapping( direct_result.length, direct_result.refcount, direct_result.key); - co_return result; + co_return result.result.mapping; } } -TransactionManager::ref_iertr::future< - TransactionManager::_remove_mapping_result_t> +TransactionManager::ref_iertr::future TransactionManager::_remove_direct_mapping( Transaction &t, LBAMapping mapping) @@ -345,7 +345,7 @@ TransactionManager::_remove_direct_mapping( DEBUGT("removed {}~0x{:x} refcount={} -- offset={}", t, primary_result.addr, primary_result.length, primary_result.refcount, primary_result.key); - co_return result; + co_return result.result.mapping; } else { auto retired_placeholder = cache->retire_absent_extent_addr( t, mapping.get_key(), mapping.get_val(), mapping.get_length() @@ -359,12 +359,11 @@ TransactionManager::_remove_direct_mapping( DEBUGT("removed {}~0x{:x} refcount={} -- offset={}", t, primary_result.addr, primary_result.length, primary_result.refcount, primary_result.key); - co_return result; + co_return result.result.mapping; } } -TransactionManager::ref_iertr::future< - TransactionManager::_remove_mapping_result_t> +TransactionManager::ref_iertr::future TransactionManager::_remove( Transaction &t, LBAMapping mapping) @@ -386,8 +385,7 @@ TransactionManager::_remove( primary_result.length, primary_result.refcount, primary_result.key); - return ref_iertr::make_ready_future< - _remove_mapping_result_t>(std::move(result)); + return result.result.mapping; }); } } diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index 5f2ed84498c..4dc41d80c52 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -1352,15 +1352,14 @@ private: co_return ret; } - using _remove_mapping_result_t = LBAManager::ref_update_result_t; - ref_iertr::future<_remove_mapping_result_t> _remove( + ref_iertr::future _remove( Transaction &t, LBAMapping mapping); - ref_iertr::future<_remove_mapping_result_t> + ref_iertr::future _remove_indirect_mapping( Transaction &t, LBAMapping mapping); - ref_iertr::future<_remove_mapping_result_t> + ref_iertr::future _remove_direct_mapping( Transaction &t, LBAMapping mapping);