} else {
ldout(cct, 1) << __func__ << " it's not forwardly stopped by us, reenable=" << conn << dendl;
conn->fault();
- erase_qpn(qpn);
+ erase_qpn_lockless(qpn);
}
} else {
ldout(cct, 1) << __func__ << " ibv_get_async_event: dev=" << global_infiniband->get_device()->ctxt
return it->second.second;
}
-void RDMADispatcher::erase_qpn(uint32_t qpn)
+void RDMADispatcher::erase_qpn_lockless(uint32_t qpn)
{
- Mutex::Locker l(lock);
auto it = qp_conns.find(qpn);
if (it == qp_conns.end())
return ;
--num_qp_conn;
}
+void RDMADispatcher::erase_qpn(uint32_t qpn)
+{
+ Mutex::Locker l(lock);
+ erase_qpn_lockless(qpn);
+}
+
void RDMADispatcher::handle_pre_fork()
{
done = true;
}
RDMAStack* get_stack() { return stack; }
RDMAConnectedSocketImpl* get_conn_lockless(uint32_t qp);
+ void erase_qpn_lockless(uint32_t qpn);
void erase_qpn(uint32_t qpn);
Infiniband::CompletionQueue* get_tx_cq() const { return tx_cq; }
Infiniband::CompletionQueue* get_rx_cq() const { return rx_cq; }