]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: introduce omaptree_update_root()
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 11 Dec 2024 03:05:03 +0000 (11:05 +0800)
committermyoungwon oh <ohmyoungwon@gmail.com>
Fri, 28 Feb 2025 15:03:41 +0000 (15:03 +0000)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/seastore.cc

index ba4eef8e7879c9ded683d0db83001f0813398cd4..2ce07132168d2d9d259841b69362da8c7e634616 100644 (file)
@@ -2095,6 +2095,22 @@ SeaStore::Shard::omaptree_clear_no_onode(
   });
 }
 
+void omaptree_update_root(
+  Transaction& t,
+  omap_root_t& root,
+  Onode& onode)
+{
+  assert(root.must_update());
+  if (root.get_type() == omap_type_t::OMAP) {
+    onode.update_omap_root(t, root);
+  } else if (root.get_type() == omap_type_t::XATTR) {
+    onode.update_xattr_root(t, root);
+  } else {
+    assert(root.get_type() == omap_type_t::LOG);
+    onode.update_log_root(t, root);
+  }
+}
+
 SeaStore::base_iertr::future<>
 SeaStore::Shard::omaptree_clear(
   Transaction& t,
@@ -2111,12 +2127,7 @@ SeaStore::Shard::omaptree_clear(
   ).si_then([&t, &onode, FNAME](auto root) {
     assert(root.is_null());
     assert(root.must_update());
-    if (root.get_type() == omap_type_t::XATTR) {
-      onode.update_xattr_root(t, root);
-    } else {
-      assert(root.get_type() == omap_type_t::OMAP);
-      onode.update_omap_root(t, root);
-    }
+    omaptree_update_root(t, root, onode);
     DEBUGT("{} done", t, root.get_type());
   });
 }
@@ -2346,14 +2357,7 @@ SeaStore::Shard::_omap_set_values(
     });
   }).si_then([&onode, &t](auto root) {
     if (root.must_update()) {
-      if (root.get_type() == omap_type_t::OMAP) {
-       onode->update_omap_root(t, root);
-      } else if (root.get_type() == omap_type_t::XATTR) {
-       onode->update_xattr_root(t, root);
-      } else {
-       ceph_assert(root.get_type() == omap_type_t::LOG);
-       onode->update_log_root(t, root);
-      }
+      omaptree_update_root(t, root, *onode);
     }
   });
 }
@@ -2415,12 +2419,7 @@ SeaStore::Shard::_omap_rmkeys(
       return omap_manager.omap_rm_key(root, *ctx.transaction, p);
     }).si_then([&ctx, &root, &onode] {
       if (root.must_update()) {
-        if (root.get_type() == omap_type_t::OMAP) {
-          onode->update_omap_root(*ctx.transaction, root);
-        } else {
-          ceph_assert(root.get_type() == omap_type_t::LOG);
-          onode->update_log_root(*ctx.transaction, root);
-        }
+        omaptree_update_root(*ctx.transaction, root, *onode);
       }
     });
   });
@@ -2459,12 +2458,7 @@ SeaStore::Shard::_omap_rmkeyrange(
       root, *ctx.transaction, first, last, config
     ).si_then([&ctx, &root, &onode] {
       if (root.must_update()) {
-        if (root.get_type() == omap_type_t::OMAP) {
-          onode->update_omap_root(*ctx.transaction, root);
-        } else {
-          ceph_assert(root.get_type() == omap_type_t::LOG);
-          onode->update_log_root(*ctx.transaction, root);
-        }
+        omaptree_update_root(*ctx.transaction, root, *onode);
       }
     });
   });
@@ -2596,7 +2590,7 @@ SeaStore::Shard::_xattr_rmattr(
     return omap_manager.omap_rm_key(root, *ctx.transaction, name
     ).si_then([&ctx, &root, &onode] {
       if (root.must_update()) {
-        onode->update_xattr_root(*ctx.transaction, root);
+        omaptree_update_root(*ctx.transaction, root, *onode);
       }
     });
   });