From e48475b776c7ce26a35e4d86f3b751c38b5a4181 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 17 Mar 2022 17:43:54 +0900 Subject: [PATCH] nvmf/rdma: Move get length with DIF from parse_sgl() to fill_iovs() This is another small code cleanup. Signed-off-by: Shuhei Matsumoto Change-Id: I49ed19d025c96c87be3b7782536fd98570bd2569 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11966 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: fengchunsong Reviewed-by: Aleksey Marchuk --- lib/nvmf/rdma.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index f3605ceae..d19e0da21 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -1581,8 +1581,7 @@ nvmf_rdma_calc_num_wrs(uint32_t length, uint32_t io_unit_size, uint32_t block_si static int nvmf_rdma_request_fill_iovs(struct spdk_nvmf_rdma_transport *rtransport, struct spdk_nvmf_rdma_device *device, - struct spdk_nvmf_rdma_request *rdma_req, - uint32_t length) + struct spdk_nvmf_rdma_request *rdma_req) { struct spdk_nvmf_rdma_qpair *rqpair; struct spdk_nvmf_rdma_poll_group *rgroup; @@ -1590,6 +1589,7 @@ nvmf_rdma_request_fill_iovs(struct spdk_nvmf_rdma_transport *rtransport, struct ibv_send_wr *wr = &rdma_req->data.wr; int rc; uint32_t num_wrs = 1; + uint32_t length; rqpair = SPDK_CONTAINEROF(req->qpair, struct spdk_nvmf_rdma_qpair, qpair); rgroup = rqpair->poller->group; @@ -1597,6 +1597,13 @@ nvmf_rdma_request_fill_iovs(struct spdk_nvmf_rdma_transport *rtransport, /* rdma wr specifics */ nvmf_rdma_setup_request(rdma_req); + length = req->length; + if (spdk_unlikely(req->dif_enabled)) { + req->dif.orig_length = length; + length = spdk_dif_get_length_with_md(length, &req->dif.dif_ctx); + req->dif.elba_length = length; + } + rc = spdk_nvmf_request_get_buffers(req, &rgroup->group, &rtransport->transport, length); if (rc != 0) { @@ -1790,13 +1797,7 @@ nvmf_rdma_request_parse_sgl(struct spdk_nvmf_rdma_transport *rtransport, /* fill request length and populate iovs */ req->length = length; - if (spdk_unlikely(req->dif_enabled)) { - req->dif.orig_length = length; - length = spdk_dif_get_length_with_md(length, &req->dif.dif_ctx); - req->dif.elba_length = length; - } - - rc = nvmf_rdma_request_fill_iovs(rtransport, device, rdma_req, length); + rc = nvmf_rdma_request_fill_iovs(rtransport, device, rdma_req); if (spdk_unlikely(rc < 0)) { if (rc == -EINVAL) { SPDK_ERRLOG("SGL length exceeds the max I/O size\n");