Commit ad178ba9 authored by Max Gurtovoy's avatar Max Gurtovoy Committed by Keith Busch
Browse files

nvme-rdma: clamp queue size according to ctrl cap



If a controller is configured with metadata support, clamp the maximal
queue size to be 128 since there are more resources that are needed
for metadata operations. Otherwise, clamp it to 256.

Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarIsrael Rukshin <israelr@nvidia.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMax Gurtovoy <mgurtovoy@nvidia.com>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent 36144964
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -1006,6 +1006,7 @@ static int nvme_rdma_setup_ctrl(struct nvme_rdma_ctrl *ctrl, bool new)
{
	int ret;
	bool changed;
	u16 max_queue_size;

	ret = nvme_rdma_configure_admin_queue(ctrl, new);
	if (ret)
@@ -1030,11 +1031,16 @@ static int nvme_rdma_setup_ctrl(struct nvme_rdma_ctrl *ctrl, bool new)
			ctrl->ctrl.opts->queue_size, ctrl->ctrl.sqsize + 1);
	}

	if (ctrl->ctrl.sqsize + 1 > NVME_RDMA_MAX_QUEUE_SIZE) {
	if (ctrl->ctrl.max_integrity_segments)
		max_queue_size = NVME_RDMA_MAX_METADATA_QUEUE_SIZE;
	else
		max_queue_size = NVME_RDMA_MAX_QUEUE_SIZE;

	if (ctrl->ctrl.sqsize + 1 > max_queue_size) {
		dev_warn(ctrl->ctrl.device,
			 "ctrl sqsize %u > max queue size %u, clamping down\n",
			ctrl->ctrl.sqsize + 1, NVME_RDMA_MAX_QUEUE_SIZE);
		ctrl->ctrl.sqsize = NVME_RDMA_MAX_QUEUE_SIZE - 1;
			 ctrl->ctrl.sqsize + 1, max_queue_size);
		ctrl->ctrl.sqsize = max_queue_size - 1;
	}

	if (ctrl->ctrl.sqsize + 1 > ctrl->ctrl.maxcmd) {