summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2013-04-02 15:46:51 +0800
committerYan, Zheng <zheng.z.yan@intel.com>2013-05-28 13:57:20 +0800
commit81d073fecb58e2294df12b71351321e6d2e69652 (patch)
tree4c8fd6cf96ab838cb63e65c8eeca6f780fed1f29
parent8b4e9911a4f9bafadc6fb6eed3fde3e378599761 (diff)
downloadceph-81d073fecb58e2294df12b71351321e6d2e69652.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>
-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 4ef6e8f19fa..9b49c109815 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();