]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: semi-tolerate/warn on bad client_ranges
authorSage Weil <sage@newdream.net>
Mon, 20 Jul 2009 17:52:57 +0000 (10:52 -0700)
committerSage Weil <sage@newdream.net>
Mon, 20 Jul 2009 18:03:52 +0000 (11:03 -0700)
src/mds/MDCache.cc

index fe962ff3189a6f153c962719f86fcab51a4d8119..79a7d0c7043ec78328c4d72cb011932017c99084 100644 (file)
@@ -4365,14 +4365,23 @@ void MDCache::do_file_recover()
     CInode *in = *file_recover_queue.begin();
     file_recover_queue.erase(in);
 
-    if (in->inode.client_ranges.size()) {
-      dout(10) << "do_file_recover starting " << in->inode.size << " " << in->inode.client_ranges
+    inode_t *pi = in->get_projected_inode();
+
+    // blech
+    if (pi->client_ranges.size() && !pi->get_max_size()) {
+      stringstream ss;
+      ss << "bad client_range " << pi->client_ranges << " on ino " << pi->ino;
+      mds->logclient.log(LOG_WARN, ss);
+    }
+
+    if (pi->client_ranges.size() && pi->get_max_size()) {
+      dout(10) << "do_file_recover starting " << in->inode.size << " " << pi->client_ranges
               << " " << *in << dendl;
       file_recovering.insert(in);
       
       C_MDC_Recover *fin = new C_MDC_Recover(this, in);
       mds->filer->probe(in->inode.ino, &in->inode.layout, in->last,
-                       in->get_projected_inode()->get_max_size(), &fin->size, &fin->mtime, false,
+                       pi->get_max_size(), &fin->size, &fin->mtime, false,
                        0, fin);    
     } else {
       dout(10) << "do_file_recover skipping " << in->inode.size