From 4dcc98eb4aed71465a462ec402c502bb5829fbe2 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Mon, 8 Dec 2025 15:57:41 +0800 Subject: [PATCH] fixup! crimson/os/seastore/btree_types: BtreeCursors don't hold local copies of lba/backref values --- .../os/seastore/object_data_handler.cc | 19 ++++++++++++------- src/crimson/tools/store_nbd/tm_driver.cc | 5 +---- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/crimson/os/seastore/object_data_handler.cc b/src/crimson/os/seastore/object_data_handler.cc index 871780288ba..4f7cd2e2927 100644 --- a/src/crimson/os/seastore/object_data_handler.cc +++ b/src/crimson/os/seastore/object_data_handler.cc @@ -972,14 +972,19 @@ ObjectDataHandler::punch_multi_mapping_hole( LBAMapping left_mapping, op_type_t op_type) { - return punch_left_mapping( - ctx, overwrite_range, data, std::move(left_mapping), op_type - ).si_then([this, ctx, &overwrite_range](auto mapping) { - return punch_inner_mappings(ctx, overwrite_range, std::move(mapping)); - }).si_then([this, ctx, &overwrite_range, &data, op_type](auto mapping) { - return punch_right_mapping( + auto mapping = co_await punch_left_mapping( + ctx, overwrite_range, data, std::move(left_mapping), op_type); + if (overwrite_range.clonerange_info.has_value()) { + co_await overwrite_range.clonerange_info->refresh(); + } + mapping = co_await punch_inner_mappings( + ctx, overwrite_range, std::move(mapping)); + if (overwrite_range.clonerange_info.has_value()) { + co_await overwrite_range.clonerange_info->refresh(); + } + mapping = co_await punch_right_mapping( ctx, overwrite_range, data, std::move(mapping), op_type); - }); + co_return mapping; } ObjectDataHandler::write_ret diff --git a/src/crimson/tools/store_nbd/tm_driver.cc b/src/crimson/tools/store_nbd/tm_driver.cc index d70edda030a..6a2f8059c6a 100644 --- a/src/crimson/tools/store_nbd/tm_driver.cc +++ b/src/crimson/tools/store_nbd/tm_driver.cc @@ -76,10 +76,7 @@ TMDriver::read_extents_ret TMDriver::read_extents( pins.begin(), pins.end(), [this, &t, &ret](auto &&pin) { - logger().debug( - "read_extents: get_extent {}~{}", - pin.get_val(), - pin.get_length()); + logger().debug("read_extents: get_extent {}", pin); return tm->read_pin( t, std::move(pin) -- 2.47.3