summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2009-12-04 13:12:06 +0100
committerJens Axboe <jens.axboe@oracle.com>2009-12-04 13:12:06 +0100
commit3c764b7a654668dd04905841d6024f7b6aa843a5 (patch)
tree68b7c611f5e98bab3c781ecc775a0ecf46c43b61
parentio controller: quick fix for blk-cgroup and modular CFQ (diff)
downloadlinux-3c764b7a654668dd04905841d6024f7b6aa843a5.tar.xz
linux-3c764b7a654668dd04905841d6024f7b6aa843a5.zip
cfq-iosched: make nonrot check logic consistent
cfq_arm_slice_timer() has logic to disable idle window for SSD device. The same thing should be done at cfq_select_queue() too, otherwise we will still see idle window. This makes the nonrot check logic consistent in cfq. Tests in a intel SSD with low_latency knob close, below patch can triple disk thoughput for muti-thread sequential read. Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--block/cfq-iosched.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 43ec3340cb58..b00ca4c86e25 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1796,7 +1796,8 @@ static bool cfq_should_idle(struct cfq_data *cfqd, struct cfq_queue *cfqq)
return false;
/* We do for queues that were marked with idle window flag. */
- if (cfq_cfqq_idle_window(cfqq))
+ if (cfq_cfqq_idle_window(cfqq) &&
+ !(blk_queue_nonrot(cfqd->queue) && cfqd->hw_tag))
return true;
/*