> Il giorno 23 feb 2018, alle ore 16:36, Ming Lei <ming.lei@xxxxxxxxxx> 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 <paolo.valente@xxxxxxxxxx> > Cc: Paolo Valente <paolo.valente@xxxxxxxxxx> > Cc: Omar Sandoval <osandov@xxxxxx> > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > 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 >