block: avoid unnecessary plug list flush
get_request_wait() could sleep and flush the plug list. If the list is already flushed, don't flush again. Signed-off-by: Shaohua Li <shaohua.li@intel.com> Reviewed-by: Namhyung Kim <namhyung@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>hifive-unleashed-5.1
parent
0007a4c90a
commit
3540d5e89b
|
@ -1379,15 +1379,17 @@ get_rq:
|
||||||
*/
|
*/
|
||||||
if (list_empty(&plug->list))
|
if (list_empty(&plug->list))
|
||||||
trace_block_plug(q);
|
trace_block_plug(q);
|
||||||
else if (!plug->should_sort) {
|
else {
|
||||||
struct request *__rq;
|
if (!plug->should_sort) {
|
||||||
|
struct request *__rq;
|
||||||
|
|
||||||
__rq = list_entry_rq(plug->list.prev);
|
__rq = list_entry_rq(plug->list.prev);
|
||||||
if (__rq->q != q)
|
if (__rq->q != q)
|
||||||
plug->should_sort = 1;
|
plug->should_sort = 1;
|
||||||
|
}
|
||||||
|
if (request_count >= BLK_MAX_REQUEST_COUNT)
|
||||||
|
blk_flush_plug_list(plug, false);
|
||||||
}
|
}
|
||||||
if (request_count >= BLK_MAX_REQUEST_COUNT)
|
|
||||||
blk_flush_plug_list(plug, false);
|
|
||||||
list_add_tail(&req->queuelist, &plug->list);
|
list_add_tail(&req->queuelist, &plug->list);
|
||||||
drive_stat_acct(req, 1);
|
drive_stat_acct(req, 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue