nvmf/rdma: Fix req->length was not cleared when nvmf_rdma_fill_buffers() fails
In nvmf_rdma_requst_fill_iovs_multi_sgl(), length of descriptors are accumulated into req->length. However, req->length was not cleared when nvmf_rdma_fill_buffers() fails in the middle. This patch fixes it. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I80a55d90d09c8af46d570e017d342afd69f41996 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/469199 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com> Reviewed-by: Seth Howell <seth.howell@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
This commit is contained in:
parent
d409da0c84
commit
f0c212614a
@ -1769,6 +1769,7 @@ nvmf_rdma_request_fill_iovs_multi_sgl(struct spdk_nvmf_rdma_transport *rtranspor
|
||||
assert(current_wr != NULL);
|
||||
|
||||
req->iovcnt = 0;
|
||||
req->length = 0;
|
||||
desc = (struct spdk_nvme_sgl_descriptor *)rdma_req->recv->buf + inline_segment->address;
|
||||
for (i = 0; i < num_sgl_descriptors; i++) {
|
||||
/* The descriptors must be keyed data block descriptors with an address, not an offset. */
|
||||
@ -1779,7 +1780,6 @@ nvmf_rdma_request_fill_iovs_multi_sgl(struct spdk_nvmf_rdma_transport *rtranspor
|
||||
}
|
||||
|
||||
current_wr->num_sge = 0;
|
||||
req->length += desc->keyed.length;
|
||||
|
||||
rc = nvmf_rdma_fill_buffers(rtransport, rgroup, device, req, current_wr,
|
||||
desc->keyed.length);
|
||||
@ -1788,6 +1788,7 @@ nvmf_rdma_request_fill_iovs_multi_sgl(struct spdk_nvmf_rdma_transport *rtranspor
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
req->length += desc->keyed.length;
|
||||
current_wr->wr.rdma.rkey = desc->keyed.key;
|
||||
current_wr->wr.rdma.remote_addr = desc->address;
|
||||
current_wr = current_wr->next;
|
||||
|
Loading…
Reference in New Issue
Block a user