]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix underwater dentry cleanup
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 2 Apr 2013 07:46:51 +0000 (15:46 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Tue, 28 May 2013 05:57:20 +0000 (13:57 +0800)
If the underwater dentry is a remove link, we shouldn't mark the
inode clean

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/CDir.cc

index 4ef6e8f19fa336e14af3c877040ce83ea58f1d03..9b49c109815c8f1ee2ecd7e1171236ac432dcb54 100644 (file)
@@ -1651,7 +1651,7 @@ void CDir::_fetched(bufferlist &bl, const string& want_dn)
       dout(10) << "_fetched  had underwater dentry " << *dn << ", marking clean" << dendl;
       dn->mark_clean();
 
-      if (dn->get_linkage()->get_inode()) {
+      if (dn->get_linkage()->is_primary()) {
        assert(dn->get_linkage()->get_inode()->get_version() <= got_fnode.version);
        dout(10) << "_fetched  had underwater inode " << *dn->get_linkage()->get_inode() << ", marking clean" << dendl;
        dn->get_linkage()->get_inode()->mark_clean();