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

Chaitanya Kulkarni chaitanyak at nvidia.com
Fri Dec 10 09:46:59 PST 2021


On 12/10/21 7:43 AM, Keith Busch wrote:
> External email: Use caution opening links or attachments
> 
> 
> 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.
> 

Yes, the right thing to do here is to create a new stub for
CONFIG_NVME_DEBUG_USE_GENCTR and !CONFIG_NVME_DEBUG_USE_GENCTR
case and move the quick check in there, will send out V2.



More information about the Linux-nvme mailing list