]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/.../lba_manager: switch update_mapping to take a cursor, add adapter
authorSamuel Just <sjust@redhat.com>
Tue, 30 Sep 2025 18:53:22 +0000 (18:53 +0000)
committerSamuel Just <sjust@redhat.com>
Tue, 2 Dec 2025 23:12:57 +0000 (15:12 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/lba/btree_lba_manager.cc
src/crimson/os/seastore/lba/btree_lba_manager.h
src/crimson/os/seastore/lba_manager.h
src/crimson/os/seastore/lba_mapping.h

index 596ce3caf0b4bbc35b12b7f644497c618d7cb292..0a877903438202029c3df91165d035490b14b5f1 100644 (file)
@@ -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());
index b27ea555f49843d78d4b14c4ece4214e13c6f0f7..44e2b74f9a505cb97bb6602d3fc6ba0330ba5e59 100644 (file)
@@ -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;
index 53773119d82445184af5269d4963018b3ec58953..2f03a59acde9dee486c01bddc0cb0d27823336e0 100644 (file)
@@ -308,10 +308,24 @@ public:
   using update_mapping_ret = base_iertr::future<extent_ref_count_t>;
   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
index 13acb4b92174c32d731cdfc1497f35d16f9f3f3d..635c912a82f7bc64fb65d90da7876cb3f8cc2725 100644 (file)
@@ -191,6 +191,7 @@ public:
   base_iertr::future<LBAMapping> next();
 
 private:
+  friend class LBAManager;
   friend lba::BtreeLBAManager;
   friend class TransactionManager;
   friend std::ostream &operator<<(std::ostream&, const LBAMapping&);