[PATCH 2/3] nvme-core: move gencounter check into nvme_cid()

Keith Busch kbusch at kernel.org
Fri Dec 10 07:43:24 PST 2021


On Fri, Dec 10, 2021 at 03:21:15AM -0800, Chaitanya Kulkarni wrote:
> -	if (!(ctrl->quirks & NVME_QUIRK_SKIP_CID_GEN))
> -		nvme_req(req)->genctr++;
>  	cmd->common.command_id = nvme_cid(req);
>  	trace_nvme_setup_cmd(req, cmd);
>  	return ret;
> diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
> index 98d7627cfdce..2be0191e1a1f 100644
> --- a/drivers/nvme/host/nvme.h
> +++ b/drivers/nvme/host/nvme.h
> @@ -511,6 +511,8 @@ struct nvme_ctrl_ops {
>  
>  static inline u16 nvme_cid(struct request *rq)
>  {
> +	if (!(nvme_req(rq)->ctrl->quirks & NVME_QUIRK_SKIP_CID_GEN))
> +		nvme_req(rq)->genctr++;
>  	return nvme_cid_install_genctr(nvme_req(rq)->genctr) | rq->tag;
>  }

No, this will incrememnt the counter every time someone queries the
command id for this request, which happens in multiple places. The
counter can't be modified for the lifetime of the request.



More information about the Linux-nvme mailing list