• Paolo Valente's avatar
    block, bfq: add missing rq_pos_tree update on rq removal · 05e90283
    Paolo Valente authored
    If two processes do I/O close to each other, then BFQ merges the
    bfq_queues associated with these processes, to get a more sequential
    I/O, and thus a higher throughput.  In this respect, to detect whether
    two processes are doing I/O close to each other, BFQ keeps a list of
    the head-of-line I/O requests of all active bfq_queues.  The list is
    ordered by initial sectors, and implemented through a red-black tree
    (rq_pos_tree).
    
    Unfortunately, the update of the rq_pos_tree was incomplete, because
    the tree was not updated on the removal of the head-of-line I/O
    request of a bfq_queue, in case the queue did not remain empty. This
    commit adds the missing update.
    Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
    Signed-off-by: default avatarAngelo Ruocco <angeloruocco90@gmail.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    05e90283
bfq-iosched.c 170 KB