[PATCH V5 3/7] nvme: add sysfs attribute to change admin timeout per nvme controller

Maurizio Lombardi mlombard at arkamax.eu
Thu May 14 22:54:03 PDT 2026


On Thu May 14, 2026 at 6:59 PM CEST, Mohamed Khalfella wrote:
> On Thu 2026-05-14 10:32:51 +0200, Maurizio Lombardi wrote:
>> Currently, there is no method to adjust the timeout values on a
>> per-controller basis with nvme admin queues.
>> Add an admin_timeout attribute to nvme so that different nvme controllers
>> which may have different timeout requirements can have custom admin
>> timeouts set.
>> 
>> The admin timeout is also applied to the fabrics queue (fabrics_q).
>> The fabrics queue is utilized for fabric-specific administrative and
>> control operations, such as Connect and Property Get/Set commands.
>> 
>> Reviewed-by: Daniel Wagner <dwagner at suse.de>
>> Reviewed-by: Sagi Grimberg <sagi at grimberg.me>
>> Signed-off-by: Maurizio Lombardi <mlombard at redhat.com>
>
> Reviewed-by: Mohamed Khalfella <mkhalfella at purestorage.com>

Thanks for the review.

>
>> ---
>>  drivers/nvme/host/core.c  |  1 +
>>  drivers/nvme/host/nvme.h  |  1 +
>>  drivers/nvme/host/pci.c   |  2 +-
>>  drivers/nvme/host/sysfs.c | 41 +++++++++++++++++++++++++++++++++++++++
>>  4 files changed, 44 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
>> index 84f295e3bf08..fe6dcd19cecb 100644
>> --- a/drivers/nvme/host/core.c
>> +++ b/drivers/nvme/host/core.c
>> @@ -5144,6 +5144,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,
>>  	memset(&ctrl->ka_cmd, 0, sizeof(ctrl->ka_cmd));
>>  	ctrl->ka_cmd.common.opcode = nvme_admin_keep_alive;
>>  	ctrl->ka_last_check_time = jiffies;
>> +	ctrl->admin_timeout = NVME_ADMIN_TIMEOUT;
>>  
>>  	BUILD_BUG_ON(NVME_DSM_MAX_RANGES * sizeof(struct nvme_dsm_range) >
>>  			PAGE_SIZE);
>
> nvme_alloc_admin_tag_set() uses NVME_ADMIN_TIMEOUT. Do we want to
> replace that with ctrl->admin_timeout?
>

That shouldn't be necessary. nvme_alloc_admin_tag_set() is only called
once during initial controller setup. Since the user cannot modify the
admin_timeout sysfs attribute until the controller reaches the LIVE state,
ctrl->admin_timeout will still just be the default NVME_ADMIN_TIMEOUT
at this stage.

Maurizio



More information about the Linux-nvme mailing list