msg/async/rdma: check if fin message completed

Change-Id: I9cb1e523be7b21127503a9252b09331a37bea204
Signed-off-by: Alexander Mikheev <alexm@mellanox.com>
Signed-off-by: Adir Lev <adirl@mellanox.com>
This commit is contained in:
Adir Lev 2017-04-30 11:34:43 +00:00
parent 9f259cb923
commit f4af675f68

View File

@ -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<QueuePair*>(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);