From 0c92f535205c7fbda1d8723db6818ca3ae647098 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 9 Oct 2025 23:16:14 +0000 Subject: [PATCH] crimson/.../btree_lba_manager: convert reserve_region to coroutine Signed-off-by: Samuel Just --- .../os/seastore/lba/btree_lba_manager.cc | 32 ++++++++----------- .../os/seastore/lba/btree_lba_manager.h | 14 +++----- 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index 57355fccc89..f2a9ca72acb 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -348,25 +348,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( -- 2.47.3