]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/.../transaction_manager: avoid using LBAManager::ref_update_result_t
authorSamuel Just <sjust@redhat.com>
Wed, 8 Oct 2025 00:30:46 +0000 (17:30 -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/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h

index 9cd7d1d5a55f5e19dd9424eedb3985477e475f8e..2bb4080830907a2d62935fc1152f1eb451a7c366 100644 (file)
@@ -246,9 +246,11 @@ TransactionManager::ref_ret TransactionManager::remove(
   LOG_PREFIX(TransactionManager::remove);
   DEBUGT("{} ...", t, offset);
   auto cursor = co_await lba_manager->get_cursor(t, offset);
+  auto refcount = cursor->get_refcount();
+  ceph_assert(refcount > 0);
   auto mapping = co_await resolve_cursor_to_mapping(t, std::move(cursor));
-  auto result = co_await _remove(t, std::move(mapping));
-  co_return result.result.refcount;
+  mapping = co_await _remove(t, std::move(mapping));
+  co_return refcount - 1;
 }
 
 TransactionManager::ref_iertr::future<LBAMapping>
@@ -257,8 +259,8 @@ TransactionManager::remove(
   LBAMapping mapping)
 {
   mapping = co_await mapping.refresh();
-  auto res = co_await _remove(t, std::move(mapping));
-  co_return std::move(res.result.mapping);
+  mapping = co_await _remove(t, std::move(mapping));
+  co_return mapping;
 }
 
 TransactionManager::ref_iertr::future<LBAMapping>
@@ -275,8 +277,7 @@ TransactionManager::_remove_indirect_mapping_only(
     ret_cursor);
 }
 
-TransactionManager::ref_iertr::future<
-  TransactionManager::_remove_mapping_result_t>
+TransactionManager::ref_iertr::future<LBAMapping>
 TransactionManager::_remove_indirect_mapping(
   Transaction &t,
   LBAMapping mapping)
@@ -307,7 +308,7 @@ TransactionManager::_remove_indirect_mapping(
           direct_result.length,
           direct_result.refcount,
           direct_result.key);
-    co_return result;
+    co_return result.result.mapping;
   } else {
     auto remove_direct = mapping.would_cascade_remove();
     if (remove_direct) {
@@ -336,12 +337,11 @@ TransactionManager::_remove_indirect_mapping(
           direct_result.length,
           direct_result.refcount,
           direct_result.key);
-    co_return result;
+    co_return result.result.mapping;
   }
 }
 
-TransactionManager::ref_iertr::future<
-  TransactionManager::_remove_mapping_result_t>
+TransactionManager::ref_iertr::future<LBAMapping>
 TransactionManager::_remove_direct_mapping(
   Transaction &t,
   LBAMapping mapping)
@@ -360,7 +360,7 @@ TransactionManager::_remove_direct_mapping(
     DEBUGT("removed {}~0x{:x} refcount={} -- offset={}",
           t, primary_result.addr, primary_result.length,
           primary_result.refcount, primary_result.key);
-    co_return result;
+    co_return result.result.mapping;
   } else {
     auto retired_placeholder = cache->retire_absent_extent_addr(
       t, mapping.get_key(), mapping.get_val(), mapping.get_length()
@@ -374,12 +374,11 @@ TransactionManager::_remove_direct_mapping(
     DEBUGT("removed {}~0x{:x} refcount={} -- offset={}",
           t, primary_result.addr, primary_result.length,
           primary_result.refcount, primary_result.key);
-    co_return result;
+    co_return result.result.mapping;
   }
 }
 
-TransactionManager::ref_iertr::future<
-  TransactionManager::_remove_mapping_result_t>
+TransactionManager::ref_iertr::future<LBAMapping>
 TransactionManager::_remove(
   Transaction &t,
   LBAMapping mapping)
@@ -401,8 +400,7 @@ TransactionManager::_remove(
              primary_result.length,
              primary_result.refcount,
              primary_result.key);
-      return ref_iertr::make_ready_future<
-        _remove_mapping_result_t>(std::move(result));
+      return result.result.mapping;
     });
   }
 }
index 05ab20fc396fe64446862d1652c0c2e6c8a1b218..f987d8b7e41c4941c42a8fc3ee09132a3bbf254e 100644 (file)
@@ -1365,15 +1365,14 @@ private:
        co_return std::move(mapping_vec);
   }
 
-  using _remove_mapping_result_t = LBAManager::ref_update_result_t;
-  ref_iertr::future<_remove_mapping_result_t> _remove(
+  ref_iertr::future<LBAMapping> _remove(
     Transaction &t,
     LBAMapping mapping);
-  ref_iertr::future<_remove_mapping_result_t>
+  ref_iertr::future<LBAMapping>
   _remove_indirect_mapping(
     Transaction &t,
     LBAMapping mapping);
-  ref_iertr::future<_remove_mapping_result_t>
+  ref_iertr::future<LBAMapping>
   _remove_direct_mapping(
     Transaction &t,
     LBAMapping mapping);