> Il giorno 23 feb 2018, alle ore 16:36, Ming Lei <[email protected]> ha 
> scritto:
> 
> __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.
> 

Acked-by: Paolo Valente <[email protected]>

> Cc: Paolo Valente <[email protected]>
> Cc: Omar Sandoval <[email protected]>
> Signed-off-by: Ming Lei <[email protected]>
> ---
> block/blk-mq.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index 357492712b0e..16e83e6df404 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -712,7 +712,6 @@ static void __blk_mq_requeue_request(struct request *rq)
> 
>       trace_block_rq_requeue(q, rq);
>       wbt_requeue(q->rq_wb, &rq->issue_stat);
> -     blk_mq_sched_requeue_request(rq);
> 
>       if (blk_mq_rq_state(rq) != MQ_RQ_IDLE) {
>               blk_mq_rq_update_state(rq, MQ_RQ_IDLE);
> @@ -725,6 +724,9 @@ void blk_mq_requeue_request(struct request *rq, bool 
> kick_requeue_list)
> {
>       __blk_mq_requeue_request(rq);
> 
> +     /* this request will be re-inserted to io scheduler queue */
> +     blk_mq_sched_requeue_request(rq);
> +
>       BUG_ON(blk_queued_rq(rq));
>       blk_mq_add_to_requeue_list(rq, true, kick_requeue_list);
> }
> -- 
> 2.9.5
> 

Reply via email to