From: Zhi Zhang Date: Fri, 10 Feb 2017 02:56:46 +0000 (+0800) Subject: mds/StrayManager: aviod reusing deleted inode in StrayManager::_purge_stray_logged X-Git-Tag: v11.2.1~137^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F14570%2Fhead;p=ceph.git mds/StrayManager: aviod reusing deleted inode in StrayManager::_purge_stray_logged Signed-off-by: Zhi Zhang (cherry picked from commit 4978e57419482384279d7e784a625f5e5c10961a) --- diff --git a/src/mds/StrayManager.cc b/src/mds/StrayManager.cc index d7f449b66bd..70db149dfca 100644 --- a/src/mds/StrayManager.cc +++ b/src/mds/StrayManager.cc @@ -300,11 +300,6 @@ void StrayManager::_purge_stray_logged(CDentry *dn, version_t pdv, LogSegment *l dn->state_clear(CDentry::STATE_PURGING | CDentry::STATE_PURGINGPINNED); dn->put(CDentry::PIN_PURGING); - // drop inode - if (in->is_dirty()) - in->mark_clean(); - in->mdcache->remove_inode(in); - // drop dentry? if (dn->is_new()) { dout(20) << " dn is new, removing" << dendl; @@ -313,6 +308,11 @@ void StrayManager::_purge_stray_logged(CDentry *dn, version_t pdv, LogSegment *l } else { in->mdcache->touch_dentry_bottom(dn); // drop dn as quickly as possible. } + + // drop inode + if (in->is_dirty()) + in->mark_clean(); + in->mdcache->remove_inode(in); } void StrayManager::enqueue(CDentry *dn, bool trunc)