From: Yan, Zheng Date: Thu, 2 Feb 2017 10:56:12 +0000 (+0800) Subject: mds: drop superfluous MMDSOpenInoReply X-Git-Tag: v12.0.1~266^2~20 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=20d43372fd230a8231f8240bebe8d4123302dd97;p=ceph.git mds: drop superfluous MMDSOpenInoReply Superfluous MMDSOpenInoReply can causes MDCache::handle_open_ino_reply() to call MDCache::do_open_ino() in improper state. Fixes: http://tracker.ceph.com/issues/18754 Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index e5773dd30e82..c6144e103a3c 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -8680,11 +8680,10 @@ void MDCache::handle_open_ino_reply(MMDSOpenInoReply *m) inodeno_t ino = m->ino; mds_rank_t from = mds_rank_t(m->get_source().num()); - if (opening_inodes.count(ino)) { - open_ino_info_t& info = opening_inodes[ino]; - - if (info.checking == from) - info.checking = MDS_RANK_NONE; + auto it = opening_inodes.find(ino); + if (it != opening_inodes.end() && it->second.checking == from) { + open_ino_info_t& info = it->second; + info.checking = MDS_RANK_NONE; info.checked.insert(from); CInode *in = get_inode(ino);