[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