]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Revert "mds/rename: Handle referent inode rollback"
authorVenky Shankar <vshankar@redhat.com>
Tue, 18 Mar 2025 08:57:23 +0000 (08:57 +0000)
committerVenky Shankar <vshankar@redhat.com>
Thu, 12 Feb 2026 04:50:54 +0000 (10:20 +0530)
This reverts commit f66353d36e7ac0651417cd1dccb6a34d6ce7f784.

Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/mds/Server.cc
src/mds/events/EPeerUpdate.h
src/mds/journal.cc

index 526f748c48f20a0152ef65e6a529d12148341811..cd77957bd2e79840f6e07c33d05c7d18101a2f6f 100644 (file)
@@ -11104,29 +11104,23 @@ void Server::handle_peer_rename_prep(const MDRequestRef& mdr)
   rollback.orig_src.dirfrag_old_mtime = srcdn->get_dir()->get_projected_fnode()->fragstat.mtime;
   rollback.orig_src.dirfrag_old_rctime = srcdn->get_dir()->get_projected_fnode()->rstat.rctime;
   rollback.orig_src.dname = srcdn->get_name();
-  rollback.orig_src.referent_ino = 0;
   if (srcdnl->is_primary())
     rollback.orig_src.ino = srcdnl->get_inode()->ino();
   else {
     ceph_assert(srcdnl->is_remote() || srcdnl->is_referent_remote());
     rollback.orig_src.remote_ino = srcdnl->get_remote_ino();
     rollback.orig_src.remote_d_type = srcdnl->get_remote_d_type();
-    if (srcdnl->is_referent_remote())
-      rollback.orig_src.referent_ino = srcdnl->get_referent_ino();
   }
   
   rollback.orig_dest.dirfrag = destdn->get_dir()->dirfrag();
   rollback.orig_dest.dirfrag_old_mtime = destdn->get_dir()->get_projected_fnode()->fragstat.mtime;
   rollback.orig_dest.dirfrag_old_rctime = destdn->get_dir()->get_projected_fnode()->rstat.rctime;
   rollback.orig_dest.dname = destdn->get_name();
-  rollback.orig_dest.referent_ino = 0;
   if (destdnl->is_primary())
     rollback.orig_dest.ino = destdnl->get_inode()->ino();
   else if (destdnl->is_remote() || destdnl->is_referent_remote()) {
     rollback.orig_dest.remote_ino = destdnl->get_remote_ino();
     rollback.orig_dest.remote_d_type = destdnl->get_remote_d_type();
-    if (destdnl->is_referent_remote())
-      rollback.orig_dest.referent_ino = destdnl->get_referent_ino();
   }
   
   if (straydn) {
@@ -11493,16 +11487,12 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ
     dout(10) << " destdir not found" << dendl;
 
   CInode *in = NULL;
-  CInode *referent_in = nullptr;
   if (rollback.orig_src.ino) {
     in = mdcache->get_inode(rollback.orig_src.ino);
     if (in && in->is_dir())
       ceph_assert(srcdn && destdn);
-  } else {
+  } else
     in = mdcache->get_inode(rollback.orig_src.remote_ino);
-    if (rollback.orig_src.referent_ino)
-      referent_in = mdcache->get_inode(rollback.orig_src.referent_ino);
-  }
 
   CDir *straydir = NULL;
   CDentry *straydn = NULL;
@@ -11521,16 +11511,12 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ
   }
 
   CInode *target = NULL;
-  CInode *target_referent_in = nullptr;
   if (rollback.orig_dest.ino) {
     target = mdcache->get_inode(rollback.orig_dest.ino);
     if (target)
       ceph_assert(destdn && straydn);
-  } else if (rollback.orig_dest.remote_ino) {
+  } else if (rollback.orig_dest.remote_ino)
     target = mdcache->get_inode(rollback.orig_dest.remote_ino);
-    if (rollback.orig_dest.referent_ino)
-      target_referent_in = mdcache->get_inode(rollback.orig_dest.referent_ino);
-  }
 
   // can't use is_auth() in the resolve stage
   mds_rank_t whoami = mds->get_nodeid();
@@ -11553,15 +11539,9 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ
     if (rollback.orig_src.ino) {
       ceph_assert(in);
       srcdn->push_projected_linkage(in);
-    } else {
-      if (rollback.orig_src.referent_ino) {
-       ceph_assert(referent_in);
-        srcdn->push_projected_linkage(referent_in, rollback.orig_src.remote_ino, rollback.orig_src.referent_ino);
-      } else {
-        srcdn->push_projected_linkage(rollback.orig_src.remote_ino,
-                                      rollback.orig_src.remote_d_type);
-      }
-    }
+    } else
+      srcdn->push_projected_linkage(rollback.orig_src.remote_ino,
+                                   rollback.orig_src.remote_d_type);
   }
 
   map<client_t,ref_t<MClientSnap>> splits[2];
@@ -11624,13 +11604,8 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ
     if (rollback.orig_dest.ino && target) {
       destdn->push_projected_linkage(target);
     } else if (rollback.orig_dest.remote_ino) {
-      if (rollback.orig_dest.referent_ino) {
-       ceph_assert(target_referent_in);
-        destdn->push_projected_linkage(target_referent_in, rollback.orig_dest.remote_ino, rollback.orig_dest.referent_ino);
-      } else {
-        destdn->push_projected_linkage(rollback.orig_dest.remote_ino,
-                                       rollback.orig_dest.remote_d_type);
-      }
+      destdn->push_projected_linkage(rollback.orig_dest.remote_ino,
+                                    rollback.orig_dest.remote_d_type);
     } else {
       // the dentry will be trimmed soon, it's ok to have wrong linkage
       if (rollback.orig_dest.ino)
@@ -11668,15 +11643,8 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ
       else
        ceph_assert(rollback.orig_dest.remote_ino &&
               rollback.orig_dest.remote_ino == rollback.orig_src.ino);
-    } else {
+    } else
       ti->nlink++;
-      //add referent inode back to the list
-      if (rollback.orig_dest.referent_ino) {
-        ti->add_referent_ino(rollback.orig_dest.referent_ino);
-        dout(10) << __func__ << " referent_inodes " << std::hex << ti->get_referent_inodes()
-                 << " referent ino added " << rollback.orig_dest.referent_ino << dendl;
-      }
-    }
 
     if (!projected)
       target->reset_inode(ti);
index adf7faf857d4de5cd15f4fe7992f449f28eddc9e..ad999bc0b9952eb6bb295b265d27c35e66431444 100644 (file)
@@ -75,7 +75,6 @@ struct rename_rollback {
     std::string dname;
     char remote_d_type;
     utime_t old_ctime;
-    inodeno_t referent_ino;
 
     drec() : remote_d_type((char)S_IFREG) {}
 
index c4600154c4320b64daf702fd88d7a947778884d2..a7bf55e0fff6981a2fabf4920f9885e993929eb8 100644 (file)
@@ -2695,7 +2695,7 @@ std::list<rmdir_rollback> rmdir_rollback::generate_test_instances()
 
 void rename_rollback::drec::encode(bufferlist &bl) const
 {
-  ENCODE_START(3, 2, bl);
+  ENCODE_START(2, 2, bl);
   encode(dirfrag, bl);
   encode(dirfrag_old_mtime, bl);
   encode(dirfrag_old_rctime, bl);
@@ -2704,13 +2704,12 @@ void rename_rollback::drec::encode(bufferlist &bl) const
   encode(dname, bl);
   encode(remote_d_type, bl);
   encode(old_ctime, bl);
-  encode(referent_ino, bl);
   ENCODE_FINISH(bl);
 }
 
 void rename_rollback::drec::decode(bufferlist::const_iterator &bl)
 {
-  DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
   decode(dirfrag, bl);
   decode(dirfrag_old_mtime, bl);
   decode(dirfrag_old_rctime, bl);
@@ -2719,8 +2718,6 @@ void rename_rollback::drec::decode(bufferlist::const_iterator &bl)
   decode(dname, bl);
   decode(remote_d_type, bl);
   decode(old_ctime, bl);
-  if (struct_v >= 3)
-    decode(referent_ino, bl);
   DECODE_FINISH(bl);
 }
 
@@ -2732,7 +2729,6 @@ void rename_rollback::drec::dump(Formatter *f) const
   f->dump_int("ino", ino);
   f->dump_int("remote ino", remote_ino);
   f->dump_string("dname", dname);
-  f->dump_int("referent_ino", referent_ino);
   uint32_t type = DTTOIF(remote_d_type) & S_IFMT; // convert to type entries
   string type_string;
   switch(type) {