From: John Spray Date: Wed, 6 Apr 2016 12:00:00 +0000 (+0100) Subject: mds: skip size recovery on non-file inodes X-Git-Tag: v10.1.2~3^2^2~2^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=693f46a75a6d84b7a02a17b348e3611669827558;p=ceph.git mds: skip size recovery on non-file inodes Previously even directories were getting added to the list of inodes to check in rejoin. This was a (small) waste of time, with these dir inodes getting passed all the way down into check_inode_max_size for no purpose. Signed-off-by: John Spray --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index ddd99b28a78f..84e0e4897944 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -2187,6 +2187,7 @@ bool Locker::check_inode_max_size(CInode *in, bool force_wrlock, utime_t new_mtime) { assert(in->is_auth()); + assert(in->is_file()); inode_t *latest = in->get_projected_inode(); map new_ranges; diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index d9e59018f618..152b47b85ae4 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -6038,6 +6038,11 @@ void MDCache::identify_files_to_recover(vector& recover_q, vectorsecond; if (!in->is_auth()) continue; + + // Only normal files need file size recovery + if (!in->is_file()) { + continue; + } bool recover = false; for (map::iterator p = in->inode.client_ranges.begin();