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: v12.0.1~400^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4978e57419482384279d7e784a625f5e5c10961a;p=ceph-ci.git mds/StrayManager: aviod reusing deleted inode in StrayManager::_purge_stray_logged Signed-off-by: Zhi Zhang --- diff --git a/src/mds/StrayManager.cc b/src/mds/StrayManager.cc index f62c73dab49..57fb7ca29c1 100644 --- a/src/mds/StrayManager.cc +++ b/src/mds/StrayManager.cc @@ -301,11 +301,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; @@ -314,6 +309,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)