cfq-iosched: change dispatch logic to deal with single requests at the time
authorJens Axboe <jens.axboe@oracle.com>
Tue, 7 Apr 2009 06:51:19 +0000 (08:51 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Tue, 7 Apr 2009 06:51:19 +0000 (08:51 +0200)
commit2f5cb7381b737e24c8046fd4aeab571fb71315f5
tree27b82d748bdf99296b8a914c51dad2fbea90aea3
parent3fbed4c61abd8458896e38633d10110cb5a589d4
cfq-iosched: change dispatch logic to deal with single requests at the time

The IO scheduler core calls into the IO scheduler dispatch_request hook
to move requests from the IO scheduler and into the driver dispatch
list. It only does so when the dispatch list is empty. CFQ moves several
requests to the dispatch list, which can cause higher latencies if we
suddenly have to switch to some important sync IO. Change the logic to
move one request at the time instead.

This should almost be functionally equivalent to what we did before,
except that we now honor 'quantum' as the maximum queue depth at the
device side from any single cfqq. If there's just a single active
cfqq, we allow up to 4 times the normal quantum.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/cfq-iosched.c