[PATCHv3] nvme: quiet user passthrough command errors

Alan Adamson alan.adamson at oracle.com
Fri Oct 28 12:08:51 PDT 2022



> On Oct 28, 2022, at 7:44 AM, Keith Busch <kbusch at meta.com> wrote:
> 
> From: Keith Busch <kbusch at kernel.org>
> 
> The driver is spamming the kernel logs for entirely harmless errors from
> user space submitting unsupported commands. Just silence the errors.
> The application has direct access to command status, so there's no need
> to log these.
> 
> And since every passthrough command now uses the quiet flag, move the
> setting to the common initializer.
> 
> Cc: Alan Adamson <alan.adamson at oracle.com>
> Reviewed-by: Daniel Wagner <dwagner at suse.de>
> Reviewed-by: Kanchan Joshi <joshi.k at samsung.com>
> Signed-off-by: Keith Busch <kbusch at kernel.org>
> ---
> v2->v3:
> 
>  Removed the last open-coded RQF_QUIET flag users since the setting is
>  redundant with this generic change.
> 
> drivers/nvme/host/core.c | 4 +---
> drivers/nvme/host/pci.c  | 2 --
> 2 files changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 686c55cb5d1a..543782dcfba9 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -657,7 +657,7 @@ static inline void nvme_clear_nvme_request(struct request *req)
> 	nvme_req(req)->status = 0;
> 	nvme_req(req)->retries = 0;
> 	nvme_req(req)->flags = 0;
> -	req->rq_flags |= RQF_DONTPREP;
> +	req->rq_flags |= RQF_DONTPREP | RQF_QUIET;
> }
> 
> /* initialize a passthrough request */
> @@ -1037,7 +1037,6 @@ int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd,
> 			goto out;
> 	}
> 
> -	req->rq_flags |= RQF_QUIET;
> 	ret = nvme_execute_rq(req, at_head);
> 	if (result && ret >= 0)
> 		*result = nvme_req(req)->result;
> @@ -1226,7 +1225,6 @@ static void nvme_keep_alive_work(struct work_struct *work)
> 	rq->timeout = ctrl->kato * HZ;
> 	rq->end_io = nvme_keep_alive_end_io;
> 	rq->end_io_data = ctrl;
> -	rq->rq_flags |= RQF_QUIET;
> 	blk_execute_rq_nowait(rq, false);
> }
> 
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index 72b5c1addbff..8cd92283cbfc 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -1436,7 +1436,6 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req)
> 
> 	abort_req->end_io = abort_endio;
> 	abort_req->end_io_data = NULL;
> -	abort_req->rq_flags |= RQF_QUIET;
> 	blk_execute_rq_nowait(abort_req, false);
> 
> 	/*
> @@ -2485,7 +2484,6 @@ static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode)
> 	req->end_io_data = nvmeq;
> 
> 	init_completion(&nvmeq->delete_done);
> -	req->rq_flags |= RQF_QUIET;
> 	blk_execute_rq_nowait(req, false);
> 	return 0;
> }
> -- 
> 2.30.2
> 

Since all requests (not just user space initiated requests) call nvme_clear_nvme_requests(), all requests will set RQF_QUIET, so no error will get logged.

Alan




More information about the Linux-nvme mailing list