[PATCH V2 2/6] nvme-core: use I/O timeout in nvme_submit_user_cmd
Chaitanya Kulkarni
chaitanya.kulkarni at wdc.com
Thu Sep 3 20:16:22 EDT 2020
In the function nvme_submit_user_cmd() it uses ADMIN_TIMEOUT when
caller doesn't specify value for the timeout variable. This function is
also called from the user I/O command contexts (nvme_submit_io,
nvme_user_cmdXXX)) where NVME_IO_TIMEOUT can be used instead of
ADMIN_TIMEOUT.
For now we don't set the request queue's queuedata for admin command.
When timeout is not specified based on the request queue's queuedata
set Admin timeout else I/O timeout.
Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni at wdc.com>
---
drivers/nvme/host/core.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index e6c980962d51..a2ef4249ce6a 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1086,7 +1086,14 @@ static int nvme_submit_user_cmd(struct request_queue *q,
if (IS_ERR(req))
return PTR_ERR(req);
- req->timeout = timeout ? timeout : ADMIN_TIMEOUT;
+ req->timeout = timeout;
+ /*
+ * For now admin request queue's queue data == NULL, if that assumption
+ * changes it should reflect here.
+ */
+ if (!req->timeout)
+ req->timeout = q->queuedata ? NVME_IO_TIMEOUT : ADMIN_TIMEOUT;
+
nvme_req(req)->flags |= NVME_REQ_USERCMD;
if (ubuffer && bufflen) {
--
2.22.1
More information about the Linux-nvme
mailing list