Daniel Wagner eaa498
From: Chaitanya Kulkarni <kch@nvidia.com>
Daniel Wagner eaa498
Date: Sun, 10 Apr 2022 20:12:49 -0700
Daniel Wagner eaa498
Subject: nvme: don't print verbose errors for internal passthrough requests
Daniel Wagner eaa498
Patch-mainline: v5.18-rc3
Daniel Wagner eaa498
Git-commit: b42b6f4485e3f0970e11f73df6202eeaf9f53a3e
Daniel Wagner eaa498
References: bsc#1202187
Daniel Wagner eaa498
Daniel Wagner eaa498
Use the RQF_QUIET flag to skip the newly added verbose error reporting,
Daniel Wagner eaa498
and set the flag in __nvme_submit_sync_cmd, which is used for most
Daniel Wagner eaa498
internal passthrough requests where we do expect errors (e.g. due to
Daniel Wagner eaa498
probing for optional functionality).  This is similar to what the SCSI
Daniel Wagner eaa498
verbose error logging does.
Daniel Wagner eaa498
Daniel Wagner eaa498
Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
Daniel Wagner eaa498
Reviewed-by: Alan Adamson <alan.adamson@oracle.com>
Daniel Wagner eaa498
Reviewed-by: Keith Busch <kbusch@kernel.org>
Daniel Wagner eaa498
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Daniel Wagner eaa498
Tested-by: Alan Adamson <alan.adamson@oracle.com>
Daniel Wagner eaa498
Tested-by: Yi Zhang <yi.zhang@redhat.com>
Daniel Wagner eaa498
Signed-off-by: Christoph Hellwig <hch@lst.de>
Daniel Wagner eaa498
Acked-by: Daniel Wagner <dwagner@suse.de>
Daniel Wagner eaa498
---
Daniel Wagner eaa498
 drivers/nvme/host/core.c |    3 ++-
Daniel Wagner eaa498
 1 file changed, 2 insertions(+), 1 deletion(-)
Daniel Wagner eaa498
Daniel Wagner eaa498
--- a/drivers/nvme/host/core.c
Daniel Wagner eaa498
+++ b/drivers/nvme/host/core.c
Daniel Wagner eaa498
@@ -361,7 +361,7 @@ static inline void nvme_end_req(struct r
Daniel Wagner eaa498
 {
Daniel Wagner eaa498
 	blk_status_t status = nvme_error_status(nvme_req(req)->status);
Daniel Wagner eaa498
 
Daniel Wagner eaa498
-	if (unlikely(nvme_req(req)->status != NVME_SC_SUCCESS))
Daniel Wagner eaa498
+	if (unlikely(nvme_req(req)->status && !(req->rq_flags & RQF_QUIET)))
Daniel Wagner eaa498
 		nvme_log_error(req);
Daniel Wagner eaa498
 
Daniel Wagner eaa498
 	if (IS_ENABLED(CONFIG_BLK_DEV_ZONED) &&
Daniel Wagner eaa498
@@ -1099,6 +1099,7 @@ int __nvme_submit_sync_cmd(struct reques
Daniel Wagner eaa498
 			goto out;
Daniel Wagner eaa498
 	}
Daniel Wagner eaa498
 
Daniel Wagner eaa498
+	req->rq_flags |= RQF_QUIET;
Daniel Wagner eaa498
 	ret = nvme_execute_rq(NULL, req, at_head);
Daniel Wagner eaa498
 	if (result && ret >= 0)
Daniel Wagner eaa498
 		*result = nvme_req(req)->result;