If process handled two or more devices,there will not be trace some devices plug-operation. Signed-off-by: Jianpeng Ma --- block/blk-core.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c index 7a3abc6..034f186 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1521,11 +1521,25 @@ get_rq: struct request *__rq; __rq = list_entry_rq(plug->list.prev); - if (__rq->q != q) + if (__rq->q != q) { plug->should_sort = 1; + trace_block_plug(q); + } + } else { + struct request *__rq; + list_for_each_entry_reverse(__rq, &plug->list, + queuelist) { + if (__rq->q == q) { + list_add_tail(&req->queuelist, + &__rq->queuelist); + goto stat_acct; + } + } + trace_block_plug(q); } } list_add_tail(&req->queuelist, &plug->list); +stat_acct: drive_stat_acct(req, 1); } else { spin_lock_irq(q->queue_lock); -- 1.7.9.5 {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I