]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson: replace LBAManager::complete_indirect_lba_mapping with TransactionManager...
authorSamuel Just <sjust@redhat.com>
Tue, 7 Oct 2025 21:20:17 +0000 (14:20 -0700)
committerSamuel Just <sjust@redhat.com>
Mon, 5 Jan 2026 21:14:58 +0000 (13:14 -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/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h

index 4a7ccc2515be92159926adb2476ea15b6c486172..abca34ae0e72787c399c268327d648eb55bf90aa 100644 (file)
@@ -1012,30 +1012,6 @@ BtreeLBAManager::get_physical_extent_if_live(
     });
 }
 
-BtreeLBAManager::complete_lba_mapping_ret
-BtreeLBAManager::complete_indirect_lba_mapping(
-  Transaction &t,
-  LBAMapping mapping)
-{
-  assert(mapping.is_viewable());
-  assert(mapping.is_indirect());
-  if (mapping.is_complete_indirect()) {
-    return complete_lba_mapping_iertr::make_ready_future<
-      LBAMapping>(std::move(mapping));
-  }
-  auto c = get_context(t);
-  return with_btree_state<LBABtree, LBAMapping>(
-    cache,
-    c,
-    std::move(mapping),
-    [this, c](auto &btree, auto &mapping) {
-    return resolve_indirect_cursor(c, btree, *mapping.indirect_cursor
-    ).si_then([&mapping](auto cursor) {
-      mapping.direct_cursor = std::move(cursor);
-    });
-  });
-}
-
 void BtreeLBAManager::register_metrics()
 {
   LOG_PREFIX(BtreeLBAManager::register_metrics);
index bd386d47eaea3b2b58f52230a5ef969a7e69e472..457fa7b62182be12949c8cbeb7b433386140f281 100644 (file)
@@ -333,10 +333,6 @@ public:
     laddr_t laddr,
     extent_len_t len) final;
 
-  complete_lba_mapping_ret complete_indirect_lba_mapping(
-    Transaction &t,
-    LBAMapping mapping) final;
-
 private:
   Cache &cache;
 
index c1885af63a2f9ea5e08978db751400da1f06e008..19545016a308213954ca95231ce210d4fe95dfa3 100644 (file)
@@ -347,18 +347,6 @@ public:
     laddr_t laddr,
     extent_len_t len) = 0;
 
-  using complete_lba_mapping_iertr = get_mappings_iertr;
-  using complete_lba_mapping_ret =
-    complete_lba_mapping_iertr::future<LBAMapping>;
-  /*
-   * Completes an incomplete indirect mappings
-   *
-   * No effect if the indirect mapping is already complete
-   */
-  virtual complete_lba_mapping_ret complete_indirect_lba_mapping(
-    Transaction &t,
-    LBAMapping mapping) = 0;
-
   virtual ~LBAManager() {}
 };
 using LBAManagerRef = std::unique_ptr<LBAManager>;
index bd1e627eca216191818ea79283b375299cbc2431..ab0e08c99b3d62afdbf0bdee65b38ea011930223 100644 (file)
@@ -267,8 +267,7 @@ TransactionManager::_remove_indirect_mapping(
   LBAMapping mapping)
 {
   LOG_PREFIX(TransactionManager::_remove_indirect_mapping);
-  mapping = co_await lba_manager->complete_indirect_lba_mapping(t, std::move(mapping)
-  );
+  mapping = co_await complete_mapping(t, std::move(mapping));
   auto ret = get_extent_if_linked(t, *(mapping.direct_cursor));
   if (ret.has_child()) {
     auto extent = co_await ret.template get_child_fut_as<LogicalChildNode>();
index a19d581ba6d6bd6ba552e934b3b5f8bdbb34dcc9..9ad558cd398e5f19145503b7388753a1efdea362 100644 (file)
@@ -285,8 +285,7 @@ public:
     co_await pin.co_refresh();
 
     if (pin.is_indirect()) {
-      pin = co_await lba_manager->complete_indirect_lba_mapping(
-       t, std::move(pin));
+      pin = co_await complete_mapping(t, std::move(pin));
     }
 
     extent_len_t direct_partial_off = partial_off;
@@ -1160,6 +1159,21 @@ private:
     Transaction &t,
     LBACursorRef cursor);
 
+  using complete_mapping_iertr = base_iertr;
+  using complete_mapping_ret = complete_mapping_iertr::future<LBAMapping>;
+  complete_mapping_ret complete_mapping(
+    Transaction &t,
+    LBAMapping mapping) {
+    if (mapping.is_complete()) {
+      co_return co_await mapping.refresh();
+    } else {
+      ceph_assert(mapping.indirect_cursor);
+      co_return co_await resolve_cursor_to_mapping(
+       t,
+       std::move(mapping.indirect_cursor));
+    }
+  }
+
   using LBALeafNode = lba::LBALeafNode;
   get_child_ret_t<LBALeafNode, LogicalChildNode> get_extent_if_linked(
     Transaction &t,
@@ -1252,7 +1266,7 @@ private:
       SUBDEBUGT(seastore_tm, "{} into {} remaps ...",
         t, pin, remaps.size());
       co_await pin.co_refresh();
-      pin = co_await lba_manager->complete_indirect_lba_mapping(t, pin);
+      pin = co_await complete_mapping(t, std::move(pin));
     } else {
       laddr_t original_laddr = pin.get_key();
       extent_len_t original_len = pin.get_length();