From: Sage Weil Date: Fri, 10 Jul 2009 22:14:48 +0000 (-0700) Subject: mds: on restart, only recover files affected by missing clients X-Git-Tag: v0.10~32 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f871d3e0a026d6af177810c93dd5825ad3cc909b;p=ceph.git mds: on restart, only recover files affected by missing clients --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 58675dee6031..f8d680bb2a1d 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -4317,7 +4317,19 @@ void MDCache::identify_files_to_recover() CInode *in = p->second; if (!in->is_auth()) continue; - if (in->inode.client_ranges.size()) { + + bool recover = false; + for (map::iterator p = in->inode.client_ranges.begin(); + p != in->inode.client_ranges.end(); + p++) { + Capability *cap = in->get_client_cap(p->first); + if (!cap) { + recover = true; + break; + } + } + + if (recover) { in->filelock.set_state(LOCK_LOCK); in->loner_cap = -1; q.push_back(in);