From af393e4bd78e92ee2f8407f26d3c5244f494d8b8 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 23 Apr 2025 22:05:35 +0800 Subject: [PATCH] crimson/os/seastore/cache: init root as dirty To simplify checks that root won't appear in lru. Also, make sure root has a root paddr. Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/cache.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index a7ef1da98ba8..24972653d4f0 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -1302,10 +1302,11 @@ record_t Cache::prepare_record( t, delta_length, *i); assert(t.root == i); root = t.root; + assert(root->get_paddr().is_root()); record.push_back( delta_info_t{ extent_types_t::ROOT, - P_ADDR_NULL, + P_ADDR_ROOT, L_ADDR_NULL, 0, 0, @@ -1886,13 +1887,16 @@ void Cache::init() root = nullptr; } root = CachedExtent::make_cached_extent_ref(); - root->init(CachedExtent::extent_state_t::CLEAN, + // Make it simpler to keep root dirty + root->init(CachedExtent::extent_state_t::DIRTY, P_ADDR_ROOT, PLACEMENT_HINT_NULL, NULL_GENERATION, - TRANS_ID_NULL); + TRANS_ID_NULL); + root->set_modify_time(seastar::lowres_system_clock::now()); INFO("init root -- {}", *root); - extents_index.insert(*root); + add_extent(root); + add_to_dirty(root, nullptr); } Cache::mkfs_iertr::future<> Cache::mkfs(Transaction &t) -- 2.47.3