]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.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>
Wed, 28 Jan 2026 02:39:37 +0000 (18:39 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h

index d3aa77413bce13d465f1b16dcbdbed764a5deab0..a17460c818de2582139915d0cbf9079555a04439 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 0f2102c8e14df8637f4595cdb9edd87ab063a7be..076cc4d13d263db2c6bb71f1b7f00e1417534af2 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);