diff --git a/block/blk-mq.c b/block/blk-mq.c index a9138235b87053c9d88a472f0d788cb08f80a229..fa77ce3ff6922be102dc3a99aed955653065444a 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1154,8 +1154,10 @@ bool blk_mq_dispatch_rq_list(struct request_queue *q, struct list_head *list, rq = list_first_entry(list, struct request, queuelist); hctx = blk_mq_map_queue(rq->q, rq->mq_ctx->cpu); - if (!got_budget && !blk_mq_get_dispatch_budget(hctx)) + if (!got_budget && !blk_mq_get_dispatch_budget(hctx)) { + blk_mq_put_driver_tag(rq); break; + } if (!blk_mq_get_driver_tag(rq)) { /*