[PATCH] nvme-core: mark passthru requests RQF_QUIET flag
Alan Adamson
alan.adamson at oracle.com
Wed Apr 6 15:06:06 PDT 2022
> On Apr 6, 2022, at 10:21 AM, Keith Busch <kbusch at kernel.org> wrote:
>
> On Wed, Apr 06, 2022 at 05:01:46PM +0000, Chaitanya Kulkarni wrote:
>> On 4/6/22 09:52, Keith Busch wrote:
>>> On Wed, Apr 06, 2022 at 09:41:09AM -0700, Chaitanya Kulkarni wrote:
>>>> @@ -370,7 +370,8 @@ static inline void nvme_end_req(struct request *req)
>>>> {
>>>> blk_status_t status = nvme_error_status(nvme_req(req)->status);
>>>>
>>>> - if (unlikely(nvme_req(req)->status != NVME_SC_SUCCESS))
>>>> + if (unlikely(nvme_req(req)->status != NVME_SC_SUCCESS &&
>>>> + !(req->rq_flags & RQF_QUIET)))
>>>> nvme_log_error(req);
>>>> nvme_end_req_zoned(req);
>>>> nvme_trace_bio_complete(req);
>>>> @@ -651,6 +652,7 @@ void nvme_init_request(struct request *req, struct nvme_command *cmd)
>>>> cmd->common.flags &= ~NVME_CMD_SGL_ALL;
>>>>
>>>> req->cmd_flags |= REQ_FAILFAST_DRIVER;
>>>> + req->rq_flags |= RQF_QUIET;
>>>
>>> This defeats the admin error logging logic since every admin command comes
>>> through here. If you're sure we should do this, then I suppose you can remove
>>> that unreachable code.
>>
>> If you point out the unreachable code that will be great,
>> I'll keep looking meanwhile...
>
> The second half of nvme_log_error(), plus nvme_get_admin_opcode_str() and the
> array it defines are unreachable since all admin commands don't log errors with
> this change.
>
> You could skip the RQF_QUIET setting and check blk_rq_is_passthrough() instead.
Using RQF_QUIET or blk_rq_is_passrhrough() will mean no nvme admin-passthru command will log an error.
I ran into this using the blktests I’m coding up for verbose errors. Is this the behavior we want?
Alan
More information about the Linux-nvme
mailing list