On Fri, Jul 27, 2018 at 09:20:42AM -0700, Bart Van Assche wrote:
> +     ret = req->q->mq_ops->timeout(req, reserved);
> +     /*
> +      * BLK_EH_DONT_RESET_TIMER means that the block driver either
> +      * completed the request or still owns the request and will
> +      * continue processing the timeout asynchronously. In the
> +      * latter case, if blk_mq_complete_request() was called while
> +      * the timeout handler was in progress, ignore that call.
> +      */
> +     if (ret == BLK_EH_DONT_RESET_TIMER)
> +             return;

This is how completions get lost.

Reply via email to