summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2013-04-02 15:46:51 +0800
committerSage Weil <sage@inktank.com>2013-06-25 19:48:19 -0700
commitccb3dd5ad5533ca4e9b656b4e3df31025a5f2017 (patch)
tree3f58027e8ced88542db79a7e12fdac752432bc6f
parent3020c5ea07a91475a7261dc2b810f5b61a1ae1f2 (diff)
downloadceph-ccb3dd5ad5533ca4e9b656b4e3df31025a5f2017.tar.gz
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 <zheng.z.yan@intel.com> (cherry picked from commit 81d073fecb58e2294df12b71351321e6d2e69652)
-rw-r--r--src/mds/CDir.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc
index 4670a1887eb..d0738be7f9a 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();