From 10687626e57815a2209b338f0ff5f31b16f13055 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Fri, 15 Jul 2016 15:39:03 -0700 Subject: [PATCH] nvmf: factor out common RDMA completion code All of the WC events that we handle map back to a request, so look it up before checking the opcode. Change-Id: I1b70a773374f64387df0a21a4f7fd64b26534b14 Signed-off-by: Daniel Verkamp --- lib/nvmf/rdma.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 598716749..10f045ac3 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -1094,11 +1094,12 @@ nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn) return -1; } + rdma_req = (struct spdk_nvmf_rdma_request *)wc.wr_id; + req = &rdma_req->req; + switch (wc.opcode) { case IBV_WC_SEND: SPDK_TRACELOG(SPDK_TRACE_RDMA, "CQ send completion\n"); - rdma_req = (struct spdk_nvmf_rdma_request *)wc.wr_id; - req = &rdma_req->req; if (spdk_nvmf_rdma_request_release(conn, req)) { return -1; } @@ -1110,15 +1111,11 @@ nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn) * flag in rdma_write, to trace rdma write latency */ SPDK_TRACELOG(SPDK_TRACE_RDMA, "CQ rdma write completion\n"); - rdma_req = (struct spdk_nvmf_rdma_request *)wc.wr_id; - req = &rdma_req->req; spdk_trace_record(TRACE_RDMA_WRITE_COMPLETE, 0, 0, (uint64_t)req, 0); break; case IBV_WC_RDMA_READ: SPDK_TRACELOG(SPDK_TRACE_RDMA, "CQ rdma read completion\n"); - rdma_req = (struct spdk_nvmf_rdma_request *)wc.wr_id; - req = &rdma_req->req; spdk_trace_record(TRACE_RDMA_READ_COMPLETE, 0, 0, (uint64_t)req, 0); rc = spdk_nvmf_request_exec(req); if (rc) { @@ -1129,8 +1126,7 @@ nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn) case IBV_WC_RECV: SPDK_TRACELOG(SPDK_TRACE_RDMA, "CQ recv completion\n"); - spdk_trace_record(TRACE_NVMF_IO_START, 0, 0, wc.wr_id, 0); - rdma_req = (struct spdk_nvmf_rdma_request *)wc.wr_id; + spdk_trace_record(TRACE_NVMF_IO_START, 0, 0, (uint64_t)req, 0); rc = nvmf_recv(rdma_req, &wc); if (rc < 0) { SPDK_ERRLOG("nvmf_recv processing failure\n");