diff options
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index e59f2108272f..579f31822469 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -1905,10 +1905,13 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
1905 | * of tiny requests, because we disrupt the normal plugging | 1905 | * of tiny requests, because we disrupt the normal plugging |
1906 | * and merging. If the request is already larger than a single | 1906 | * and merging. If the request is already larger than a single |
1907 | * page, let it rip immediately. For that case we assume that | 1907 | * page, let it rip immediately. For that case we assume that |
1908 | * merging is already done. | 1908 | * merging is already done. Ditto for a busy system that |
1909 | * has other work pending, don't risk delaying until the | ||
1910 | * idle timer unplug to continue working. | ||
1909 | */ | 1911 | */ |
1910 | if (cfq_cfqq_wait_request(cfqq)) { | 1912 | if (cfq_cfqq_wait_request(cfqq)) { |
1911 | if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE) { | 1913 | if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE || |
1914 | cfqd->busy_queues > 1) { | ||
1912 | del_timer(&cfqd->idle_slice_timer); | 1915 | del_timer(&cfqd->idle_slice_timer); |
1913 | blk_start_queueing(cfqd->queue); | 1916 | blk_start_queueing(cfqd->queue); |
1914 | } | 1917 | } |