From: Mark Nelson Date: Fri, 24 Jul 2020 05:29:15 +0000 (+0000) Subject: mds/CInode: Optimize only pinned by subtrees check X-Git-Tag: v15.2.9~122^2~24^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f8a777016e7f741c06f75edc65ab8b7f25de3798;p=ceph.git mds/CInode: Optimize only pinned by subtrees check Fixes: https://tracker.ceph.com/issues/46727 Signed-off-by: Mark Nelson (cherry picked from commit 6a865f805b723525358ed8e79bb3d41709e98bf3) --- diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 22cdc6e7bef3..b5d6465cc1f3 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -575,6 +575,9 @@ class CInode : public MDSCacheObject, public InodeStoreBase, public Counter MDCache::trim(uint64_t count) } } else if (!diri->is_auth() && dir->get_num_ref() <= 1) { // only subtree pin - auto&& ls = diri->get_subtree_dirfrags(); - if (diri->get_num_ref() > (int)ls.size()) // only pinned by subtrees + if (diri->get_num_ref() > diri->get_num_subtree_roots()) { continue; + } // don't trim subtree root if its auth MDS is recovering. // This simplify the cache rejoin code.