]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: no assertion on inode being purging in find_ino_peers() 18174/head
authorZhi Zhang <willzzhang@tencent.com>
Mon, 9 Oct 2017 06:33:05 +0000 (14:33 +0800)
committerZhi Zhang <willzzhang@tencent.com>
Tue, 10 Oct 2017 02:53:26 +0000 (10:53 +0800)
Signed-off-by: Zhi Zhang <zhangz.david@outlook.com>
src/mds/MDCache.cc

index 17e3c4323aa6cc33ae0357b5e1e6e8570a06dde5..b16b62cfa995f1c1f6751d1b71cf96b5287bd212 100644 (file)
@@ -8813,7 +8813,12 @@ void MDCache::open_ino(inodeno_t ino, int64_t pool, MDSInternalContextBase* fin,
 void MDCache::find_ino_peers(inodeno_t ino, MDSInternalContextBase *c, mds_rank_t hint)
 {
   dout(5) << "find_ino_peers " << ino << " hint " << hint << dendl;
-  assert(!have_inode(ino));
+  CInode *in = get_inode(ino);
+  if (in && in->state_test(CInode::STATE_PURGING)) {
+    c->complete(-ESTALE);
+    return;
+  }
+  assert(!in);
   
   ceph_tid_t tid = ++find_ino_peer_last_tid;
   find_ino_peer_info_t& fip = find_ino_peer[tid];