From: Yan, Zheng Date: Mon, 28 Aug 2017 09:13:31 +0000 (+0800) Subject: client: fix message order check in handle_cap_export() X-Git-Tag: v13.0.1~1020^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3c31256a4addcc4eca30c62109e33f77224258c2;p=ceph.git client: fix message order check in handle_cap_export() If importer mds' cap already exists, but cap ID mismatches, client should have received corresponding import message (the imported caps got released later). Because cap ID does not change as long as client holds the caps. Signed-off-by: "Yan, Zheng" --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 4cfcb5ef5c50..b10df4e0da7b 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -4771,7 +4771,7 @@ void Client::handle_cap_export(MetaSession *session, Inode *in, MClientCaps *m) MetaSession *tsession = _get_or_open_mds_session(peer_mds); if (in->caps.count(peer_mds)) { Cap *tcap = in->caps[peer_mds]; - if (tcap->cap_id != m->peer.cap_id || + if (tcap->cap_id == m->peer.cap_id && ceph_seq_cmp(tcap->seq, m->peer.seq) < 0) { tcap->cap_id = m->peer.cap_id; tcap->seq = m->peer.seq - 1;