From d370ec8c943d1a7947a8d44c8d3c9e8445f7d25b Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Wed, 11 Jun 2025 15:09:25 +0800 Subject: [PATCH] crimson/os/seastore/lba_mapping: drop the deprecated "duplicate" method Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/btree/btree_types.h | 3 --- src/crimson/os/seastore/lba/btree_lba_manager.cc | 4 ++-- src/crimson/os/seastore/lba_mapping.h | 12 ------------ src/crimson/os/seastore/object_data_handler.cc | 3 +-- src/crimson/os/seastore/transaction_manager.h | 12 ++++++------ .../crimson/seastore/test_transaction_manager.cc | 14 +++++++------- 6 files changed, 16 insertions(+), 32 deletions(-) diff --git a/src/crimson/os/seastore/btree/btree_types.h b/src/crimson/os/seastore/btree/btree_types.h index 2a756ce8e79..e57548de88e 100644 --- a/src/crimson/os/seastore/btree/btree_types.h +++ b/src/crimson/os/seastore/btree/btree_types.h @@ -283,9 +283,6 @@ struct LBACursor : BtreeCursor { assert(!is_indirect()); return val->refcount; } - std::unique_ptr duplicate() const { - return std::make_unique(*this); - } using base_ertr = crimson::errorator< crimson::ct_error::input_output_error>; diff --git a/src/crimson/os/seastore/lba/btree_lba_manager.cc b/src/crimson/os/seastore/lba/btree_lba_manager.cc index 5e9d71db52c..051bc1a9275 100644 --- a/src/crimson/os/seastore/lba/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba/btree_lba_manager.cc @@ -494,7 +494,7 @@ BtreeLBAManager::clone_mapping( ).si_then([cursor=std::move(cursor)](auto mapping) mutable { return clone_mapping_ret_t{ LBAMapping(mapping.direct_cursor, std::move(cursor)), - mapping.duplicate()}; + mapping}; }); }); }); @@ -1371,7 +1371,7 @@ BtreeLBAManager::remap_mappings( return cursor->refresh( ).si_then([&ret, &mapping] { for (auto &m : ret) { - m.direct_cursor = mapping.direct_cursor->duplicate(); + m.direct_cursor = mapping.direct_cursor; } }); } diff --git a/src/crimson/os/seastore/lba_mapping.h b/src/crimson/os/seastore/lba_mapping.h index cab0d8034df..cefb288713f 100644 --- a/src/crimson/os/seastore/lba_mapping.h +++ b/src/crimson/os/seastore/lba_mapping.h @@ -155,18 +155,6 @@ public: get_child_ret_t get_logical_extent(Transaction &t) const; - LBAMapping duplicate() const { - assert(!is_null()); - auto dup_iter = [](const LBACursorRef &iter) -> LBACursorRef { - if (iter) { - return iter->duplicate(); - } else { - return nullptr; - } - }; - return LBAMapping(dup_iter(direct_cursor), dup_iter(indirect_cursor)); - } - using refresh_iertr = LBACursor::base_iertr; refresh_iertr::future refresh(); diff --git a/src/crimson/os/seastore/object_data_handler.cc b/src/crimson/os/seastore/object_data_handler.cc index 8b42c5da7c0..78ce2329bc7 100644 --- a/src/crimson/os/seastore/object_data_handler.cc +++ b/src/crimson/os/seastore/object_data_handler.cc @@ -1410,8 +1410,7 @@ ObjectDataHandler::clone_ret ObjectDataHandler::clone( d_object_data.get_reserved_data_base(), d_object_data.get_reserved_data_len()); return ctx.tm.remove(ctx.t, std::move(*mapping)); - }).si_then([mapping=mapping.duplicate(), - &d_object_data, ctx](auto pos) mutable { + }).si_then([mapping, &d_object_data, ctx](auto pos) mutable { auto base = d_object_data.get_reserved_data_base(); auto len = d_object_data.get_reserved_data_len(); return ctx.tm.clone_range( diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index d2dcaa20aad..cbc75bcced7 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -1168,7 +1168,7 @@ private: auto v = pin.get_logical_extent(t); if (v.has_child()) { return v.get_child_fut( - ).si_then([pin=pin.duplicate()](auto extent) { + ).si_then([pin](auto extent) { #ifndef NDEBUG auto lextent = extent->template cast(); auto pin_laddr = pin.get_intermediate_base(); @@ -1201,7 +1201,7 @@ private: return ext; }); } else { - return pin_to_extent_by_type(t, pin.duplicate(), v.get_child_pos(), type); + return pin_to_extent_by_type(t, pin, v.get_child_pos(), type); } } @@ -1279,14 +1279,14 @@ private: original_len](auto newpin) { pin = std::move(newpin); if (full_extent_integrity_check) { - return read_pin(t, pin.duplicate() + return read_pin(t, pin ).si_then([](auto maybe_indirect_extent) { assert(!maybe_indirect_extent.is_indirect()); assert(!maybe_indirect_extent.is_clone); return maybe_indirect_extent.extent; }); } else { - auto ret = get_extent_if_linked(t, pin.duplicate()); + auto ret = get_extent_if_linked(t, pin); if (ret.index() == 1) { return std::get<1>(ret ).si_then([](auto extent) { @@ -1426,7 +1426,7 @@ private: maybe_init(extent); extent.set_seen_by_users(); } - ).si_then([FNAME, &t, pin=pin.duplicate(), this](auto ref) mutable -> ret { + ).si_then([FNAME, &t, pin=pin, this](auto ref) mutable -> ret { if (ref->is_fully_loaded()) { auto crc = ref->calc_crc32c(); SUBTRACET( @@ -1498,7 +1498,7 @@ private: // No change to extent::seen_by_user because this path is only // for background cleaning. } - ).si_then([FNAME, &t, pin=pin.duplicate(), this](auto ref) { + ).si_then([FNAME, &t, pin=pin, this](auto ref) { auto crc = ref->calc_crc32c(); SUBTRACET( seastore_tm, diff --git a/src/test/crimson/seastore/test_transaction_manager.cc b/src/test/crimson/seastore/test_transaction_manager.cc index 7e6f55c54ff..13597e5cde0 100644 --- a/src/test/crimson/seastore/test_transaction_manager.cc +++ b/src/test/crimson/seastore/test_transaction_manager.cc @@ -639,7 +639,7 @@ struct transaction_manager_test_t : auto addr = pin.get_key(); auto im_addr = pin.get_intermediate_base(); auto ext = with_trans_intr(*(t.t), [&](auto& trans) { - return tm->read_pin(trans, pin.duplicate()); + return tm->read_pin(trans, pin); }).safe_then([](auto ret) { return ertr::make_ready_future(ret.extent); }).handle_error( @@ -1205,7 +1205,7 @@ struct transaction_manager_test_t : EXPECT_EQ(pin->get_length(), new_len); EXPECT_EQ(pin->get_key(), o_laddr + new_offset); - auto extent = try_read_pin(t, pin->duplicate()); + auto extent = try_read_pin(t, *pin); if (extent) { if (!pin->is_indirect()) { test_mappings.alloced(pin->get_key(), *extent, t.mapping_delta); @@ -1368,7 +1368,7 @@ struct transaction_manager_test_t : EXPECT_EQ(lpin->get_key(), o_laddr); EXPECT_EQ(lpin->get_val(), o_paddr); EXPECT_EQ(lpin->get_length(), new_offset); - auto lext = try_read_pin(t, lpin->duplicate()); + auto lext = try_read_pin(t, *lpin); if (lext) { test_mappings.alloced(lpin->get_key(), *lext, t.mapping_delta); EXPECT_TRUE(lext->is_exist_clean()); @@ -1385,7 +1385,7 @@ struct transaction_manager_test_t : EXPECT_EQ(rpin->get_val(), o_paddr.add_offset(new_offset) .add_offset(new_len)); EXPECT_EQ(rpin->get_length(), o_len - new_offset - new_len); - auto rext = try_read_pin(t, rpin->duplicate()); + auto rext = try_read_pin(t, *rpin); if (rext) { test_mappings.alloced(rpin->get_key(), *rext, t.mapping_delta); EXPECT_TRUE(rext->is_exist_clean()); @@ -1714,7 +1714,7 @@ struct transaction_manager_test_t : } auto empty_transaction = true; - auto last_rpin = pin0->duplicate(); + auto last_rpin = *pin0; ASSERT_TRUE(!split_points.empty()); while(!split_points.empty()) { // new overwrite area: start_off ~ end_off @@ -1738,7 +1738,7 @@ struct transaction_manager_test_t : bufferlist bl; bl.append(ceph::bufferptr(ceph::buffer::create(new_len, 0))); auto [lpin, ext, rpin] = overwrite_pin( - t, last_rpin.duplicate(), new_off, new_len, bl); + t, std::move(last_rpin), new_off, new_len, bl); if (!ext) { conflicted++; return; @@ -2213,7 +2213,7 @@ TEST_P(tm_single_device_test_t, invalid_lba_mapping_detect) assert(pin.is_viewable()); std::ignore = alloc_extent(t, get_laddr_hint((LEAF_NODE_CAPACITY + 1) * 4096), 4096, 'a'); assert(!pin.is_viewable()); - pin = refresh_lba_mapping(t, pin.duplicate()); + pin = refresh_lba_mapping(t, pin); auto extent2 = with_trans_intr(*(t.t), [&pin](auto& trans) { auto v = pin.get_logical_extent(trans); assert(v.has_child()); -- 2.39.5