]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/cache: init root as dirty 62938/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 23 Apr 2025 14:05:35 +0000 (22:05 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Fri, 25 Apr 2025 01:20:34 +0000 (09:20 +0800)
To simplify checks that root won't appear in lru.

Also, make sure root has a root paddr.

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/cache.cc

index a7ef1da98ba812eb41d18fa3261273df608b4680..24972653d4f0658d43f9b647ef263b113f6c47ca 100644 (file)
@@ -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<RootBlock>();
-  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)