• Paolo Valente's avatar
    block, bfq: invoke flush_idle_tree after reparent_active_queues in pd_offline · 4d38a87f
    Paolo Valente authored
    In bfq_pd_offline(), the function bfq_flush_idle_tree() is invoked to
    flush the rb tree that contains all idle entities belonging to the pd
    (cgroup) being destroyed. In particular, bfq_flush_idle_tree() is
    invoked before bfq_reparent_active_queues(). Yet the latter may happen
    to add some entities to the idle tree. It happens if, in some of the
    calls to bfq_bfqq_move() performed by bfq_reparent_active_queues(),
    the queue to move is empty and gets expired.
    
    This commit simply reverses the invocation order between
    bfq_flush_idle_tree() and bfq_reparent_active_queues().
    
    Tested-by: cki-project@redhat.com
    Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    4d38a87f
bfq-cgroup.c 38.5 KB