rdma: simplify nvmf_rdma_fill_buffers
Just cleaning up a few things like variable names and ordering to make the whole function more readable. Change-Id: I1503cdb43ddd73e063d6e57e9ff0cf2a06e79728 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467445 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
This commit is contained in:
parent
8253ed5e31
commit
98233769f4
@ -1465,40 +1465,35 @@ nvmf_rdma_fill_buffers(struct spdk_nvmf_rdma_transport *rtransport,
|
|||||||
uint32_t length)
|
uint32_t length)
|
||||||
{
|
{
|
||||||
uint64_t translation_len;
|
uint64_t translation_len;
|
||||||
uint32_t remaining_length = length;
|
|
||||||
uint32_t iovcnt;
|
|
||||||
uint32_t i = 0;
|
|
||||||
|
|
||||||
|
wr->num_sge = 0;
|
||||||
while (remaining_length) {
|
while (length) {
|
||||||
iovcnt = req->iovcnt;
|
req->iov[req->iovcnt].iov_base = (void *)((uintptr_t)(req->buffers[req->iovcnt] +
|
||||||
req->iov[iovcnt].iov_base = (void *)((uintptr_t)(req->buffers[iovcnt] +
|
|
||||||
NVMF_DATA_BUFFER_MASK) &
|
NVMF_DATA_BUFFER_MASK) &
|
||||||
~NVMF_DATA_BUFFER_MASK);
|
~NVMF_DATA_BUFFER_MASK);
|
||||||
req->iov[iovcnt].iov_len = spdk_min(remaining_length,
|
req->iov[req->iovcnt].iov_len = spdk_min(length,
|
||||||
rtransport->transport.opts.io_unit_size);
|
rtransport->transport.opts.io_unit_size);
|
||||||
req->iovcnt++;
|
translation_len = req->iov[req->iovcnt].iov_len;
|
||||||
wr->sg_list[i].addr = (uintptr_t)(req->iov[iovcnt].iov_base);
|
|
||||||
wr->sg_list[i].length = req->iov[iovcnt].iov_len;
|
|
||||||
translation_len = req->iov[iovcnt].iov_len;
|
|
||||||
|
|
||||||
if (!g_nvmf_hooks.get_rkey) {
|
if (!g_nvmf_hooks.get_rkey) {
|
||||||
wr->sg_list[i].lkey = ((struct ibv_mr *)spdk_mem_map_translate(device->map,
|
wr->sg_list[wr->num_sge].lkey = ((struct ibv_mr *)spdk_mem_map_translate(device->map,
|
||||||
(uint64_t)req->iov[iovcnt].iov_base, &translation_len))->lkey;
|
(uint64_t)req->iov[req->iovcnt].iov_base, &translation_len))->lkey;
|
||||||
} else {
|
} else {
|
||||||
wr->sg_list[i].lkey = spdk_mem_map_translate(device->map,
|
wr->sg_list[wr->num_sge].lkey = spdk_mem_map_translate(device->map,
|
||||||
(uint64_t)req->iov[iovcnt].iov_base, &translation_len);
|
(uint64_t)req->iov[req->iovcnt].iov_base, &translation_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
remaining_length -= req->iov[iovcnt].iov_len;
|
if (translation_len < req->iov[req->iovcnt].iov_len) {
|
||||||
|
|
||||||
if (translation_len < req->iov[iovcnt].iov_len) {
|
|
||||||
SPDK_ERRLOG("Data buffer split over multiple RDMA Memory Regions\n");
|
SPDK_ERRLOG("Data buffer split over multiple RDMA Memory Regions\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
|
length -= req->iov[req->iovcnt].iov_len;
|
||||||
|
wr->sg_list[wr->num_sge].addr = (uintptr_t)(req->iov[req->iovcnt].iov_base);
|
||||||
|
wr->sg_list[wr->num_sge].length = req->iov[req->iovcnt].iov_len;
|
||||||
|
req->iovcnt++;
|
||||||
|
wr->num_sge++;
|
||||||
}
|
}
|
||||||
wr->num_sge = i;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user