From 3bec66015e35c469ab6b739aec5485fd0be1bf9d Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Wed, 1 Aug 2018 16:20:10 -0700 Subject: [PATCH] nvmf/rdma: Simplify spdk_nvmf_rdma_qp_drained No longer send an event to process the pending queue - just do it inline. Change-Id: I32716c9ecac3791de297c2a48529c15d220dbe6c Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/421044 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Changpeng Liu Reviewed-by: Jim Harris Reviewed-by: Seth Howell --- lib/nvmf/rdma.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index e7d83106a..250076328 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -1902,22 +1902,6 @@ spdk_nvmf_rdma_qpair_process_pending(struct spdk_nvmf_rdma_transport *rtransport } } -/* The recovery completion event handler to be executed in the rqpair - * poll group thread. It kicks off processing of the requests that are - * waiting for the rqpair is back online. - */ -static void -_spdk_nvmf_rdma_qpair_process_pending(void *arg) -{ - struct spdk_nvmf_rdma_qpair *rqpair; - struct spdk_nvmf_rdma_transport *rtransport; - - rqpair = arg; - rtransport = SPDK_CONTAINEROF(rqpair->qpair.transport, - struct spdk_nvmf_rdma_transport, transport); - spdk_nvmf_rdma_qpair_process_pending(rtransport, rqpair); -} - static void spdk_nvmf_rdma_drain_state_queue(struct spdk_nvmf_rdma_qpair *rqpair, enum spdk_nvmf_rdma_request_state state) @@ -1938,6 +1922,7 @@ spdk_nvmf_rdma_qp_drained(struct spdk_nvmf_rdma_qpair *rqpair) { int recovered; enum ibv_qp_state state, next_state; + struct spdk_nvmf_rdma_transport *rtransport; SPDK_NOTICELOG("IBV QP#%u drained\n", rqpair->qpair.qid); @@ -2009,7 +1994,10 @@ spdk_nvmf_rdma_qp_drained(struct spdk_nvmf_rdma_qpair *rqpair) state = next_state; } rqpair->qpair.state = SPDK_NVMF_QPAIR_ACTIVE; - spdk_thread_send_msg(rqpair->qpair.group->thread, _spdk_nvmf_rdma_qpair_process_pending, rqpair); + + rtransport = SPDK_CONTAINEROF(rqpair->qpair.transport, + struct spdk_nvmf_rdma_transport, transport); + spdk_nvmf_rdma_qpair_process_pending(rtransport, rqpair); return; error: