From: Samuel Just Date: Thu, 9 Oct 2025 23:16:14 +0000 (+0000) Subject: crimson/.../btree_lba_manager: convert reserve_region to coroutine X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=865f708538c789e30e784122c2d6b3dd84f797bf;p=ceph-ci.git crimson/.../btree_lba_manager: convert reserve_region to coroutine Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index abca34ae0e7..12cc8c9ba71 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -349,25 +349,19 @@ BtreeLBAManager::reserve_region( DEBUGT("{} {}~{}", t, pos, addr, len); assert(pos.is_viewable()); auto c = get_context(t); - return with_btree( - 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}; - return btree.insert(c, iter, addr, val - ).si_then([c](auto p) { - auto &[iter, inserted] = p; - ceph_assert(inserted); - auto &leaf_node = *iter.get_leaf_node(); - leaf_node.insert_child_ptr( - iter.get_leaf_pos(), - get_reserved_ptr(), - leaf_node.get_size() - 1 /*the size before the insert*/); - return LBAMapping::create_direct(iter.get_cursor(c)); - }); - }); + auto btree = co_await get_btree(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}; + auto p = co_await btree.insert(c, iter, addr, val); + ceph_assert(p.second); + iter = p.first; + auto &leaf_node = *iter.get_leaf_node(); + leaf_node.insert_child_ptr( + iter.get_leaf_pos(), + get_reserved_ptr(), + leaf_node.get_size() - 1 /*the size before the insert*/); + co_return LBAMapping::create_direct(iter.get_cursor(c)); } BtreeLBAManager::alloc_extents_ret diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.h b/src/crimson/os/seastore/lba/btree_lba_manager.h index 4819b24f444..e6e00dc3617 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba/btree_lba_manager.h @@ -101,16 +101,10 @@ public: { std::vector 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(