]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore: ignore entries with relative paddrs when wip-seastore-background-trans-cc-opt3
authorXuehan Xu <xuxuehan@qianxin.com>
Wed, 11 Feb 2026 06:50:27 +0000 (14:50 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Wed, 18 Feb 2026 11:45:58 +0000 (19:45 +0800)
merging lba/backref nodes for TRIM/CLEANER transactions

Fixes: https://tracker.ceph.com/issues/74798
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/os/seastore/btree/fixed_kv_node.h
src/crimson/os/seastore/lba/lba_btree_node.h

index fdd67e496561343faf8b93b6a263ebc6f0159273..6c0346fed41d1ae24fbfe23c5c947d2a10566ea4 100644 (file)
@@ -525,9 +525,8 @@ struct FixedKVInternalNode
       auto &pending_version = static_cast<this_type_t&>(*copy_dest);
       auto it = pending_version.begin();
       while (it != pending_version.end() && iter != this->end()) {
-        if (auto child = pending_version.children[it->get_offset()];
-            (is_valid_child_ptr(child) &&
-             (pending_version.is_pending() || child->_is_pending_io()))) {
+        if (it->get_val().is_relative()) {
+          // skip the ones that the pending version is also modifying
           it++;
           continue;
         }
index 7944b8f6cec66ebee91c9db2b16effa38b48b6f6..8140d2fc9419ecff91068eea7a9652e8e4ba8ef4 100644 (file)
@@ -300,9 +300,9 @@ struct LBALeafNode
           iter++;
           continue;
         }
-        if (auto child = pending_version.children[it->get_offset()];
-            is_valid_child_ptr(child) &&
-            (pending_version.is_pending() || child->_is_pending_io())) {
+        if (it->get_val().pladdr.is_paddr() &&
+            it->get_val().pladdr.get_paddr().is_relative()) {
+          // skip the ones that the pending version is also modifying
           it++;
           continue;
         }
@@ -330,7 +330,7 @@ struct LBALeafNode
 #ifndef NDEBUG
       for (auto &copy_dest : copy_dests.dests_by_key) {
         auto &pending_version = static_cast<LBALeafNode&>(*copy_dest);
-        ceph_assert(pending_version.is_pending());
+        assert(pending_version.is_pending());
       }
 #endif
       this->merge_content_to(t, copy_dests.dests_by_key);