nvmf/rdma: use req->iov consistently

Use req->iov as needed, to make it easier to remove req->data later.

Signed-off-by: John Levon <john.levon@nutanix.com>
Change-Id: Ie625f374e846f7e6afd6a5d143a5174d27d419b4
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16256
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
John Levon 2023-01-11 20:44:19 +00:00 committed by Tomasz Zawadzki
parent fd05a2ff47
commit e1413e9197
2 changed files with 28 additions and 18 deletions

View File

@ -1836,13 +1836,13 @@ nvmf_rdma_request_parse_sgl(struct spdk_nvmf_rdma_transport *rtransport,
}
rdma_req->num_outstanding_data_wr = 0;
req->data = rdma_req->recv->buf + offset;
req->data_from_pool = false;
req->length = sgl->unkeyed.length;
req->iov[0].iov_base = req->data;
req->iov[0].iov_base = rdma_req->recv->buf + offset;
req->iov[0].iov_len = req->length;
req->iovcnt = 1;
req->data = req->iov[0].iov_base;
return 0;
} else if (sgl->generic.type == SPDK_NVME_SGL_TYPE_LAST_SEGMENT &&
@ -2077,7 +2077,7 @@ nvmf_rdma_request_process(struct spdk_nvmf_rdma_transport *rtransport,
break;
}
if (!rdma_req->req.data) {
if (rdma_req->req.iovcnt == 0) {
/* No buffers available. */
rgroup->stat.pending_data_buffer++;
break;

View File

@ -132,7 +132,6 @@ reset_nvmf_rdma_request(struct spdk_nvmf_rdma_request *rdma_req)
rdma_req->req.length = 0;
rdma_req->req.data_from_pool = false;
rdma_req->req.data = NULL;
rdma_req->data.wr.num_sge = 0;
rdma_req->data.wr.wr.rdma.remote_addr = 0;
rdma_req->data.wr.wr.rdma.rkey = 0;
@ -214,7 +213,8 @@ test_spdk_nvmf_rdma_request_parse_sgl(void)
CU_ASSERT(rc == 0);
CU_ASSERT(rdma_req.req.data_from_pool == true);
CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size / 2);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT((uint64_t)rdma_req.req.iovcnt == 1);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 1);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -256,7 +256,7 @@ test_spdk_nvmf_rdma_request_parse_sgl(void)
CU_ASSERT(rc == 0);
CU_ASSERT(rdma_req.req.data_from_pool == false);
CU_ASSERT(rdma_req.req.data == NULL);
CU_ASSERT(rdma_req.req.iovcnt == 0);
CU_ASSERT(rdma_req.data.wr.num_sge == 0);
CU_ASSERT(rdma_req.req.buffers[0] == NULL);
CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0);
@ -275,7 +275,8 @@ test_spdk_nvmf_rdma_request_parse_sgl(void)
rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
CU_ASSERT(rc == 0);
CU_ASSERT(rdma_req.req.data == (void *)0xDDDD);
CU_ASSERT(rdma_req.req.iovcnt == 1);
CU_ASSERT(rdma_req.req.iov[0].iov_base == (void *)0xDDDD);
CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.in_capsule_data_size);
CU_ASSERT(rdma_req.req.data_from_pool == false);
@ -444,7 +445,8 @@ test_spdk_nvmf_rdma_request_parse_sgl(void)
SPDK_CU_ASSERT_FATAL(rc == 0);
CU_ASSERT(rdma_req.req.data_from_pool == true);
CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == (((uint64_t)&bufs[0] + NVMF_DATA_BUFFER_MASK) &
CU_ASSERT(rdma_req.req.iovcnt == 4);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == (((uint64_t)&bufs[0] + NVMF_DATA_BUFFER_MASK) &
~NVMF_DATA_BUFFER_MASK));
CU_ASSERT(rdma_req.data.wr.num_sge == 4);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
@ -465,7 +467,8 @@ test_spdk_nvmf_rdma_request_parse_sgl(void)
SPDK_CU_ASSERT_FATAL(rc == 0);
CU_ASSERT(rdma_req.req.data_from_pool == true);
CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 4);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 4);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -490,7 +493,8 @@ test_spdk_nvmf_rdma_request_parse_sgl(void)
SPDK_CU_ASSERT_FATAL(rc == 0);
CU_ASSERT(rdma_req.req.data_from_pool == true);
CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == (((uint64_t)&bufs[0] + NVMF_DATA_BUFFER_MASK) &
CU_ASSERT(rdma_req.req.iovcnt == 4);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == (((uint64_t)&bufs[0] + NVMF_DATA_BUFFER_MASK) &
~NVMF_DATA_BUFFER_MASK));
CU_ASSERT(rdma_req.data.wr.num_sge == 4);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
@ -932,7 +936,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.length == data_bs * 4);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 1);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 1);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -960,7 +965,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.length == data_bs * 4);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 2);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 5);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -997,7 +1003,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.length == data_bs);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == data_bs + md_size);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 2);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 1);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -1032,7 +1039,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.length == data_bs * 4);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 1);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 1);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -1060,7 +1068,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.length == data_bs * 4);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 2);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 2);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -1089,7 +1098,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.length == data_bs * 6);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 6);
CU_ASSERT((uint64_t)rdma_req.req.data == 0x2000);
CU_ASSERT(rdma_req.req.iovcnt == 2);
CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 7);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -1138,7 +1148,7 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.iovcnt == 2);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 16);
CU_ASSERT(rdma_req.req.data == aligned_buffer);
CU_ASSERT(rdma_req.req.iov[0].iov_base == aligned_buffer);
CU_ASSERT(rdma_req.data.wr.num_sge == 16);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
@ -1181,7 +1191,7 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void)
CU_ASSERT(rdma_req.req.iovcnt == 3);
CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 2);
CU_ASSERT(rdma_req.req.data == (void *)0x2000);
CU_ASSERT(rdma_req.req.iov[0].iov_base == (void *)0x2000);
CU_ASSERT(rdma_req.data.wr.num_sge == 2);
CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);