]> git.apps.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)
committerSage Weil <sage@inktank.com>
Wed, 26 Jun 2013 02:48:19 +0000 (19:48 -0700)
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)

src/mds/CDir.cc

index 4670a1887eb692a13f67daf076dff0891cc5435e..d0738be7f9a06a860f56a439f0e97b9101e2ae79 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();