[PATCH 5/9] nvme-fc: centralize admin tagset initialization

Chaitanya Kulkarni chaitanyak at nvidia.com
Fri Jan 28 01:23:53 PST 2022


(+CC James james.smart at broadcom.com)

On 1/28/22 1:20 AM, Chaitanya Kulkarni wrote:
> From: Chaitanya Kulkarni <kch at nvidia.com>
> 
> Add and use helper to remove duplicate code for admin tag initialization
> for all transports.
> 
> Signed-off-by: Chaitanya Kulkarni <kch at nvidia.com>
> ---
>   drivers/nvme/host/fc.c   | 12 +++---------
>   drivers/nvme/host/nvme.h | 17 +++++++++++++++++
>   2 files changed, 20 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
> index 23c896a138a3..ec2afedfa991 100644
> --- a/drivers/nvme/host/fc.c
> +++ b/drivers/nvme/host/fc.c
> @@ -3529,18 +3529,12 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
>   
>   	nvme_fc_init_queue(ctrl, 0);
>   
> -	memset(&ctrl->admin_tag_set, 0, sizeof(ctrl->admin_tag_set));
> -	ctrl->admin_tag_set.ops = &nvme_fc_admin_mq_ops;
> -	ctrl->admin_tag_set.queue_depth = NVME_AQ_MQ_TAG_DEPTH;
> -	ctrl->admin_tag_set.reserved_tags = NVMF_RESERVED_TAGS;
> -	ctrl->admin_tag_set.numa_node = ctrl->ctrl.numa_node;
> +	nvme_init_admin_tagset(&(ctrl->admin_tag_set), ctrl,
> +			       ctrl->ctrl.numa_node, &nvme_fc_admin_mq_ops,
> +			       BLK_MQ_F_NO_SCHED, NVMF_RESERVED_TAGS);
>   	ctrl->admin_tag_set.cmd_size =
>   		struct_size((struct nvme_fcp_op_w_sgl *)NULL, priv,
>   			    ctrl->lport->ops->fcprqst_priv_sz);
> -	ctrl->admin_tag_set.driver_data = ctrl;
> -	ctrl->admin_tag_set.nr_hw_queues = 1;
> -	ctrl->admin_tag_set.timeout = NVME_ADMIN_TIMEOUT;
> -	ctrl->admin_tag_set.flags = BLK_MQ_F_NO_SCHED;
>   
>   	ret = blk_mq_alloc_tag_set(&ctrl->admin_tag_set);
>   	if (ret)
> diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
> index f8658f984d64..6a3fd759415a 100644
> --- a/drivers/nvme/host/nvme.h
> +++ b/drivers/nvme/host/nvme.h
> @@ -938,4 +938,21 @@ static inline bool nvme_multi_css(struct nvme_ctrl *ctrl)
>   	return (ctrl->ctrl_config & NVME_CC_CSS_MASK) == NVME_CC_CSS_CSI;
>   }
>   
> +static inline void nvme_init_admin_tagset(struct blk_mq_tag_set *set,
> +					  void *driver_data, int numa_node,
> +					  const struct blk_mq_ops *ops,
> +					  unsigned int flags,
> +					  unsigned int reserved_tags)
> +{
> +	memset(set, 0, sizeof(*set));
> +	set->driver_data = driver_data;
> +	set->numa_node = numa_node;
> +	set->ops = ops;
> +	set->flags = flags;
> +	set->reserved_tags = reserved_tags;
> +	set->queue_depth = NVME_AQ_MQ_TAG_DEPTH;
> +	set->nr_hw_queues = 1;
> +	set->timeout = NVME_ADMIN_TIMEOUT;
> +}
> +
>   #endif /* _NVME_H */
> 



More information about the Linux-nvme mailing list