Commit 59a3afa0 authored by Seth Howell's avatar Seth Howell Committed by Darek Stojaczyk
Browse files

nvmf/rdma: pass iov_base to spdk_mem_map_translate



We should be checking directly against the base of the iov when doing
memory map translations. The current behavior is to check against the
starting address of the buffer which is a close address, but not exactly
the same.

Change-Id: I7f65224a6836a814708438f2866d84ae22882216
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463893


Reviewed-by: default avatarBroadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatar <jiandong.zheng@broadcom.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 32e5d083
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1558,10 +1558,10 @@ nvmf_rdma_fill_buffers(struct spdk_nvmf_rdma_transport *rtransport,

		if (!g_nvmf_hooks.get_rkey) {
			wr->sg_list[i].lkey = ((struct ibv_mr *)spdk_mem_map_translate(device->map,
					       (uint64_t)rdma_req->buffers[iovcnt], &translation_len))->lkey;
					       (uint64_t)rdma_req->req.iov[iovcnt].iov_base, &translation_len))->lkey;
		} else {
			wr->sg_list[i].lkey = spdk_mem_map_translate(device->map,
					      (uint64_t)rdma_req->buffers[iovcnt], &translation_len);
					      (uint64_t)rdma_req->req.iov[iovcnt].iov_base, &translation_len);
		}

		remaining_length -= rdma_req->req.iov[iovcnt].iov_len;