]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix purge of 0-length inode
authorSage Weil <sage@newdream.net>
Fri, 30 Jan 2009 21:51:49 +0000 (13:51 -0800)
committerSage Weil <sage@newdream.net>
Sat, 31 Jan 2009 00:03:11 +0000 (16:03 -0800)
src/mds/MDCache.cc

index 92e2aed22b3331fbd480165b1dd88d6a16d7076b..1f17ce28e9fa429772ba974a8e8e97ba7d6f5ee8 100644 (file)
@@ -6540,10 +6540,15 @@ void MDCache::purge_stray(CDentry *dn)
     snapc = &nullsnap;
     assert(in->last == CEPH_NOSNAP);
   }
-  dout(10) << "purge_stray snapc " << snapc << " on " << *in << dendl;
-  mds->filer->remove(in->inode.ino, &in->inode.layout, *snapc,
-                    0, in->inode.size, 0,
-                    0, new C_MDC_PurgeStrayPurged(this, dn));
+
+  __u64 to = MAX(in->inode.size, in->inode.max_size);
+  dout(10) << "purge_stray 0~" << to << " snapc " << snapc << " on " << *in << dendl;
+  if (to)
+    mds->filer->remove(in->inode.ino, &in->inode.layout, *snapc,
+                      0, to, 0,
+                      0, new C_MDC_PurgeStrayPurged(this, dn));
+  else
+    _purge_stray_purged(dn);
 }
 
 class C_MDC_PurgeStrayLogged : public Context {