From fd05a2ff47dd5d7a1c9875a6190541ae94a12484 Mon Sep 17 00:00:00 2001 From: John Levon Date: Sat, 7 Jan 2023 20:33:01 +0000 Subject: [PATCH] nvmf/tcp: use req->iov consistently Use req->iov as needed, to make it easier to remove req->data later. Signed-off-by: John Levon Change-Id: I4095e3c4089b730db123705d0168cd409375cc43 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16196 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris --- lib/nvmf/tcp.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/nvmf/tcp.c b/lib/nvmf/tcp.c index 0f6a1e057..4aa6210ac 100644 --- a/lib/nvmf/tcp.c +++ b/lib/nvmf/tcp.c @@ -2360,7 +2360,7 @@ nvmf_tcp_req_parse_sgl(struct spdk_nvmf_tcp_req *tcp_req, req->data = req->iov[0].iov_base; SPDK_DEBUGLOG(nvmf_tcp, "Request %p took %d buffer/s from central pool, and data=%p\n", - tcp_req, req->iovcnt, req->data); + tcp_req, req->iovcnt, req->iov[0].iov_base); return 0; } else if (sgl->generic.type == SPDK_NVME_SGL_TYPE_DATA_BLOCK && @@ -2407,8 +2407,8 @@ nvmf_tcp_req_parse_sgl(struct spdk_nvmf_tcp_req *tcp_req, SPDK_DEBUGLOG(nvmf_tcp, "Getting a buffer from control msg list\n"); tgroup = SPDK_CONTAINEROF(group, struct spdk_nvmf_tcp_poll_group, group); assert(tgroup->control_msg_list); - req->data = nvmf_tcp_control_msg_get(tgroup->control_msg_list); - if (!req->data) { + req->iov[0].iov_base = nvmf_tcp_control_msg_get(tgroup->control_msg_list); + if (!req->iov[0].iov_base) { /* No available buffers. Queue this request up. */ SPDK_DEBUGLOG(nvmf_tcp, "No available ICD buffers. Queueing request %p\n", tcp_req); return 0; @@ -2420,18 +2420,18 @@ nvmf_tcp_req_parse_sgl(struct spdk_nvmf_tcp_req *tcp_req, goto fatal_err; } } else { - req->data = tcp_req->buf; + req->iov[0].iov_base = tcp_req->buf; } req->length = length; req->data_from_pool = false; + req->data = req->iov[0].iov_base; if (spdk_unlikely(req->dif_enabled)) { length = spdk_dif_get_length_with_md(length, &req->dif.dif_ctx); req->dif.elba_length = length; } - req->iov[0].iov_base = req->data; req->iov[0].iov_len = length; req->iovcnt = 1; @@ -2802,7 +2802,7 @@ nvmf_tcp_req_process(struct spdk_nvmf_tcp_transport *ttransport, break; } - if (!tcp_req->req.data) { + if (tcp_req->req.iovcnt < 1) { SPDK_DEBUGLOG(nvmf_tcp, "No buffer allocated for tcp_req(%p) on tqpair(%p\n)", tcp_req, tqpair); /* No buffers available. */ @@ -3000,7 +3000,8 @@ nvmf_tcp_req_process(struct spdk_nvmf_tcp_transport *ttransport, tgroup = SPDK_CONTAINEROF(group, struct spdk_nvmf_tcp_poll_group, group); assert(tgroup->control_msg_list); SPDK_DEBUGLOG(nvmf_tcp, "Put buf to control msg list\n"); - nvmf_tcp_control_msg_put(tgroup->control_msg_list, tcp_req->req.data); + nvmf_tcp_control_msg_put(tgroup->control_msg_list, + tcp_req->req.iov[0].iov_base); } else if (tcp_req->req.zcopy_bdev_io != NULL) { /* If the request has an unreleased zcopy bdev_io, it's either a * read, a failed write, or the qpair is being disconnected */