]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: allow purging "dirty parent" stray inode
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 4 Jun 2013 03:19:26 +0000 (11:19 +0800)
committerSage Weil <sage@inktank.com>
Tue, 4 Jun 2013 20:08:24 +0000 (13:08 -0700)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/MDCache.cc

index 872b60c736019a600b51561d338d3427acde5669..da1e795f8ed601a1d144b5f6a99083b9944a781a 100644 (file)
@@ -9157,7 +9157,7 @@ void MDCache::eval_stray(CDentry *dn)
       dout(20) << " pending recovery" << dendl;
       return;  // don't mess with file size probing
     }
-    if (in->get_num_ref() > (int)in->is_dirty()) {
+    if (in->get_num_ref() > (int)in->is_dirty() + (int)in->is_dirty_parent()) {
       dout(20) << " too many inode refs" << dendl;
       return;
     }
@@ -9450,6 +9450,9 @@ void MDCache::_purge_stray_logged(CDentry *dn, version_t pdv, LogSegment *ls)
   // drop inode
   if (in->is_dirty())
     in->mark_clean();
+  if (in->is_dirty_parent())
+    in->clear_dirty_parent();
+
   remove_inode(in);
 
   // drop dentry?