From 2389d1ef172fc9df01f58265a436919d233fbc27 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Mon, 5 Nov 2007 08:58:05 +0100 Subject: [PATCH] cfq: fix IOPRIO_CLASS_IDLE accounting Spotted by Nick , 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 Signed-off-by: Jens Axboe --- block/cfq-iosched.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index e47a930..61a3f22 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) -- 2.7.4