From 4323ec25c42e791b915e9218118c6fc2244c5d5b Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Thu, 2 Mar 2017 11:44:59 +0800 Subject: [PATCH] msg/async/rdma: keep qp_conns lock to prevent connection alive Signed-off-by: Haomai Wang --- src/msg/async/rdma/RDMAStack.cc | 14 ++------------ src/msg/async/rdma/RDMAStack.h | 1 - 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/msg/async/rdma/RDMAStack.cc b/src/msg/async/rdma/RDMAStack.cc index d3ccfbe1ad2b5..29d8d75d79d17 100644 --- a/src/msg/async/rdma/RDMAStack.cc +++ b/src/msg/async/rdma/RDMAStack.cc @@ -107,7 +107,8 @@ void RDMADispatcher::handle_async_event() uint64_t qpn = async_event.element.qp->qp_num; ldout(cct, 10) << __func__ << " event associated qp=" << async_event.element.qp << " evt: " << ibv_event_type_str(async_event.event_type) << dendl; - RDMAConnectedSocketImpl *conn = get_conn_by_qp(qpn); + Mutex::Locker l(lock); + RDMAConnectedSocketImpl *conn = get_conn_lockless(qpn); if (!conn) { ldout(cct, 1) << __func__ << " missing qp_num=" << qpn << " discard event" << dendl; } else { @@ -277,17 +278,6 @@ int RDMADispatcher::register_qp(QueuePair *qp, RDMAConnectedSocketImpl* csi) return fd; } -RDMAConnectedSocketImpl* RDMADispatcher::get_conn_by_qp(uint32_t qp) -{ - Mutex::Locker l(lock); - auto it = qp_conns.find(qp); - if (it == qp_conns.end()) - return nullptr; - if (it->second.first->is_dead()) - return nullptr; - return it->second.second; -} - RDMAConnectedSocketImpl* RDMADispatcher::get_conn_lockless(uint32_t qp) { auto it = qp_conns.find(qp); diff --git a/src/msg/async/rdma/RDMAStack.h b/src/msg/async/rdma/RDMAStack.h index f4b09779eef0f..c4aed9d8d9aa6 100644 --- a/src/msg/async/rdma/RDMAStack.h +++ b/src/msg/async/rdma/RDMAStack.h @@ -127,7 +127,6 @@ class RDMADispatcher : public CephContext::ForkWatcher { } } RDMAStack* get_stack() { return stack; } - RDMAConnectedSocketImpl* get_conn_by_qp(uint32_t qp); RDMAConnectedSocketImpl* get_conn_lockless(uint32_t qp); void erase_qpn(uint32_t qpn); Infiniband::CompletionQueue* get_tx_cq() const { return tx_cq; } -- 2.39.5