]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/lba_manager: clean up lba_manager's alloc_extent related interfaces
authorXuehan Xu <xxhdx1985126@gmail.com>
Fri, 9 Feb 2024 06:34:03 +0000 (14:34 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Mon, 22 Apr 2024 03:26:45 +0000 (11:26 +0800)
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/os/seastore/lba_manager.h
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h
src/crimson/os/seastore/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h
src/test/crimson/seastore/test_btree_lba_manager.cc

index 6082f110f0db8403a8a987996ce941b75653b2b7..8794bc9405d5b66576db448a78d7cd7bd4ee23db 100644 (file)
@@ -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(
index e9fb620836b69728e056d43b280bef52a92ecd33..c2980d4a41becaee014ac6234328055d38e11494 100644 (file)
@@ -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;
index d1e0428b9ca0b84a7e6f4ea4fa4ad8a409495b62..2641e940ee4d2c7b52435c516748682fca5ada51 100644 (file)
@@ -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);
index 2efb402a9cc0f749bce4af9b617c8986f8d9fe92..f2f180f2718109f5dfe27fa3f0770aab97d2b3fb 100644 (file)
@@ -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) {
index 9e153be4275668e9dd6d15b62796f37a66afa7bb..d7f143688ca5c9f0e7c326d692941f4ee0f03de9 100644 (file)
@@ -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) {
index 3a5bde454d57805e6980629616a7e621db3297e6..b7389456bf12e581abe7d2278c0c7d10bf0540eb 100644 (file)
@@ -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());