]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/.../btree_lba_manager: convert remove_mapping to coroutine
authorSamuel Just <sjust@redhat.com>
Tue, 30 Sep 2025 18:56:42 +0000 (18:56 +0000)
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.h

index 95c12f904056c9db9d376d586eb835037cac2e80..6e5d4fdc34491de29e42e7003dc410946d48fdcf 100644 (file)
@@ -218,26 +218,18 @@ public:
   ref_ret remove_mapping(
     Transaction &t,
     laddr_t addr) final {
-    return update_refcount(t, addr, -1
-    ).si_then([this, &t](auto res) {
-      ceph_assert(res.refcount == 0);
-      if (res.addr.is_paddr()) {
-       return ref_iertr::make_ready_future<
-         ref_update_result_t>(ref_update_result_t{
-           std::move(res), std::nullopt});
-      }
-      return update_refcount(t, res.key, -1
-      ).si_then([indirect_result=std::move(res)](auto direct_result) mutable {
-       return indirect_result.mapping.refresh(
-       ).si_then([direct_result=std::move(direct_result),
-                  indirect_result=std::move(indirect_result)](auto) {
-         return ref_iertr::make_ready_future<
-           ref_update_result_t>(ref_update_result_t{
-             std::move(indirect_result),
-             std::move(direct_result)});
-       });
-      });
-    });
+    auto result = co_await update_refcount(t, addr, -1);
+    ceph_assert(result.refcount == 0);
+    if (result.addr.is_paddr()) {
+      co_return ref_update_result_t{std::move(result), std::nullopt};
+    }
+
+    auto direct_result = co_await update_refcount(t, result.key, -1);
+    result.mapping = co_await result.mapping.refresh();
+    co_return ref_update_result_t{
+      std::move(result),
+      std::move(direct_result)
+    };
   }
 
   ref_ret remove_indirect_mapping_only(