On Fri, 2018-02-23 at 23:36 +0800, Ming Lei wrote: > __blk_mq_requeue_request() covers two cases: > > - one is that the requeued request is added to hctx->dispatch, such as > blk_mq_dispatch_rq_list() > > - another case is that the request is requeued to io scheduler, such as > blk_mq_requeue_request(). > > We should call io sched's .requeue_request callback only for the 2nd > case. I think it would have been more clear if it would have been mentioned that blk_mq_sched_requeue_request() must only be called for requests that have been started. Anyway, if you add the following to this patch: Fixes: bd166ef183c2 ("blk-mq-sched: add framework for MQ capable IO schedulers") Cc: stable@xxxxxxxxxxxxxxx then you can also add: Reviewed-by: Bart Van Assche <bart.vanassche@xxxxxxx>