From 8865f51d5171acf08933497251bffa0a73de20bc Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 30 Sep 2025 18:53:22 +0000 Subject: [PATCH] crimson/.../lba_manager: switch update_mapping to take a cursor, add adapter Signed-off-by: Samuel Just --- src/crimson/os/seastore/lba/btree_lba_manager.cc | 9 +++------ src/crimson/os/seastore/lba/btree_lba_manager.h | 2 +- src/crimson/os/seastore/lba_manager.h | 16 +++++++++++++++- src/crimson/os/seastore/lba_mapping.h | 1 + 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index 076c8283d93..4a7ccc2515b 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -876,13 +876,13 @@ BtreeLBAManager::rewrite_extent( BtreeLBAManager::update_mapping_ret BtreeLBAManager::update_mapping( Transaction& t, - LBAMapping mapping, + LBACursorRef cursor, extent_len_t prev_len, paddr_t prev_addr, LogicalChildNode& nextent) { LOG_PREFIX(BtreeLBAManager::update_mapping); - auto laddr = mapping.get_key(); + auto laddr = cursor->get_laddr(); auto addr = nextent.get_paddr(); auto len = nextent.get_length(); auto checksum = nextent.get_last_committed_crc(); @@ -890,12 +890,9 @@ BtreeLBAManager::update_mapping( t, laddr, prev_addr, prev_len, addr, len, checksum); assert(laddr == nextent.get_laddr()); assert(!addr.is_null()); - assert(mapping.is_viewable()); - assert(!mapping.is_indirect()); - auto &cursor = mapping.get_effective_cursor(); auto res = co_await _update_mapping( t, - cursor, + *cursor, [prev_addr, addr, prev_len, len, checksum]( const lba_map_val_t &in) { assert(!addr.is_null()); diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.h b/src/crimson/os/seastore/lba/btree_lba_manager.h index 721770d2223..95c12f90405 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba/btree_lba_manager.h @@ -351,7 +351,7 @@ public: update_mapping_ret update_mapping( Transaction& t, - LBAMapping mapping, + LBACursorRef cursor, extent_len_t prev_len, paddr_t prev_addr, LogicalChildNode&) final; diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index 078de81914f..d51b30678e4 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -308,10 +308,24 @@ public: using update_mapping_ret = base_iertr::future; virtual update_mapping_ret update_mapping( Transaction& t, - LBAMapping mapping, + LBACursorRef cursor, extent_len_t prev_len, paddr_t prev_addr, LogicalChildNode& nextent) = 0; + update_mapping_ret update_mapping( + Transaction& t, + LBAMapping mapping, + extent_len_t prev_len, + paddr_t prev_addr, + LogicalChildNode& nextent) { + assert(!mapping.is_indirect()); + return update_mapping( + t, + mapping.direct_cursor, + prev_len, + prev_addr, + nextent); + } /** * update_mappings diff --git a/src/crimson/os/seastore/lba_mapping.h b/src/crimson/os/seastore/lba_mapping.h index 92706ab9037..7592f90b4f6 100644 --- a/src/crimson/os/seastore/lba_mapping.h +++ b/src/crimson/os/seastore/lba_mapping.h @@ -195,6 +195,7 @@ public: base_iertr::future next(); private: + friend class LBAManager; friend lba::BtreeLBAManager; friend class TransactionManager; friend std::ostream &operator<<(std::ostream&, const LBAMapping&); -- 2.47.3