]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.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>
Tue, 10 Mar 2026 17:11:33 +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/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h

index 49fadd0b02ff862a5f4a67ab26f8c70b931a4c8f..e0d8fb21245b1983c1596f928145f207b73cca81 100644 (file)
@@ -1016,30 +1016,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 1712fbd984a376134669ea90fd2d0d6705e9292c..1835d0b186b98e1632903e99f80a412878201b0e 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;
-
   scan_mapped_space_ret scan_mapped_space(
     Transaction &t,
     scan_mapped_space_func_t &&f) final;
index 604ca32fdde50e0e172adf72f56fbce7e95dfd75..e949f8c3130b3daf5ff2e7760e6795ca602a3a20 100644 (file)
@@ -350,18 +350,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;
-
   /*
    * scan all extents in the tree, including logical extents
    * and lba extents, visit them with scan_mapped_space_func_t.
index da5c02b1f519f894481d254e53da09d7920bc17e..9cd7d1d5a55f5e19dd9424eedb3985477e475f8e 100644 (file)
@@ -282,8 +282,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 828fb8ab4858ace386972e4b8b37ac4a182f4214..05ab20fc396fe64446862d1652c0c2e6c8a1b218 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;
@@ -1164,6 +1163,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,
@@ -1256,7 +1270,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();