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-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=adcf97ccca75dd15df74b97c7d08c459defad68a;p=ceph-ci.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 596ce3caf0b..0a877903438 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -875,13 +875,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(); @@ -889,12 +889,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 b27ea555f49..44e2b74f9a5 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 53773119d82..2f03a59acde 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 13acb4b9217..635c912a82f 100644 --- a/src/crimson/os/seastore/lba_mapping.h +++ b/src/crimson/os/seastore/lba_mapping.h @@ -191,6 +191,7 @@ public: base_iertr::future next(); private: + friend class LBAManager; friend lba::BtreeLBAManager; friend class TransactionManager; friend std::ostream &operator<<(std::ostream&, const LBAMapping&);