From 080c2b088e0b0514006e10a735c8e2924e4754f0 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 15 Apr 2009 12:12:46 +0200 Subject: [PATCH] --- yaml --- r: 143347 b: refs/heads/master c: 2d870722965211de072bb36b446a4df99dae07e1 h: refs/heads/master i: 143345: 8f5a279320db8f2ea044ca5980b3b4d3a3db12bf 143343: 0b2023ae85340dc04c89e54907312ad47143887b v: v3 --- [refs] | 2 +- trunk/block/cfq-iosched.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 7c4c488b0f80..b009905ac2ab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 40bb54d197a10fe86d73073ee8202ba2812a05fa +refs/heads/master: 2d870722965211de072bb36b446a4df99dae07e1 diff --git a/trunk/block/cfq-iosched.c b/trunk/block/cfq-iosched.c index e59f2108272f..579f31822469 100644 --- a/trunk/block/cfq-iosched.c +++ b/trunk/block/cfq-iosched.c @@ -1905,10 +1905,13 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq, * of tiny requests, because we disrupt the normal plugging * and merging. If the request is already larger than a single * page, let it rip immediately. For that case we assume that - * merging is already done. + * merging is already done. Ditto for a busy system that + * has other work pending, don't risk delaying until the + * idle timer unplug to continue working. */ if (cfq_cfqq_wait_request(cfqq)) { - if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE) { + if (blk_rq_bytes(rq) > PAGE_CACHE_SIZE || + cfqd->busy_queues > 1) { del_timer(&cfqd->idle_slice_timer); blk_start_queueing(cfqd->queue); }