]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: trigger stray reintegration when loading dentry 44514/head
authorPatrick Donnelly <pdonnell@redhat.com>
Thu, 16 Dec 2021 15:44:40 +0000 (10:44 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Sun, 16 Jan 2022 14:56:54 +0000 (09:56 -0500)
During recursive scrub, the MDS will load a remote dentry into cache but
not necessarily check if reintegration is necessary. Before this commit,
it would only happen when the dentry is returned from a client request.
To effect global reintegration when there are too many strays, this
means a cluster admin would have to do `find` on the CephFS file system.
This is unsavory because of the cache / cap explosion involved.

Fixes: https://tracker.ceph.com/issues/53641
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 83f9a49dfddcba06ab3e0cd9b860523fafad4605)

src/mds/CDentry.cc

index 7d8170f73167ab12c299e9ffa496b7bdcf1d9f55..f0825d7fe11839bb82482717bc19fcf1eaccc15e 100644 (file)
@@ -252,6 +252,9 @@ void CDentry::link_remote(CDentry::linkage_t *dnl, CInode *in)
 
   if (dnl == &linkage)
     in->add_remote_parent(this);
+
+  // check for reintegration
+  dir->mdcache->eval_remote(this);
 }
 
 void CDentry::unlink_remote(CDentry::linkage_t *dnl)