From: Samuel Just Date: Tue, 30 Sep 2025 18:53:22 +0000 (+0000) Subject: crimson/.../lba_manager: switch update_mapping to take a cursor, add adapter X-Git-Tag: v21.0.0~99^2~48 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c03bb0bf6e0fbc9f52591ac9b31de40f02e5202e;p=ceph.git crimson/.../lba_manager: switch update_mapping to take a cursor, add adapter 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 357038eb764..49fadd0b02f 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -880,13 +880,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(); @@ -894,12 +894,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 abaf7719929..297d3f1fbc7 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 5dca57dbcfe..7af7688f883 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -311,10 +311,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 d4dcf0e479d..4e6ade4aea9 100644 --- a/src/crimson/os/seastore/lba_mapping.h +++ b/src/crimson/os/seastore/lba_mapping.h @@ -193,6 +193,7 @@ public: base_iertr::future next(); private: + friend class LBAManager; friend lba::BtreeLBAManager; friend class TransactionManager; friend class ::transaction_manager_test_t;