]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/.../transaction_manager: convert remove to coroutine
authorSamuel Just <sjust@redhat.com>
Fri, 19 Sep 2025 16:13:20 +0000 (09:13 -0700)
committerSamuel Just <sjust@redhat.com>
Mon, 5 Jan 2026 20:44:34 +0000 (12:44 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h

index ca1a45af9a77431ae68831c2d138406413c31414..a38125bd57f853c2a2f65f32bddc38d79c4c0f62 100644 (file)
@@ -202,24 +202,21 @@ TransactionManager::close() {
 
 TransactionManager::ref_ret TransactionManager::remove(
   Transaction &t,
-  LogicalChildNodeRef &ref)
+  LogicalChildNodeRef ref)
 {
   LOG_PREFIX(TransactionManager::remove);
   DEBUGT("{} ...", t, *ref);
-  return lba_manager->get_mapping(t, *ref
-  ).si_then([ref, this, &t](auto mapping) {
-    return lba_manager->remove_mapping(t, std::move(mapping));
-  }).si_then([this, FNAME, &t, ref](auto result) {
-    assert(!result.direct_result);
-    auto &primary_result = result.result;
-    if (primary_result.refcount == 0) {
-      cache->retire_extent(t, ref);
-    }
-    DEBUGT("removed {}~0x{:x} refcount={} -- {}",
-           t, primary_result.addr, primary_result.length,
-           primary_result.refcount, *ref);
-    return primary_result.refcount;
-  });
+  auto mapping = co_await lba_manager->get_mapping(t, *ref);
+  auto result = co_await lba_manager->remove_mapping(t, std::move(mapping));
+  assert(!result.direct_result);
+  auto &primary_result = result.result;
+  if (primary_result.refcount == 0) {
+    cache->retire_extent(t, ref);
+  }
+  DEBUGT("removed {}~0x{:x} refcount={} -- {}",
+        t, primary_result.addr, primary_result.length,
+        primary_result.refcount, *ref);
+  co_return primary_result.refcount;
 }
 
 TransactionManager::ref_ret TransactionManager::remove(
@@ -228,12 +225,9 @@ TransactionManager::ref_ret TransactionManager::remove(
 {
   LOG_PREFIX(TransactionManager::remove);
   DEBUGT("{} ...", t, offset);
-  return lba_manager->get_mapping(t, offset
-  ).si_then([&t, this](auto mapping) {
-    return _remove(t, std::move(mapping));
-  }).si_then([](auto result) {
-    return result.result.refcount;
-  });
+  auto mapping = co_await lba_manager->get_mapping(t, offset);
+  auto result = co_await _remove(t, std::move(mapping));
+  co_return result.result.refcount;
 }
 
 TransactionManager::ref_iertr::future<LBAMapping>
@@ -241,11 +235,9 @@ TransactionManager::remove(
   Transaction &t,
   LBAMapping mapping)
 {
-  return mapping.refresh().si_then([&t, this](auto mapping) {
-    return _remove(t, std::move(mapping));
-  }).si_then([](auto res) {
-    return std::move(res.result.mapping);
-  });
+  mapping = co_await mapping.refresh();
+  auto res = co_await _remove(t, std::move(mapping));
+  co_return std::move(res.result.mapping);
 }
 
 TransactionManager::ref_iertr::future<LBAMapping>
index d7b205c8f6aef0fc24d2e5f2f549175bebc036dc..816b760fe2845eb5151d10f08221c7e14b21a7a4 100644 (file)
@@ -361,7 +361,7 @@ public:
    */
   ref_ret remove(
     Transaction &t,
-    LogicalChildNodeRef &ref);
+    LogicalChildNodeRef ref);
 
   ref_ret remove(
     Transaction &t,