[PATCH V2 1/1] nvmet: don't use BLK_MQ_REQ_NOWAIT for passthru
Logan Gunthorpe
logang at deltatee.com
Tue Oct 20 19:15:52 EDT 2020
On 2020-10-20 5:14 p.m., Chaitanya Kulkarni wrote:
> By default, we set the passthru request allocation flag such that it
> returns the error in the following code path and we fail the I/O when
> BLK_MQ_REQ_NOWAIT is used for request allocation :-
>
> nvme_alloc_request()
> blk_mq_alloc_request()
> blk_mq_queue_enter()
> if (flag & BLK_MQ_REQ_NOWAIT)
> return -EBUSY; <-- return if busy.
>
> On some controllers using BLK_MQ_REQ_NOWAIT ends up in I/O error where
> the controller is perfectly healthy and not in a degraded state.
>
> Block layer request allocation does allow us to wait instead of
> immediately returning the error when we BLK_MQ_REQ_NOWAIT flag is not
> used. This has shown to fix the I/O error problem reported under
> heavy random write workload.
>
> Remove the BLK_MQ_REQ_NOWAIT parameter for passthru request allocation
> which resolves this issue.
>
> Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni at wdc.com>
Makes sense to me:
Reviewed-by: Logan Gunthorpe <logang at deltatee.com>
More information about the Linux-nvme
mailing list