]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Revert "mds/rename: Handle existing destdn referent remote"
authorVenky Shankar <vshankar@redhat.com>
Tue, 18 Mar 2025 08:57:34 +0000 (08:57 +0000)
committerVenky Shankar <vshankar@redhat.com>
Wed, 28 May 2025 04:32:09 +0000 (10:02 +0530)
This reverts commit 04b1ead3e45894f95ddbc957914aecc47dc64478.

Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit 905a647da80e8e4ae025bb10d2fcdad1c5a01768)

src/mds/Server.cc

index aa48d510840d0d516245aea67eec4a36cbb3fa60..010645ab419887b7c1a363ee1a53e2b94261ee77 100644 (file)
@@ -9947,33 +9947,6 @@ void Server::_rename_prepare(const MDRequestRef& mdr,
        pi.inode->version = oldin->pre_dirty();
         tpi = pi.inode.get();
       }
-    } else if (destdnl->is_referent_remote()) { //non-linkmerge case
-      CInode *oldrefi = destdnl->get_referent_inode();
-      ceph_assert(straydn && oldrefi);  // moving to straydn.
-      dout(10) << " destdnl is referent. oldrefi " << *oldrefi << dendl;
-
-      // nlink-- targeti
-      if (oldin->is_auth()) {
-       auto pi = oldin->project_inode(mdr);
-       pi.inode->version = oldin->pre_dirty();
-        tpi = pi.inode.get();
-
-        // Remove referent inode from primary if destdnl exists and is referent
-        tpi->remove_referent_ino(oldrefi->ino());
-        dout(20) << "_rename_prepare destdnl exists and is referent, referent_inodes " << std::hex
-                 << tpi->get_referent_inodes() << " referent ino removed " << oldrefi->ino() << dendl;
-      }
-
-      // link--, and move referent inode
-      if (destdn->is_auth()) {
-       auto pi= oldrefi->project_inode(mdr); //project_snaprealm
-       pi.inode->version = straydn->pre_dirty(pi.inode->version);
-       //backtrace updation is not required
-        trpi = pi.inode.get();
-        trpi->nlink = 0;
-        oldrefi->state_set(CInode::STATE_ORPHAN);
-      }
-      straydn->push_projected_linkage(oldrefi);
     }
   } else if (linkmerge && destdnl->is_referent_remote()) {
       CInode *oldrefi = destdnl->get_referent_inode();
@@ -10197,23 +10170,6 @@ void Server::_rename_prepare(const MDRequestRef& mdr,
        mdcache->journal_cow_dentry(mdr.get(), metablob, oldin_pdn);
        metablob->add_primary_dentry(oldin_pdn, oldin, true);
       }
-      // referent inode stuff
-      if (destdnl->is_referent_remote()) { //non-linkmerge case
-        CInode *oldrefi = destdnl->get_referent_inode();
-        ceph_assert(straydn);
-        ceph_assert(oldrefi);
-        if (destdn->is_auth()) {
-          // No snapshot on referent inode - Ignoring snaprealm projection
-          // Updating first is required here ? Mostly not required, keeping
-          // it for now.
-          straydn->first = mdcache->get_global_snaprealm()->get_newest_seq() + 1;
-          metablob->add_primary_dentry(straydn, oldrefi, true, true);
-        } else if (force_journal_stray) {
-         dout(10) << " forced journaling referent straydn " << *straydn << dendl;
-         metablob->add_dir_context(straydn->get_dir());
-         metablob->add_primary_dentry(straydn, oldrefi, true);
-        }
-      }
     }
   } else if (linkmerge && destdnl->is_referent_remote()) {
     CInode *oldrefi = destdnl->get_referent_inode();
@@ -10392,31 +10348,8 @@ void Server::_rename_apply(const MDRequestRef& mdr, CDentry *srcdn, CDentry *des
        oldin->pop_and_dirty_projected_inode(mdr->ls, mdr);
 
       mdcache->touch_dentry_bottom(straydn);  // drop dn as quickly as possible.
-    } else if (destdnl->is_remote() || destdnl->is_referent_remote()) {
-      if (destdnl->is_referent_remote()) { //non-linkmerge case
-        ceph_assert(straydn);
-        dout(10) << __func__ << " linkmerge:no referent straydn is " << *straydn << dendl;
-
-        // No snapshots on referent inodes - skipping snaprealm related stuff
-        // on referent inode
-       CInode *oldrefin = destdnl->get_referent_inode();
-       ceph_assert(oldrefin);
-
-        destdn->get_dir()->unlink_inode(destdn, false);
-
-        straydn->pop_projected_linkage();
-        if (mdr->is_peer() && !mdr->more()->peer_update_journaled)
-         ceph_assert(!straydn->is_projected()); // no other projected
-
-        if (destdn->is_auth())
-         oldrefin->pop_and_dirty_projected_inode(mdr->ls, mdr);
-
-        mdcache->touch_dentry_bottom(straydn);  // drop dn as quickly as possible.
-      } else if (destdnl->is_remote()) {
-        // This is already done for referent above.
-        destdn->get_dir()->unlink_inode(destdn, false);
-      }
-
+    } else if (destdnl->is_remote()) {
+      destdn->get_dir()->unlink_inode(destdn, false);
       if (oldin->is_auth()) {
        oldin->pop_and_dirty_projected_inode(mdr->ls, mdr);
       } else if (mdr->peer_request) {