Commit 0e6a32de authored by Seth Howell's avatar Seth Howell Committed by Jim Harris
Browse files

nvme_rdma/nvmf: add cb_fns to check mr contiguity



This is necessary to confirm that a buffer that spans a 2_MB boundary is
still in a single MR.

Change-Id: If0d14e514ab2197a0d2e3af4f565f56d50591210
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/435179


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
parent 9cec99b8
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -680,6 +680,13 @@ nvme_rdma_mr_map_notify(void *cb_ctx, struct spdk_mem_map *map,
	return rc;
}

static int
nvme_rdma_check_contiguous_entries(uint64_t addr_1, uint64_t addr_2)
{
	/* Two contiguous mappings will point to the same address which is the start of the RDMA MR. */
	return addr_1 == addr_2;
}

static int
nvme_rdma_register_mem(struct nvme_rdma_qpair *rqpair)
{
@@ -687,7 +694,7 @@ nvme_rdma_register_mem(struct nvme_rdma_qpair *rqpair)
	struct spdk_nvme_rdma_mr_map *mr_map;
	const struct spdk_mem_map_ops nvme_rdma_map_ops = {
		.notify_cb = nvme_rdma_mr_map_notify,
		.are_contiguous = NULL
		.are_contiguous = nvme_rdma_check_contiguous_entries
	};

	pthread_mutex_lock(&g_rdma_mr_maps_mutex);
+8 −1
Original line number Diff line number Diff line
@@ -1071,6 +1071,13 @@ spdk_nvmf_rdma_mem_notify(void *cb_ctx, struct spdk_mem_map *map,
	return 0;
}

static int
spdk_nvmf_rdma_check_contiguous_entries(uint64_t addr_1, uint64_t addr_2)
{
	/* Two contiguous mappings will point to the same address which is the start of the RDMA MR. */
	return addr_1 == addr_2;
}

typedef enum spdk_nvme_data_transfer spdk_nvme_data_transfer_t;

static spdk_nvme_data_transfer_t
@@ -1537,7 +1544,7 @@ spdk_nvmf_rdma_create(struct spdk_nvmf_transport_opts *opts)

	const struct spdk_mem_map_ops nvmf_rdma_map_ops = {
		.notify_cb = spdk_nvmf_rdma_mem_notify,
		.are_contiguous = NULL
		.are_contiguous = spdk_nvmf_rdma_check_contiguous_entries
	};

	rtransport = calloc(1, sizeof(*rtransport));