nvmf: conn_poll now returns a count of requests

Change-Id: Ic239bfa072905bbb65574e344d6a060cb4ce44e5
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Ben Walker 2016-07-22 14:33:42 -07:00
parent 6beb310cf3
commit 04a0ac723c

View File

@ -1111,17 +1111,20 @@ spdk_nvmf_rdma_fini(void)
return 0; return 0;
} }
/* Returns the number of times that spdk_nvmf_request_exec was called,
* or -1 on error.
*/
static int static int
nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn) spdk_nvmf_rdma_poll(struct spdk_nvmf_conn *conn)
{ {
struct ibv_wc wc; struct ibv_wc wc;
struct spdk_nvmf_rdma_conn *rdma_conn = get_rdma_conn(conn); struct spdk_nvmf_rdma_conn *rdma_conn = get_rdma_conn(conn);
struct spdk_nvmf_rdma_request *rdma_req; struct spdk_nvmf_rdma_request *rdma_req;
struct spdk_nvmf_request *req; struct spdk_nvmf_request *req;
int rc; int rc, count;
int i;
for (i = 0; i < rdma_conn->queue_depth; i++) { count = 0;
while (true) {
rc = ibv_poll_cq(rdma_conn->cq, 1, &wc); rc = ibv_poll_cq(rdma_conn->cq, 1, &wc);
if (rc == 0) // No completions at this time if (rc == 0) // No completions at this time
break; break;
@ -1172,6 +1175,7 @@ nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn)
SPDK_ERRLOG("request_exec error %d after RDMA Read completion\n", rc); SPDK_ERRLOG("request_exec error %d after RDMA Read completion\n", rc);
return -1; return -1;
} }
count++;
break; break;
case IBV_WC_RECV: case IBV_WC_RECV:
@ -1199,6 +1203,7 @@ nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn)
SPDK_ERRLOG("Command execution failed\n"); SPDK_ERRLOG("Command execution failed\n");
return -1; return -1;
} }
count++;
} else { } else {
/* Start transfer of data from host to target */ /* Start transfer of data from host to target */
rc = nvmf_post_rdma_read(req); rc = nvmf_post_rdma_read(req);
@ -1215,7 +1220,7 @@ nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn)
} }
} }
return 0; return count;
} }
static void static void
@ -1244,7 +1249,7 @@ const struct spdk_nvmf_transport spdk_nvmf_transport_rdma = {
.req_complete = spdk_nvmf_rdma_request_complete, .req_complete = spdk_nvmf_rdma_request_complete,
.conn_fini = nvmf_rdma_conn_cleanup, .conn_fini = nvmf_rdma_conn_cleanup,
.conn_poll = nvmf_check_rdma_completions, .conn_poll = spdk_nvmf_rdma_poll,
.listen_addr_discover = nvmf_rdma_discover, .listen_addr_discover = nvmf_rdma_discover,
}; };