Commit b3649f82 authored by Wilfred Mallawa's avatar Wilfred Mallawa Committed by Christoph Hellwig
Browse files

nvmet: add a helper function for cqid checking



This patch adds a new helper function nvmet_check_io_cqid(). It is to be
used when parsing host commands for IO CQ creation/deletion and IO SQ
creation to ensure that the specified IO completion queue identifier
(CQID) is not 0 (Admin queue ID). This is a check that already occurs in
the nvmet_execute_x() functions prior to nvmet_check_cqid.

With the addition of this helper function, the CQ ID checks in the
nvmet_execute_x() function can be removed, and instead simply call
nvmet_check_io_cqid() in place of nvmet_check_cqid().

Signed-off-by: default avatarWilfred Mallawa <wilfred.mallawa@wdc.com>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarDamien Le Moal <dlemoal@kernel.org>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent c91a2012
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -96,12 +96,7 @@ static void nvmet_execute_delete_cq(struct nvmet_req *req)
		goto complete;
	}

	if (!cqid) {
		status = NVME_SC_QID_INVALID | NVME_STATUS_DNR;
		goto complete;
	}

	status = nvmet_check_cqid(ctrl, cqid);
	status = nvmet_check_io_cqid(ctrl, cqid);
	if (status != NVME_SC_SUCCESS)
		goto complete;

@@ -127,12 +122,7 @@ static void nvmet_execute_create_cq(struct nvmet_req *req)
		goto complete;
	}

	if (!cqid) {
		status = NVME_SC_QID_INVALID | NVME_STATUS_DNR;
		goto complete;
	}

	status = nvmet_check_cqid(ctrl, cqid);
	status = nvmet_check_io_cqid(ctrl, cqid);
	if (status != NVME_SC_SUCCESS)
		goto complete;

+7 −0
Original line number Diff line number Diff line
@@ -859,6 +859,13 @@ u16 nvmet_check_cqid(struct nvmet_ctrl *ctrl, u16 cqid)
	return NVME_SC_SUCCESS;
}

u16 nvmet_check_io_cqid(struct nvmet_ctrl *ctrl, u16 cqid)
{
	if (!cqid)
		return NVME_SC_QID_INVALID | NVME_STATUS_DNR;
	return nvmet_check_cqid(ctrl, cqid);
}

u16 nvmet_cq_create(struct nvmet_ctrl *ctrl, struct nvmet_cq *cq,
		    u16 qid, u16 size)
{
+1 −0
Original line number Diff line number Diff line
@@ -572,6 +572,7 @@ void nvmet_execute_get_features(struct nvmet_req *req);
void nvmet_execute_keep_alive(struct nvmet_req *req);

u16 nvmet_check_cqid(struct nvmet_ctrl *ctrl, u16 cqid);
u16 nvmet_check_io_cqid(struct nvmet_ctrl *ctrl, u16 cqid);
void nvmet_cq_setup(struct nvmet_ctrl *ctrl, struct nvmet_cq *cq, u16 qid,
		u16 size);
u16 nvmet_cq_create(struct nvmet_ctrl *ctrl, struct nvmet_cq *cq, u16 qid,