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=05fd826ae64b2fe2a6172fcde782c616347ca162;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 0a877903438..62bcf69230e 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -1011,30 +1011,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 e67a468c5f2..04f18967435 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 a69946b0c57..0f19af358d1 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 59812078171..419aef509c2 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 8bea388dfaf..5f2ed84498c 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -283,8 +283,7 @@ public: pin = co_await pin.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; @@ -1158,6 +1157,23 @@ 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()) { + return complete_mapping_ret( + interruptible::ready_future_marker{}, + std::move(mapping)); + } else { + ceph_assert(mapping.indirect_cursor); + return resolve_cursor_to_mapping( + t, + std::move(mapping.indirect_cursor)); + } + } + using LBALeafNode = lba::LBALeafNode; auto get_extent_if_linked( Transaction &t, @@ -1251,9 +1267,7 @@ private: SUBDEBUGT(seastore_tm, "{} into {} remaps ...", t, pin, remaps.size()); pin = co_await pin.refresh(); - pin = co_await lba_manager->complete_indirect_lba_mapping( - t, std::move(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();