]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - block/blk-mq.c
blk-mq-sched: make completed_request() callback more useful
[mirror_ubuntu-bionic-kernel.git] / block / blk-mq.c
index 7138cd98146ec2661136cb2ae17a75f6c9e88de0..e2ef7b4609243d507c4e4a75cb7edf3dca07f89c 100644 (file)
@@ -350,7 +350,7 @@ void __blk_mq_finish_request(struct blk_mq_hw_ctx *hctx, struct blk_mq_ctx *ctx,
        if (rq->tag != -1)
                blk_mq_put_tag(hctx, hctx->tags, ctx, rq->tag);
        if (sched_tag != -1)
-               blk_mq_sched_completed_request(hctx, rq);
+               blk_mq_put_tag(hctx, hctx->sched_tags, ctx, sched_tag);
        blk_mq_sched_restart(hctx);
        blk_queue_exit(q);
 }
@@ -444,6 +444,9 @@ static void __blk_mq_complete_request(struct request *rq)
 {
        struct request_queue *q = rq->q;
 
+       if (rq->internal_tag != -1)
+               blk_mq_sched_completed_request(rq);
+
        blk_mq_stat_add(rq);
 
        if (!q->softirq_done_fn)