[PATCH v2] nvme: Let the blocklayer set timeouts for requests
Heyne, Maximilian
mheyne at amazon.de
Thu Dec 4 11:34:26 PST 2025
On Thu, Dec 04, 2025 at 09:13:35AM -0700, Keith Busch wrote:
> On Thu, Dec 04, 2025 at 02:11:50PM +0000, Heyne, Maximilian wrote:
> > @@ -724,10 +724,8 @@ void nvme_init_request(struct request *req, struct nvme_command *cmd)
> > struct nvme_ns *ns = req->q->disk->private_data;
> >
> > logging_enabled = ns->head->passthru_err_log_enabled;
> > - req->timeout = NVME_IO_TIMEOUT;
> > } else { /* no queuedata implies admin queue */
> > logging_enabled = nr->ctrl->passthru_err_log_enabled;
> > - req->timeout = NVME_ADMIN_TIMEOUT;
> > }
>
> I was trying to think of any in-kernel path using __submit_sync_cmd with
> an IO queue, and quick search shows there's just one: zns report zones.
>
> Everything else uses the admin queue, which doesn't have a sysfs tunable
> for its request_queue's default timeout. All we have is the nvme module
> parameter, which is writable after loading. Since that's the only way a
> user can modify the default time for that queue, I think we need to
> leave that req->timeout value as-is.
Ok sound like a v3 is needed where I only delete the line with
NVME_IO_TIMEOUT but leave the NVME_ADMIN_TIMEOUT and add a comment about
it. Will prepare such a patch.
Thanks for you reviews.
Amazon Web Services Development Center Germany GmbH
Tamara-Danz-Str. 13
10243 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Christof Hellmis
Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
Sitz: Berlin
Ust-ID: DE 365 538 597
More information about the Linux-nvme
mailing list