]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/.../btree_lba_manager: convert reserve_region to coroutine
authorSamuel Just <sjust@redhat.com>
Thu, 9 Oct 2025 23:16:14 +0000 (23:16 +0000)
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

index e0d8fb21245b1983c1596f928145f207b73cca81..966b899579d197b2a049042116380734cd6be0d0 100644 (file)
@@ -349,26 +349,22 @@ BtreeLBAManager::reserve_region(
   DEBUGT("{} {}~{}", t, pos, addr, len);
   assert(pos.is_viewable());
   auto c = get_context(t);
-  return with_btree<LBABtree>(
-    cache,
-    c,
-    [pos=std::move(pos), c, addr, len](auto &btree) mutable {
-    auto &cursor = pos.get_effective_cursor();
-    auto iter = btree.make_partial_iter(c, cursor);
-    lba_map_val_t val{
-      len,
-      P_ADDR_ZERO,
-      EXTENT_DEFAULT_REF_COUNT,
-      0,
-      extent_types_t::NONE};
-    return btree.insert(
-      c, iter, addr, val, get_reserved_ptr<LBALeafNode, laddr_t>()
-    ).si_then([c](auto p) {
-      auto &[iter, inserted] = p;
-      ceph_assert(inserted);
-      return LBAMapping::create_direct(iter.get_cursor(c));
-    });
-  });
+  auto btree = co_await get_btree<LBABtree>(cache, c);
+  auto &cursor = pos.get_effective_cursor();
+  auto iter = btree.make_partial_iter(c, cursor);
+  lba_map_val_t val{
+    len,
+    P_ADDR_ZERO,
+    EXTENT_DEFAULT_REF_COUNT,
+    0,
+    extent_types_t::NONE};
+  auto p = co_await btree.insert(
+    c, iter, addr, val,
+    get_reserved_ptr<LBALeafNode, laddr_t>()
+  );
+  ceph_assert(p.second);
+  iter = p.first;
+  co_return LBAMapping::create_direct(iter.get_cursor(c));
 }
 
 BtreeLBAManager::alloc_extents_ret
index dd9e97d46092f3c1aacdce4c93bb78895eabaa03..9152852d2fae55c2d44b932000482f1b2d96f6a1 100644 (file)
@@ -101,16 +101,10 @@ public:
   {
     std::vector<alloc_mapping_info_t> alloc_infos = {
       alloc_mapping_info_t::create_zero(len)};
-    return seastar::do_with(
-      std::move(alloc_infos),
-      [&t, hint, this](auto &alloc_infos) {
-      return alloc_contiguous_mappings(
-       t, hint, alloc_infos, alloc_policy_t::linear_search
-      ).si_then([](auto cursors) {
-       assert(cursors.size() == 1);
-       return LBAMapping::create_direct(std::move(cursors.front()));
-      });
-    });
+    auto cursors = co_await alloc_contiguous_mappings(
+      t, hint, alloc_infos, alloc_policy_t::linear_search);
+    assert(cursors.size() == 1);
+    co_return LBAMapping::create_direct(std::move(cursors.front()));
   }
 
   clone_mapping_ret clone_mapping(