]> git.karo-electronics.de Git - karo-tx-linux.git/commit
cfq-iosched: Don't wait if queue already has requests.
authorJustin TerAvest <teravest@google.com>
Wed, 9 Feb 2011 13:20:03 +0000 (14:20 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 21 Mar 2011 19:44:56 +0000 (12:44 -0700)
commit1f9b4d210cc74010c9b6f24dc854bf1da52262f8
treef90304d42d0a0d9c7984a9becc49d5c205d4050b
parent1327258317f30e48a67b39f6a2dd0049daa1d46c
cfq-iosched: Don't wait if queue already has requests.

commit 02a8f01b5a9f396d0327977af4c232d0f94c45fd upstream.

Commit 7667aa0630407bc07dc38dcc79d29cc0a65553c1 added logic to wait for
the last queue of the group to become busy (have at least one request),
so that the group does not lose out for not being continuously
backlogged. The commit did not check for the condition that the last
queue already has some requests. As a result, if the queue already has
requests, wait_busy is set. Later on, cfq_select_queue() checks the
flag, and decides that since the queue has a request now and wait_busy
is set, the queue is expired.  This results in early expiration of the
queue.

This patch fixes the problem by adding a check to see if queue already
has requests. If it does, wait_busy is not set. As a result, time slices
do not expire early.

The queues with more than one request are usually buffered writers.
Testing shows improvement in isolation between buffered writers.

Signed-off-by: Justin TerAvest <teravest@google.com>
Reviewed-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
block/cfq-iosched.c