From: Yan, Zheng Date: Wed, 25 Mar 2015 08:15:44 +0000 (+0800) Subject: client: don't clear COMPLETE flag when trimming null dentry X-Git-Tag: v9.0.0~75^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ba62027189c2773681279c918f0315fb9d418f6a;p=ceph.git client: don't clear COMPLETE flag when trimming null dentry Signed-off-by: Yan, Zheng --- diff --git a/src/client/Client.cc b/src/client/Client.cc index a649f2276eb2..1927de52931c 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -612,10 +612,13 @@ void Client::trim_dentry(Dentry *dn) ldout(cct, 15) << "trim_dentry unlinking dn " << dn->name << " in dir " << hex << dn->dir->parent_inode->ino << dendl; - dn->dir->release_count++; - if (dn->dir->parent_inode->flags & I_COMPLETE) { - ldout(cct, 10) << " clearing (I_COMPLETE|I_DIR_ORDERED) on " << *dn->dir->parent_inode << dendl; - dn->dir->parent_inode->flags &= ~(I_COMPLETE | I_DIR_ORDERED); + if (dn->inode) { + dn->dir->release_count++; + if (dn->dir->parent_inode->flags & I_COMPLETE) { + ldout(cct, 10) << " clearing (I_COMPLETE|I_DIR_ORDERED) on " + << *dn->dir->parent_inode << dendl; + dn->dir->parent_inode->flags &= ~(I_COMPLETE | I_DIR_ORDERED); + } } unlink(dn, false, false); // drop dir, drop dentry }