]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "mds: Handle referent remote similar to remote"
authorVenky Shankar <vshankar@redhat.com>
Tue, 18 Mar 2025 09:02:20 +0000 (09:02 +0000)
committerVenky Shankar <vshankar@redhat.com>
Fri, 20 Mar 2026 07:25:14 +0000 (12:55 +0530)
This reverts commit 1e5fca1582295c9c89ee4afc1d0406cf17940704.

Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/mds/CDentry.cc
src/mds/CDir.cc
src/mds/MDCache.cc
src/mds/Migrator.cc
src/mds/ScrubStack.cc
src/mds/Server.cc

index 13a93f2366511ff96e3ff8136e6ca79d4b1fabee..5f258fa62acd761e1a7f0db98c207272c2564327 100644 (file)
@@ -583,7 +583,7 @@ void CDentry::encode_lock_state(int type, bufferlist& bl)
     encode(c, bl);
     encode(linkage.get_inode()->ino(), bl);
   }
-  else if (linkage.is_remote() || linkage.is_referent_remote()) {
+  else if (linkage.is_remote()) {
     c = 2;
     encode(c, bl);
     encode(linkage.get_remote_ino(), bl);
index ebd31703837d2cd98e75b4a64f8efd85ca611e5c..0d27911dda2777d80189bbfe3a0166bcbce3ca59 100644 (file)
@@ -258,7 +258,7 @@ bool CDir::check_rstats(bool scrub)
        frag_info.nsubdirs++;
       else
        frag_info.nfiles++;
-    } else if (dnl->is_remote() || dnl->is_referent_remote())
+    } else if (dnl->is_remote())
       frag_info.nfiles++;
   }
 
@@ -351,7 +351,7 @@ void CDir::adjust_dentry_lru(CDentry *dn)
   bool bottom_lru;
   if (dn->get_linkage()->is_primary()) {
     bottom_lru = !is_auth() && inode->is_stray();
-  } else if (dn->get_linkage()->is_remote() || dn->get_linkage()->is_referent_remote()) { //TODO Is this right for referent remote?
+  } else if (dn->get_linkage()->is_remote()) {
     bottom_lru = false;
   } else {
     bottom_lru = !is_auth();
@@ -1019,7 +1019,7 @@ void CDir::steal_dentry(CDentry *dn)
       // move dirty inode rstat to new dirfrag
       if (in->is_dirty_rstat())
        dirty_rstat_inodes.push_back(&in->dirty_rstat_item);
-    } else if (dn->get_linkage()->is_remote() || dn->get_linkage()->is_referent_remote()) {
+    } else if (dn->get_linkage()->is_remote()) {
       if (dn->get_linkage()->get_remote_d_type() == DT_DIR)
        _fnode->fragstat.nsubdirs++;
       else
@@ -3500,7 +3500,7 @@ void CDir::verify_fragstat()
       else
        c.nfiles++;
     }
-    if (dn->is_remote() || dn->is_referent_remote()) {
+    if (dn->is_remote()) {
       if (dn->get_remote_d_type() == DT_DIR)
        c.nsubdirs++;
       else
index 7d118905531fad9fe0513fc41c4772bb94959a0e..74ca3a4fabf6b82e7d29856e270fe3fdd3e15c6d 100644 (file)
@@ -1705,14 +1705,7 @@ void MDCache::journal_cow_dentry(MutationImpl *mut, EMetaBlob *metablob,
        dn->first = dir_follows+1;
        if (realm->has_snaps_in_range(oldfirst, dir_follows)) {
          CDir *dir = dn->dir;
-          /* TODO: No need to cow referent inode. So just the remote dentry is prepared,
-           * journalled and added to dirty_cow_dentries list. But when the journal is
-           * replayed. How does this play out ? Test this out.
-          */
-         if (mds->mdsmap->allow_referent_inodes()) {
-            dout(10) << __func__ << " lookout-1 - Adding dentry as remote for journal when referent inode feature is enabled !!! "
-                    << " dentry " << *dn << " first " << oldfirst << " last " << dir_follows << dendl;
-         }
+          // TODO: What does this mean for referent inode ?? Passing nullptr for now.
          CDentry *olddn = dir->add_remote_dentry(dn->get_name(), nullptr, in->ino(), in->d_type(), dn->alternate_name, oldfirst, dir_follows);
          dout(10) << " olddn " << *olddn << dendl;
          ceph_assert(dir->is_projected());
@@ -1798,15 +1791,8 @@ void MDCache::journal_cow_dentry(MutationImpl *mut, EMetaBlob *metablob,
       metablob->add_primary_dentry(olddn, 0, true, false, false, need_snapflush);
       mut->add_cow_dentry(olddn);
     } else {
-      ceph_assert(dnl->is_remote() || dnl->is_referent_remote());
-      /* TODO: No need to cow referent inode. So just the remote dentry is prepared,
-       * journalled and added to dirty_cow_dentries list. But when the journal is
-       * replayed. How does this play out ? Test this out.
-       */
-      if (mds->mdsmap->allow_referent_inodes()) {
-        dout(10) << __func__ << " lookout-2 - Adding dentry as remote for journal when referent inode feature is enabled !!! "
-                << " dentry " << *dn << " first " << oldfirst << " last " << follows << dendl;
-      }
+      ceph_assert(dnl->is_remote());
+      //No need to journal referent inode for cow
       CDentry *olddn = dir->add_remote_dentry(dn->get_name(), nullptr, dnl->get_remote_ino(), dnl->get_remote_d_type(), dn->alternate_name, oldfirst, follows);
       dout(10) << " olddn " << *olddn << dendl;
 
@@ -8656,7 +8642,7 @@ int MDCache::path_traverse(const MDRequestRef& mdr, MDSContextFactory& cf,
       // do we have the inode?
       CInode *in = dnl->get_inode();
       if (!in) {
-        ceph_assert(dnl->is_remote() || dnl->is_referent_remote());
+        ceph_assert(dnl->is_remote());
         // do we have it?
         in = get_inode(dnl->get_remote_ino());
         if (in) {
@@ -8945,19 +8931,11 @@ CInode *MDCache::get_dentry_inode(CDentry *dn, const MDRequestRef& mdr, bool pro
   if (dnl->is_primary())
     return dnl->inode;
 
-  ceph_assert(dnl->is_remote() || dnl->is_referent_remote());
+  ceph_assert(dnl->is_remote());
   CInode *in = get_inode(dnl->get_remote_ino());
   if (in) {
-    CInode *ref_in = dnl->get_referent_inode();
-    if (dnl->is_referent_remote())
-      ceph_assert(ref_in);
-    if (ref_in) {
-      dout(7) << __func__ << " linking in referent remote in " << *in << "referent " << *ref_in << dendl;
-      dn->link_remote(dnl, in, ref_in);
-    } else {
-      dout(7) << __func__ << " linking in remote in " << *in << dendl;
-      dn->link_remote(dnl, in);
-    }
+    dout(7) << "get_dentry_inode linking in remote in " << *in << dendl;
+    dn->link_remote(dnl, in);
     return in;
   } else {
     dout(10) << "get_dentry_inode on remote dn, opening inode for " << *dn << dendl;
@@ -8996,7 +8974,7 @@ void MDCache::_open_remote_dentry_finish(CDentry *dn, inodeno_t ino, MDSContext
 {
   if (r < 0) {
     CDentry::linkage_t *dnl = dn->get_projected_linkage();
-    if ((dnl->is_remote() || dnl->is_referent_remote()) && dnl->get_remote_ino() == ino) {
+    if (dnl->is_remote() && dnl->get_remote_ino() == ino) {
       dout(0) << "open_remote_dentry_finish bad remote dentry " << *dn << dendl;
       dn->state_set(CDentry::STATE_BADREMOTEINO);
 
@@ -13593,7 +13571,7 @@ void MDCache::repair_dirfrag_stats_work(const MDRequestRef& mdr)
        frag_info.nsubdirs++;
       else
        frag_info.nfiles++;
-    } else if (dnl->is_remote() || dnl->is_referent_remote())
+    } else if (dnl->is_remote())
       frag_info.nfiles++;
   }
 
index b461e37817b9ee0986b91b0eb15bab50371c3625..7ed87d42e231d2738f979eb1dff317e95213fa25 100644 (file)
@@ -1054,7 +1054,7 @@ void Migrator::maybe_split_export(CDir* dir, uint64_t max_size, bool null_okay,
        dirfrag_size += null_size;
        continue;
       }
-      if (dn->get_linkage()->is_remote() || dn->get_linkage()->is_referent_remote()) {
+      if (dn->get_linkage()->is_remote()) {
        dirfrag_size += remote_size;
        continue;
       }
index efe0d3ed042572d9196f59fe3ae701ae7b70a8d9..706473e7536c18dba5a449e7a0d64e60200441ad 100644 (file)
@@ -540,9 +540,8 @@ void ScrubStack::scrub_dirfrag(CDir *dir, bool *added_children, bool *done)
        continue;
       }
       if (dnl->is_primary()) {
-  *added_children = true;
-       _enqueue(dnl->get_inode(), header, true);
-      } else if (dnl->is_remote() || dnl->is_referent_remote()) {
+       _enqueue(dnl->get_inode(), header, false);
+      } else if (dnl->is_remote()) {
         identify_remote_link_damage(dn);
       }
     }
index 24da45782e291a2c861b434e10508f1498bad237..e0c3de3b50349eb2ea5fa2dea8bd677bc78335c9 100644 (file)
@@ -2465,7 +2465,7 @@ void Server::reply_client_request(const MDRequestRef& mdr, const ref_t<MClientRe
   // take a closer look at tracei, if it happens to be a remote link
   if (tracei && 
       tracedn &&
-      (tracedn->get_projected_linkage()->is_remote() || tracedn->get_projected_linkage()->is_referent_remote())) {
+      tracedn->get_projected_linkage()->is_remote()) {
     mdcache->eval_remote(tracedn);
   }
 }
@@ -12363,7 +12363,7 @@ bool Server::build_snap_diff(
 
     // remote link?
     // better for the MDS to do the work, if we think the client will stat any of these files.
-    if ((dnl->is_remote() || dnl->is_referent_remote()) && !in) {
+    if (dnl->is_remote() && !in) {
       in = mdcache->get_inode(dnl->get_remote_ino());
       dout(20) << __func__ << " remote in: " << *in << " ino " << std::hex << dnl->get_remote_ino() << std::dec << dendl;
       if (in) {