From: Adir Lev Date: Sun, 30 Apr 2017 11:34:43 +0000 (+0000) Subject: msg/async/rdma: check if fin message completed X-Git-Tag: v12.1.0~183^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F15624%2Fhead;p=ceph.git msg/async/rdma: check if fin message completed Change-Id: I9cb1e523be7b21127503a9252b09331a37bea204 Signed-off-by: Alexander Mikheev Signed-off-by: Adir Lev --- diff --git a/src/msg/async/rdma/RDMAStack.cc b/src/msg/async/rdma/RDMAStack.cc index 77cb4b7a9630..608c4f5c91ce 100644 --- a/src/msg/async/rdma/RDMAStack.cc +++ b/src/msg/async/rdma/RDMAStack.cc @@ -362,11 +362,16 @@ void RDMADispatcher::handle_tx_event(ibv_wc *cqe, int n) } } - // FIXME: why not tx? - if (global_infiniband->get_memory_manager()->is_tx_buffer(chunk->buffer)) + //TX completion may come either from regular send message or from 'fin' message. + //In the case of 'fin' wr_id points to the QueuePair. + if (global_infiniband->get_memory_manager()->is_tx_buffer(chunk->buffer)) { tx_chunks.push_back(chunk); - else + } else if (reinterpret_cast(response->wr_id)->get_local_qp_number() == response->qp_num ) { + ldout(cct, 1) << __func__ << " sending of the disconnect msg completed" << dendl; + } else { ldout(cct, 1) << __func__ << " not tx buffer, chunk " << chunk << dendl; + ceph_abort(); + } } perf_logger->inc(l_msgr_rdma_tx_total_wc, n);