From: Yan, Zheng Date: Tue, 2 Apr 2013 07:46:51 +0000 (+0800) Subject: mds: fix underwater dentry cleanup X-Git-Tag: v0.61.5~42 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ccb3dd5ad5533ca4e9b656b4e3df31025a5f2017;p=ceph.git mds: fix underwater dentry cleanup If the underwater dentry is a remove link, we shouldn't mark the inode clean Signed-off-by: Yan, Zheng (cherry picked from commit 81d073fecb58e2294df12b71351321e6d2e69652) --- diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc index 4670a1887eb69..d0738be7f9a06 100644 --- a/src/mds/CDir.cc +++ b/src/mds/CDir.cc @@ -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();