From: Patrick Donnelly Date: Thu, 16 Dec 2021 15:44:40 +0000 (-0500) Subject: mds: trigger stray reintegration when loading dentry X-Git-Tag: v17.1.0~167^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F44342%2Fhead;p=ceph.git mds: trigger stray reintegration when loading dentry 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 --- diff --git a/src/mds/CDentry.cc b/src/mds/CDentry.cc index 85d8bc5fb58..3a9aa5ef4f5 100644 --- a/src/mds/CDentry.cc +++ b/src/mds/CDentry.cc @@ -256,6 +256,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)