From aec2c13b2bc0acf8ce177df0ef4deef804831dc3 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Tue, 22 Jul 2025 17:52:40 +0800 Subject: [PATCH] crimson/os/seastore/logical_child_node: LogicalChildNode should respond to the invalidation event Although this is not causing any damage for now, it's violating the invariant that invalid linked child nodes mustn't have parents. Signed-off-by: Xuehan Xu --- src/crimson/os/seastore/logical_child_node.h | 7 +++++++ .../os/seastore/omap_manager/btree/omap_btree_node_impl.h | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/crimson/os/seastore/logical_child_node.h b/src/crimson/os/seastore/logical_child_node.h index 0394a88bda8..3b2786f1eb2 100644 --- a/src/crimson/os/seastore/logical_child_node.h +++ b/src/crimson/os/seastore/logical_child_node.h @@ -20,6 +20,13 @@ public: template LogicalChildNode(T&&... t) : LogicalCachedExtent(std::forward(t)...) {} + virtual void lcn_on_invalidated(Transaction &t) {} + + void on_invalidated(Transaction &t) final { + this->lba_child_node_t::on_invalidated(); + lcn_on_invalidated(t); + } + virtual ~LogicalChildNode() { if (this->is_stable()) { lba_child_node_t::destroy(); diff --git a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h index 414147d8e89..6fce9584f46 100644 --- a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h +++ b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h @@ -120,7 +120,7 @@ struct OMapInnerNode } } - void on_invalidated(Transaction &t) final { + void lcn_on_invalidated(Transaction &t) final { this->child_node_t::on_invalidated(); } @@ -329,7 +329,7 @@ struct OMapLeafNode } } - void on_invalidated(Transaction &t) final { + void lcn_on_invalidated(Transaction &t) final { this->child_node_t::on_invalidated(); } -- 2.47.3