]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: only purge dentries with no extra refs (besides dirty)
authorSage Weil <sage@newdream.net>
Fri, 4 Jun 2010 00:32:39 +0000 (17:32 -0700)
committerSage Weil <sage@newdream.net>
Fri, 4 Jun 2010 00:33:30 +0000 (17:33 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/mds/CDir.cc

index 37c8cab1909192e92ec7feed031ad3365ed5138f..e25798f162185a0275e483d1b949f0240c4c2dc0 100644 (file)
@@ -534,6 +534,7 @@ bool CDir::try_trim_snap_dentry(CDentry *dn, const set<snapid_t>& snaps)
   if (dnl->is_primary())
     in = dnl->get_inode();
   if ((p == snaps.end() || *p > dn->last) &&
+      (dn->get_num_ref() == dn->is_dirty()) &&
       (!in || in->get_num_ref() == in->is_dirty())) {
     dout(10) << " purging snapped " << *dn << dendl;
     if (in && in->is_dirty())