From 323ef5175f4210c827ad43464fd38734d49df392 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 11 Dec 2024 11:05:03 +0800 Subject: [PATCH] crimson/os/seastore: introduce omaptree_update_root() Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/seastore.cc | 48 +++++++++++++---------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index ba4eef8e7879c..2ce07132168d2 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -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); } }); }); -- 2.39.5