Commit 2f7a7e5d authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

nvme-tcp: split nvme_tcp_alloc_tagset



Split nvme_tcp_alloc_tagset into one helper for the admin tag_set and
one for the I/O tag set.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent a7f7b711
Loading
Loading
Loading
Loading
+41 −41
Original line number Diff line number Diff line
@@ -1687,15 +1687,12 @@ static int nvme_tcp_start_queue(struct nvme_ctrl *nctrl, int idx)
	return ret;
}

static struct blk_mq_tag_set *nvme_tcp_alloc_tagset(struct nvme_ctrl *nctrl,
		bool admin)
static int nvme_tcp_alloc_admin_tag_set(struct nvme_ctrl *nctrl)
{
	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
	struct blk_mq_tag_set *set;
	struct blk_mq_tag_set *set = &ctrl->admin_tag_set;
	int ret;

	if (admin) {
		set = &ctrl->admin_tag_set;
	memset(set, 0, sizeof(*set));
	set->ops = &nvme_tcp_admin_mq_ops;
	set->queue_depth = NVME_AQ_MQ_TAG_DEPTH;
@@ -1706,8 +1703,18 @@ static struct blk_mq_tag_set *nvme_tcp_alloc_tagset(struct nvme_ctrl *nctrl,
	set->driver_data = ctrl;
	set->nr_hw_queues = 1;
	set->timeout = NVME_ADMIN_TIMEOUT;
	} else {
		set = &ctrl->tag_set;
	ret = blk_mq_alloc_tag_set(set);
	if (!ret)
		nctrl->admin_tagset = set;
	return ret;
}

static int nvme_tcp_alloc_tag_set(struct nvme_ctrl *nctrl)
{
	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
	struct blk_mq_tag_set *set = &ctrl->tag_set;
	int ret;

	memset(set, 0, sizeof(*set));
	set->ops = &nvme_tcp_mq_ops;
	set->queue_depth = nctrl->sqsize + 1;
@@ -1719,13 +1726,10 @@ static struct blk_mq_tag_set *nvme_tcp_alloc_tagset(struct nvme_ctrl *nctrl,
	set->nr_hw_queues = nctrl->queue_count - 1;
	set->timeout = NVME_IO_TIMEOUT;
	set->nr_maps = nctrl->opts->nr_poll_queues ? HCTX_MAX_TYPES : 2;
	}

	ret = blk_mq_alloc_tag_set(set);
	if (ret)
		return ERR_PTR(ret);

	return set;
	if (!ret)
		nctrl->tagset = set;
	return ret;
}

static void nvme_tcp_free_admin_queue(struct nvme_ctrl *ctrl)
@@ -1901,11 +1905,9 @@ static int nvme_tcp_configure_io_queues(struct nvme_ctrl *ctrl, bool new)
		return ret;

	if (new) {
		ctrl->tagset = nvme_tcp_alloc_tagset(ctrl, false);
		if (IS_ERR(ctrl->tagset)) {
			ret = PTR_ERR(ctrl->tagset);
		ret = nvme_tcp_alloc_tag_set(ctrl);
		if (ret)
			goto out_free_io_queues;
		}

		ret = nvme_ctrl_init_connect_q(ctrl);
		if (ret)
@@ -1970,11 +1972,9 @@ static int nvme_tcp_configure_admin_queue(struct nvme_ctrl *ctrl, bool new)
		return error;

	if (new) {
		ctrl->admin_tagset = nvme_tcp_alloc_tagset(ctrl, true);
		if (IS_ERR(ctrl->admin_tagset)) {
			error = PTR_ERR(ctrl->admin_tagset);
		error = nvme_tcp_alloc_admin_tag_set(ctrl);
		if (error)
			goto out_free_queue;
		}

		ctrl->fabrics_q = blk_mq_init_queue(ctrl->admin_tagset);
		if (IS_ERR(ctrl->fabrics_q)) {