aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDivyesh Shah <dpshah@google.com>2010-03-25 10:45:57 -0400
committerJens Axboe <jens.axboe@oracle.com>2010-03-25 10:46:38 -0400
commit39c01b219fd30c74869b6fc8749f7900f04e9ef6 (patch)
tree7ce59210c28e2b53daf2957174d3ae164701b181
parentb1ffe737f5b743115ee46ffb59e338e580c54902 (diff)
cfq-iosched: Do not merge queues of BE and IDLE classes
Even if they are found to be co-operating. The prio_trees do not have any IDLE cfqqs on them. cfq_close_cooperator() is called from cfq_select_queue() and cfq_completed_request(). The latter ensures that the close cooperator code does not get invoked if the current cfqq is of class IDLE but the former doesn't seem to have any such checks. So an IDLE cfqq may get merged with a BE cfqq from the same group which should be avoided. Signed-off-by: Divyesh Shah<dpshah@google.com> Acked-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--block/cfq-iosched.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 2f91c5351949..2c7a0f4f3cd7 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1723,6 +1723,8 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
1723{ 1723{
1724 struct cfq_queue *cfqq; 1724 struct cfq_queue *cfqq;
1725 1725
1726 if (cfq_class_idle(cur_cfqq))
1727 return NULL;
1726 if (!cfq_cfqq_sync(cur_cfqq)) 1728 if (!cfq_cfqq_sync(cur_cfqq))
1727 return NULL; 1729 return NULL;
1728 if (CFQQ_SEEKY(cur_cfqq)) 1730 if (CFQQ_SEEKY(cur_cfqq))