]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore/lba: add more rigorous assertions
authorXuehan Xu <xuxuehan@qianxin.com>
Wed, 17 Jun 2026 11:21:06 +0000 (19:21 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Fri, 10 Jul 2026 14:24:37 +0000 (22:24 +0800)
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/os/seastore/lba/lba_btree_node.h
src/crimson/os/seastore/linked_tree_node.h

index c40b1dee12bb6afb56c9cfe10789991ae5929ad2..93bdd82b4c6b7a5eafa2fe5f7135231914ba398c 100644 (file)
@@ -357,7 +357,11 @@ struct LBALeafNode
           it++;
           continue;
         } else {
-          assert(child->_is_exist_clean() || child->_is_exist_mutation_pending());
+          assert(child->_is_exist_clean() ||
+                 child->_is_exist_mutation_pending() ||
+                 // a pending child might have been invalidated and
+                 // its corresponding mapping has not been removed
+                 !child->_is_valid());
         }
       }
       SUBTRACET(seastore_lba, "examing v2: {}~{}, v1: {}~{}",
index f6dc6f828db844fcd0f8830e57cb86854c028876..c9cf58902babae462edf1a7e6a56fd0ea62ab1b5 100644 (file)
@@ -215,9 +215,9 @@ public:
   virtual bool _is_mutable() const = 0;
   virtual bool _is_exist_clean() const = 0;
   virtual bool _is_exist_mutation_pending() const = 0;
+  virtual bool _is_valid() const = 0;
 protected:
   parent_tracker_ref<ParentT> parent_tracker;
-  virtual bool _is_valid() const = 0;
   virtual bool _is_stable() const = 0;
   template <typename, typename, typename>
   friend class ParentNode;