]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: on restart, only recover files affected by missing clients
authorSage Weil <sage@newdream.net>
Fri, 10 Jul 2009 22:14:48 +0000 (15:14 -0700)
committerSage Weil <sage@newdream.net>
Fri, 10 Jul 2009 22:32:56 +0000 (15:32 -0700)
src/mds/MDCache.cc

index 58675dee6031a9a649b7377200eadda45aca9eba..f8d680bb2a1d384071171317313b5cafffe5c82d 100644 (file)
@@ -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<int,byte_range_t>::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);