From: Samuel Just Date: Tue, 7 Oct 2025 21:20:17 +0000 (-0700) Subject: crimson: replace LBAManager::complete_indirect_lba_mapping with TransactionManager... X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=14399eff499304fe09c287fa18738a98d34a63b1;p=ceph-ci.git crimson: replace LBAManager::complete_indirect_lba_mapping with TransactionManager::complete_mapping Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index 4a7ccc2515b..abca34ae0e7 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -1012,30 +1012,6 @@ BtreeLBAManager::get_physical_extent_if_live( }); } -BtreeLBAManager::complete_lba_mapping_ret -BtreeLBAManager::complete_indirect_lba_mapping( - Transaction &t, - LBAMapping mapping) -{ - assert(mapping.is_viewable()); - assert(mapping.is_indirect()); - if (mapping.is_complete_indirect()) { - return complete_lba_mapping_iertr::make_ready_future< - LBAMapping>(std::move(mapping)); - } - auto c = get_context(t); - return with_btree_state( - cache, - c, - std::move(mapping), - [this, c](auto &btree, auto &mapping) { - return resolve_indirect_cursor(c, btree, *mapping.indirect_cursor - ).si_then([&mapping](auto cursor) { - mapping.direct_cursor = std::move(cursor); - }); - }); -} - void BtreeLBAManager::register_metrics() { LOG_PREFIX(BtreeLBAManager::register_metrics); diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.h b/src/crimson/os/seastore/lba/btree_lba_manager.h index bd386d47eae..457fa7b6218 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba/btree_lba_manager.h @@ -333,10 +333,6 @@ public: laddr_t laddr, extent_len_t len) final; - complete_lba_mapping_ret complete_indirect_lba_mapping( - Transaction &t, - LBAMapping mapping) final; - private: Cache &cache; diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index c1885af63a2..19545016a30 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -347,18 +347,6 @@ public: laddr_t laddr, extent_len_t len) = 0; - using complete_lba_mapping_iertr = get_mappings_iertr; - using complete_lba_mapping_ret = - complete_lba_mapping_iertr::future; - /* - * Completes an incomplete indirect mappings - * - * No effect if the indirect mapping is already complete - */ - virtual complete_lba_mapping_ret complete_indirect_lba_mapping( - Transaction &t, - LBAMapping mapping) = 0; - virtual ~LBAManager() {} }; using LBAManagerRef = std::unique_ptr; diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index bd1e627eca2..ab0e08c99b3 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -267,8 +267,7 @@ TransactionManager::_remove_indirect_mapping( LBAMapping mapping) { LOG_PREFIX(TransactionManager::_remove_indirect_mapping); - mapping = co_await lba_manager->complete_indirect_lba_mapping(t, std::move(mapping) - ); + mapping = co_await complete_mapping(t, std::move(mapping)); auto ret = get_extent_if_linked(t, *(mapping.direct_cursor)); if (ret.has_child()) { auto extent = co_await ret.template get_child_fut_as(); diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index a19d581ba6d..9ad558cd398 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -285,8 +285,7 @@ public: co_await pin.co_refresh(); if (pin.is_indirect()) { - pin = co_await lba_manager->complete_indirect_lba_mapping( - t, std::move(pin)); + pin = co_await complete_mapping(t, std::move(pin)); } extent_len_t direct_partial_off = partial_off; @@ -1160,6 +1159,21 @@ private: Transaction &t, LBACursorRef cursor); + using complete_mapping_iertr = base_iertr; + using complete_mapping_ret = complete_mapping_iertr::future; + complete_mapping_ret complete_mapping( + Transaction &t, + LBAMapping mapping) { + if (mapping.is_complete()) { + co_return co_await mapping.refresh(); + } else { + ceph_assert(mapping.indirect_cursor); + co_return co_await resolve_cursor_to_mapping( + t, + std::move(mapping.indirect_cursor)); + } + } + using LBALeafNode = lba::LBALeafNode; get_child_ret_t get_extent_if_linked( Transaction &t, @@ -1252,7 +1266,7 @@ private: SUBDEBUGT(seastore_tm, "{} into {} remaps ...", t, pin, remaps.size()); co_await pin.co_refresh(); - pin = co_await lba_manager->complete_indirect_lba_mapping(t, pin); + pin = co_await complete_mapping(t, std::move(pin)); } else { laddr_t original_laddr = pin.get_key(); extent_len_t original_len = pin.get_length();