[PATCH V3 4/8] nvme: add sysfs attribute to change IO timeout per nvme controller

Maurizio Lombardi mlombard at arkamax.eu
Mon Apr 27 02:13:43 PDT 2026


On Mon Apr 27, 2026 at 11:11 AM CEST, Daniel Wagner wrote:
> On Fri, Apr 10, 2026 at 09:39:20AM +0200, Maurizio Lombardi wrote:
>> Currently, there is no method to adjust the timeout values on a
>> per controller basis with nvme I/O queues.
>> Add an io_timeout attribute to nvme so that different nvme controllers
>> which may have different timeout requirements can have custom
>> I/O timeouts set.
>> 
>> Signed-off-by: Maurizio Lombardi <mlombard at redhat.com>
>> ---
>>  drivers/nvme/host/core.c  |  2 ++
>>  drivers/nvme/host/nvme.h  |  1 +
>>  drivers/nvme/host/sysfs.c | 47 +++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 50 insertions(+)
>> 
>> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
>> index 6dc3d273623c..1b676fd4d454 100644
>> --- a/drivers/nvme/host/core.c
>> +++ b/drivers/nvme/host/core.c
>> @@ -4197,6 +4197,7 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, struct nvme_ns_info *info)
>>  		mutex_unlock(&ctrl->namespaces_lock);
>>  		goto out_unlink_ns;
>>  	}
>> +	blk_queue_rq_timeout(ns->queue, ctrl->io_timeout);
>>  	nvme_ns_add_to_ctrl_list(ns);
>>  	mutex_unlock(&ctrl->namespaces_lock);
>>  	synchronize_srcu(&ctrl->srcu);
>> @@ -5136,6 +5137,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,
>>  	ctrl->ka_cmd.common.opcode = nvme_admin_keep_alive;
>>  	ctrl->ka_last_check_time = jiffies;
>>  	ctrl->admin_timeout = NVME_ADMIN_TIMEOUT;
>> +	ctrl->io_timeout = NVME_IO_TIMEOUT;
>
> Should this be initialized with the defaults from the module load time?


Yes, note that NVME_IO_TIMEOUT is a macro that depends on the
"nvme_io_timeout" module parameter set at load time.

Maurizio




More information about the Linux-nvme mailing list