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>
This commit is contained in:
parent
dbeeb816e8
commit
2389d1ef17
1 changed files with 3 additions and 2 deletions
|
@ -2068,9 +2068,10 @@ static void cfq_put_async_queues(struct cfq_data *cfqd)
|
||||||
cfq_put_queue(cfqd->async_cfqq[0][i]);
|
cfq_put_queue(cfqd->async_cfqq[0][i]);
|
||||||
if (cfqd->async_cfqq[1][i])
|
if (cfqd->async_cfqq[1][i])
|
||||||
cfq_put_queue(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)
|
static void cfq_exit_queue(elevator_t *e)
|
||||||
|
|
Loading…
Reference in a new issue