From 5bcccabe7e0c46ee4ee1a9bba5aec9877845931f Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Thu, 13 Mar 2025 16:21:10 +0800 Subject: [PATCH] crimson/os/seastore: introduce rename_omap_root() with src and dest onodes Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/onode.h | 5 ++--- src/crimson/os/seastore/seastore.cc | 6 +++--- src/crimson/os/seastore/seastore.h | 11 ++++++++++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/crimson/os/seastore/onode.h b/src/crimson/os/seastore/onode.h index 6acae93264275..3013ed8a58709 100644 --- a/src/crimson/os/seastore/onode.h +++ b/src/crimson/os/seastore/onode.h @@ -105,9 +105,8 @@ public: laddr_t get_data_hint() const { return get_hint(); } - omap_root_t get_root(omap_type_t type, extent_len_t block_size) const { - return get_layout().get_root(type).get( - get_metadata_hint(block_size)); + const omap_root_le_t& get_root(omap_type_t type) const { + return get_layout().get_root(type); } friend std::ostream& operator<<(std::ostream &out, const Onode &rhs); }; diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index f75d35ca15a51..3029118a560fb 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -1914,9 +1914,9 @@ SeaStore::Shard::_rename( { auto olayout = onode->get_layout(); uint32_t size = olayout.size; - auto omap_root = get_omap_root(omap_type_t::OMAP, *onode); - auto xattr_root = get_omap_root(omap_type_t::XATTR, *onode); - auto log_root = get_omap_root(omap_type_t::LOG, *onode); + auto omap_root = rename_omap_root(omap_type_t::OMAP, *onode, *d_onode); + auto xattr_root = rename_omap_root(omap_type_t::XATTR, *onode, *d_onode); + auto log_root = rename_omap_root(omap_type_t::LOG, *onode, *d_onode); auto object_data = olayout.object_data.get(); auto oi_bl = ceph::bufferlist::static_from_mem( &olayout.oi[0], diff --git a/src/crimson/os/seastore/seastore.h b/src/crimson/os/seastore/seastore.h index 4500d46d6d558..76227af6edc8d 100644 --- a/src/crimson/os/seastore/seastore.h +++ b/src/crimson/os/seastore/seastore.h @@ -467,7 +467,16 @@ public: */ omap_root_t get_omap_root(omap_type_t type, Onode& onode) const { - return onode.get_root(type, device->get_block_size()); + return onode.get_root(type).get( + onode.get_metadata_hint(device->get_block_size())); + } + + omap_root_t rename_omap_root( + omap_type_t type, + Onode& onode, + Onode& d_onode) const { + return onode.get_root(type).get( + d_onode.get_metadata_hint(device->get_block_size())); } omaptree_get_value_ret omaptree_get_value( -- 2.39.5