diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2007-11-05 08:58:05 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-11-07 09:45:00 +0100 |
commit | 2389d1ef172fc9df01f58265a436919d233fbc27 (patch) | |
tree | a59a1768a953ba27cf370c6634473679580c505d /block/cfq-iosched.c | |
parent | dbeeb816e805091e7cfc03baf36dc40b4adb2bbd (diff) | |
download | lwn-2389d1ef172fc9df01f58265a436919d233fbc27.tar.gz lwn-2389d1ef172fc9df01f58265a436919d233fbc27.zip |
cfq: fix IOPRIO_CLASS_IDLE accounting
Spotted by Nick <gentuu@gmail.com>, hopefully can explain the second trace in
http://bugzilla.kernel.org/show_bug.cgi?id=9180.
If ->async_idle_cfqq != NULL cfq_put_async_queues() puts it IOPRIO_BE_NR times
in a loop. Fix this.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index e47a9309eb48..61a3f22eee29 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -2068,9 +2068,10 @@ static void cfq_put_async_queues(struct cfq_data *cfqd) cfq_put_queue(cfqd->async_cfqq[0][i]); if (cfqd->async_cfqq[1][i]) cfq_put_queue(cfqd->async_cfqq[1][i]); - if (cfqd->async_idle_cfqq) - cfq_put_queue(cfqd->async_idle_cfqq); } + + if (cfqd->async_idle_cfqq) + cfq_put_queue(cfqd->async_idle_cfqq); } static void cfq_exit_queue(elevator_t *e) |