]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.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, 10 Mar 2026 17:11:32 +0000 (10:11 -0700)
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 357038eb76421ea655f2d19ae98bcd5d8786fcfd..49fadd0b02ff862a5f4a67ab26f8c70b931a4c8f 100644 (file)
@@ -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());
index abaf7719929e48ffa51c200bde81d0bf4078c52c..297d3f1fbc7c3914e5a067d440d0c5029b6e9615 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 5dca57dbcfe0cdddc404ddc8b46a90c0a4a89184..7af7688f883fbf38fcbd2498966b8cbbc69eeda1 100644 (file)
@@ -311,10 +311,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 d4dcf0e479dda83ce783b4469979bf0b36e85b9c..4e6ade4aea9cdf9a8ccb48a3143871d09c50059f 100644 (file)
@@ -193,6 +193,7 @@ public:
   base_iertr::future<LBAMapping> next();
 
 private:
+  friend class LBAManager;
   friend lba::BtreeLBAManager;
   friend class TransactionManager;
   friend class ::transaction_manager_test_t;