From f5ef8def6eccf594ebb29d53134d4565e12458bf Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 30 Sep 2025 21:02:30 +0000 Subject: [PATCH] crimson/.../lba_manager: replace unused incref_extent with update_mapping_refcount Signed-off-by: Samuel Just --- .../os/seastore/lba/btree_lba_manager.h | 33 +++++++------------ src/crimson/os/seastore/lba_manager.h | 17 ++++++---- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.h b/src/crimson/os/seastore/lba/btree_lba_manager.h index 8684f96edc23..a56128ac0beb 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba/btree_lba_manager.h @@ -286,28 +286,19 @@ public: }); } - ref_ret incref_extent( + base_iertr::future update_mapping_refcount( Transaction &t, - laddr_t addr) final { - return update_refcount(t, addr, 1 - ).si_then([](auto res) { - return ref_update_result_t(std::move(res), std::nullopt); - }); - } - - ref_ret incref_extent( - Transaction &t, - LBAMapping mapping) final { - assert(mapping.is_viewable()); - return seastar::do_with( - std::move(mapping), - [&t, this](auto &mapping) { - auto &cursor = mapping.get_effective_cursor(); - return update_refcount(t, &cursor, 1 - ).si_then([](auto res) { - return ref_update_result_t(std::move(res), std::nullopt); - }); - }); + LBACursorRef cursor, + int delta) final { + auto result = co_await update_refcount(t, cursor.get(), delta + ).handle_error_interruptible( + base_iertr::pass_further{}, + /* ENOENT in particular should be impossible */ + crimson::ct_error::assert_all{ + "Invalid enoent in BtreeLBAManager::incref_extent" + } + ); + co_return result.mapping.direct_cursor; } remap_ret remap_mappings( diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index 7af7688f883f..48c62a114d5c 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -222,16 +222,19 @@ public: LBAMapping mapping) = 0; /** - * Increments ref count on extent - * - * @return returns resulting refcount + * Update ref count on mapping */ - virtual ref_ret incref_extent( + virtual base_iertr::future update_mapping_refcount( Transaction &t, - laddr_t addr) = 0; - virtual ref_ret incref_extent( + LBACursorRef cursor, + int delta) = 0; + ref_iertr::future<> update_mapping_refcount( Transaction &t, - LBAMapping mapping) = 0; + laddr_t addr, + int delta) { + auto cursor = co_await get_cursor(t, addr); + co_await update_mapping_refcount(t, cursor, delta); + } struct remap_entry_t { extent_len_t offset; -- 2.47.3