]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: introduce rename_omap_root() with src and dest onodes 62079/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 13 Mar 2025 08:21:10 +0000 (16:21 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Thu, 13 Mar 2025 09:04:35 +0000 (17:04 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/onode.h
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore.h

index 6acae932642759a093d3237623dbda175ad3e903..3013ed8a58709105edc58d33bf9b93e258ecb0ea 100644 (file)
@@ -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);
 };
index f75d35ca15a51e2ead8565c4a0bf7df0074dbf70..3029118a560fb4bf78fa4e45752efc388e6b0096 100644 (file)
@@ -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],
index 4500d46d6d558ad6c14c2013022ce2780c0730b2..76227af6edc8d1969a7be807a301ee5782a47688 100644 (file)
@@ -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(