OSDN Git Service

blk-mq: fix failure to decrement plug count on single rq removal
authorJens Axboe <axboe@kernel.dk>
Wed, 28 Nov 2018 00:07:17 +0000 (17:07 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 28 Nov 2018 13:29:23 +0000 (06:29 -0700)
If we yank a 'same_queue_rq' request off the plug list, we should
also decrement the cached request count.

Fixes: 5f0ed774ed29 ("block: sum requests in the plug structure")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c

index 7b7dff8..a82830f 100644 (file)
@@ -1946,8 +1946,10 @@ static blk_qc_t blk_mq_make_request(struct request_queue *q, struct bio *bio)
                 */
                if (list_empty(&plug->mq_list))
                        same_queue_rq = NULL;
-               if (same_queue_rq)
+               if (same_queue_rq) {
                        list_del_init(&same_queue_rq->queuelist);
+                       plug->rq_count--;
+               }
                list_add_tail(&rq->queuelist, &plug->mq_list);
                plug->rq_count++;