]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
blk-mq: mq plug list breakage
authorShaohua Li <shli@fusionio.com>
Tue, 29 Oct 2013 18:01:03 +0000 (12:01 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 29 Oct 2013 18:01:03 +0000 (12:01 -0600)
We switched to plug mq_list for mq, but some code are still using old list.

Signed-off-by: Shaohua Li <shli@fusionio.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-core.c
block/blk-mq.c

index 9677c6525ed8d9de49e45ec13fc20719c1695c39..936876ab662dffcbb3c0f23f8819debbdf90b348 100644 (file)
@@ -1401,13 +1401,19 @@ bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio,
        struct blk_plug *plug;
        struct request *rq;
        bool ret = false;
+       struct list_head *plug_list;
 
        plug = current->plug;
        if (!plug)
                goto out;
        *request_count = 0;
 
-       list_for_each_entry_reverse(rq, &plug->list, queuelist) {
+       if (q->mq_ops)
+               plug_list = &plug->mq_list;
+       else
+               plug_list = &plug->list;
+
+       list_for_each_entry_reverse(rq, plug_list, queuelist) {
                int el_ret;
 
                if (rq->q == q)
index 2dc8de86d0d2591bae4e9543709471fba0b1e91d..88d4e864d4c0f512a5f858f01651f71074937ec3 100644 (file)
@@ -950,7 +950,7 @@ static void blk_mq_make_request(struct request_queue *q, struct bio *bio)
 
                if (plug) {
                        blk_mq_bio_to_request(rq, bio);
-                       if (list_empty(&plug->list))
+                       if (list_empty(&plug->mq_list))
                                trace_block_plug(q);
                        else if (request_count >= BLK_MAX_REQUEST_COUNT) {
                                blk_flush_plug_list(plug, false);