From: Xuehan Xu Date: Fri, 9 Feb 2024 06:34:03 +0000 (+0800) Subject: crimson/os/seastore/lba_manager: clean up lba_manager's alloc_extent related interfaces X-Git-Tag: v20.0.0~2069^2~6 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=03c8ae1ad04309b8d99b451f5e75e3c0b9233b32;p=ceph.git crimson/os/seastore/lba_manager: clean up lba_manager's alloc_extent related interfaces Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index 6082f110f0db8..8794bc9405d5b 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -85,9 +85,6 @@ public: virtual alloc_extent_ret alloc_extent( Transaction &t, laddr_t hint, - extent_len_t len, - paddr_t addr, - uint32_t checksum, LogicalCachedExtent &nextent, extent_ref_count_t refcount = EXTENT_DEFAULT_REF_COUNT) = 0; @@ -96,7 +93,6 @@ public: laddr_t hint, extent_len_t len, laddr_t intermediate_key, - paddr_t actual_addr, laddr_t intermediate_base) = 0; virtual alloc_extent_ret reserve_region( diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc index e9fb620836b69..c2980d4a41bec 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc @@ -306,7 +306,6 @@ BtreeLBAManager::_alloc_extent( laddr_t hint, extent_len_t len, pladdr_t addr, - paddr_t actual_addr, uint32_t checksum, LogicalCachedExtent* nextent, extent_ref_count_t refcount) @@ -323,7 +322,6 @@ BtreeLBAManager::_alloc_extent( LOG_PREFIX(BtreeLBAManager::_alloc_extent); TRACET("{}~{}, hint={}, refcount={}", t, addr, len, hint, refcount); - ceph_assert(actual_addr != P_ADDR_NULL ? addr.is_laddr() : addr.is_paddr()); auto c = get_context(t); ++stats.num_alloc_extents; auto lookup_attempts = stats.num_alloc_extents_iter_nexts; diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h index d1e0428b9ca0b..2641e940ee4d2 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h @@ -224,7 +224,6 @@ public: hint, len, P_ADDR_ZERO, - P_ADDR_NULL, 0, nullptr, EXTENT_DEFAULT_REF_COUNT); @@ -235,7 +234,6 @@ public: laddr_t hint, extent_len_t len, laddr_t intermediate_key, - paddr_t actual_addr, laddr_t intermediate_base) { assert(intermediate_key != L_ADDR_NULL); @@ -245,7 +243,6 @@ public: hint, len, intermediate_key, - actual_addr, 0, // crc will only be used and checked with LBA direct mappings // also see pin_to_extent(_by_type) nullptr, @@ -272,19 +269,17 @@ public: alloc_extent_ret alloc_extent( Transaction &t, laddr_t hint, - extent_len_t len, - paddr_t addr, - uint32_t checksum, LogicalCachedExtent &ext, extent_ref_count_t refcount = EXTENT_DEFAULT_REF_COUNT) final { + // The real checksum will be updated upon transaction commit + assert(ext.get_last_committed_crc() == 0); return _alloc_extent( t, hint, - len, - addr, - P_ADDR_NULL, - checksum, + ext.get_length(), + ext.get_paddr(), + ext.get_last_committed_crc(), &ext, refcount); } @@ -419,7 +414,6 @@ private: laddr_t hint, extent_len_t len, pladdr_t addr, - paddr_t actual_addr, uint32_t checksum, LogicalCachedExtent*, extent_ref_count_t refcount); diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 2efb402a9cc0f..f2f180f271810 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -589,9 +589,6 @@ TransactionManager::rewrite_logical_extent( fut = lba_manager->alloc_extent( t, lextent->get_laddr() + off, - nlextent->get_length(), - nlextent->get_paddr(), - nlextent->get_last_committed_crc(), *nlextent, refcount ).si_then([lextent, nlextent, off](auto mapping) { diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index 9e153be427566..d7f143688ca5c 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -309,9 +309,6 @@ public: return lba_manager->alloc_extent( t, laddr_hint, - len, - ext->get_paddr(), - 0, // checksum will be updated upon transaction commit *ext ).si_then([ext=std::move(ext), laddr_hint, &t](auto &&) mutable { LOG_PREFIX(TransactionManager::alloc_non_data_extent); @@ -359,9 +356,6 @@ public: return lba_manager->alloc_extent( t, laddr_hint, - ext->get_length(), - ext->get_paddr(), - 0, // checksum will be updated upon trans commit *ext ).si_then([&ext, &laddr_hint, &t](auto &&) mutable { LOG_PREFIX(TransactionManager::alloc_extents); @@ -464,6 +458,9 @@ public: ceph_assert( (intermediate_base == L_ADDR_NULL) == (intermediate_key == L_ADDR_NULL)); + ceph_assert(full_extent_integrity_check + ? (ext && ext->is_fully_loaded()) + : true); if (ext) { ceph_assert(!ext->is_mutable()); ceph_assert(ext->get_length() >= original_len); @@ -593,7 +590,6 @@ public: hint, mapping.get_length(), intermediate_key, - mapping.get_val(), intermediate_base ); } @@ -1003,18 +999,13 @@ private: remap_length, original_laddr, std::move(original_bptr)); - fut = lba_manager->alloc_extent( - t, remap_laddr, remap_length, remap_paddr, - //TODO: oringal_bptr must be present if crc is enabled - (original_bptr.has_value() ? ext->calc_crc32c() : 0), - *ext); + fut = lba_manager->alloc_extent(t, remap_laddr, *ext); } else { fut = lba_manager->clone_mapping( t, remap_laddr, remap_length, intermediate_key, - remap_paddr, intermediate_base); } return fut.si_then([remap_laddr, remap_length, remap_paddr](auto &&ref) { diff --git a/src/test/crimson/seastore/test_btree_lba_manager.cc b/src/test/crimson/seastore/test_btree_lba_manager.cc index 3a5bde454d578..b7389456bf12e 100644 --- a/src/test/crimson/seastore/test_btree_lba_manager.cc +++ b/src/test/crimson/seastore/test_btree_lba_manager.cc @@ -521,7 +521,7 @@ struct btree_lba_manager_test : btree_test_base { assert(extents.size() == 1); auto extent = extents.front(); return lba_manager->alloc_extent( - t, hint, len, extent->get_paddr(), 0, *extent); + t, hint, *extent); }).unsafe_get0(); logger().debug("alloc'd: {}", *ret); EXPECT_EQ(len, ret->get_length());