blk-mq-sched: change ->dispatch_requests() to ->dispatch_request()
authorJens Axboe <axboe@fb.com>
Thu, 26 Jan 2017 19:40:07 +0000 (12:40 -0700)
committerJens Axboe <axboe@fb.com>
Fri, 27 Jan 2017 15:20:35 +0000 (08:20 -0700)
commitc13660a08c8b3bb49def4374bfd414aaaa564662
treec7a61741aba75e320838865f176092c07af37f95
parent50e1dab86aa2c10cbca2f754aae9542169403141
blk-mq-sched: change ->dispatch_requests() to ->dispatch_request()

When we invoke dispatch_requests(), the scheduler empties everything
into the passed in list. This isn't always a good thing, since it
means that we remove items that we could have potentially merged
with.

Change the function to dispatch single requests at the time. If
we do that, we can backoff exactly at the point where the device
can't consume more IO, and leave the rest with the scheduler for
better merging and future dispatch decision making.

Signed-off-by: Jens Axboe <axboe@fb.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Tested-by: Hannes Reinecke <hare@suse.com>
block/blk-mq-sched.c
block/blk-mq.c
block/mq-deadline.c
include/linux/elevator.h