[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