diff options
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 986865e3fbc5..ca4d19907243 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -2285,6 +2285,17 @@ static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd) | |||
2285 | goto keep_queue; | 2285 | goto keep_queue; |
2286 | } | 2286 | } |
2287 | 2287 | ||
2288 | /* | ||
2289 | * This is a deep seek queue, but the device is much faster than | ||
2290 | * the queue can deliver, don't idle | ||
2291 | **/ | ||
2292 | if (CFQQ_SEEKY(cfqq) && cfq_cfqq_idle_window(cfqq) && | ||
2293 | (cfq_cfqq_slice_new(cfqq) || | ||
2294 | (cfqq->slice_end - jiffies > jiffies - cfqq->slice_start))) { | ||
2295 | cfq_clear_cfqq_deep(cfqq); | ||
2296 | cfq_clear_cfqq_idle_window(cfqq); | ||
2297 | } | ||
2298 | |||
2288 | if (cfqq->dispatched && cfq_should_idle(cfqd, cfqq)) { | 2299 | if (cfqq->dispatched && cfq_should_idle(cfqd, cfqq)) { |
2289 | cfqq = NULL; | 2300 | cfqq = NULL; |
2290 | goto keep_queue; | 2301 | goto keep_queue; |