diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index b356e3a16..d9733fbf1 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -642,6 +642,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) { @@ -649,7 +656,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); diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 1a66efc1c..060b63792 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -1031,6 +1031,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 @@ -1495,7 +1502,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));