From ab312f3e2b5db784afc4427c0511afbebb8838f8 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Fri, 10 May 2024 16:34:02 +0800 Subject: [PATCH] crimson/os/seastore/object_data_handler: minor bug fix Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/object_data_handler.cc | 7 ++++--- src/test/crimson/seastore/test_transaction_manager.cc | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/crimson/os/seastore/object_data_handler.cc b/src/crimson/os/seastore/object_data_handler.cc index 918993092bb..9de32b89de1 100644 --- a/src/crimson/os/seastore/object_data_handler.cc +++ b/src/crimson/os/seastore/object_data_handler.cc @@ -464,6 +464,7 @@ ObjectDataHandler::write_ret do_remappings( return ObjectDataHandler::write_iertr::now(); }); } else if (region.is_remap2()) { + auto pin_key = region.pin->get_key(); return ctx.tm.remap_pin( ctx.t, std::move(region.pin), @@ -471,10 +472,10 @@ ObjectDataHandler::write_ret do_remappings( region.create_left_remap_entry(), region.create_right_remap_entry() } - ).si_then([®ion](auto pins) { + ).si_then([®ion, pin_key](auto pins) { ceph_assert(pins.size() == 2); - ceph_assert(region.pin->get_key() == pins[0]->get_key()); - ceph_assert(region.pin->get_key() + pins[0]->get_length() + + ceph_assert(pin_key == pins[0]->get_key()); + ceph_assert(pin_key + pins[0]->get_length() + region.new_len == pins[1]->get_key()); return ObjectDataHandler::write_iertr::now(); }); diff --git a/src/test/crimson/seastore/test_transaction_manager.cc b/src/test/crimson/seastore/test_transaction_manager.cc index 901645317a7..36e08001971 100644 --- a/src/test/crimson/seastore/test_transaction_manager.cc +++ b/src/test/crimson/seastore/test_transaction_manager.cc @@ -1111,7 +1111,8 @@ struct transaction_manager_test_t : return nullptr; } auto o_laddr = opin->get_key(); - auto data_laddr = opin->is_indirect() + bool indirect_opin = opin->is_indirect(); + auto data_laddr = indirect_opin ? opin->get_intermediate_base() : o_laddr; auto pin = with_trans_intr(*(t.t), [&](auto& trans) { @@ -1128,7 +1129,7 @@ struct transaction_manager_test_t : if (t.t->is_conflicted()) { return nullptr; } - if (opin->is_indirect()) { + if (indirect_opin) { test_mappings.inc_ref(data_laddr, t.mapping_delta); } else { test_mappings.dec_ref(data_laddr, t.mapping_delta); -- 2.39.5