• Angelo Ruocco's avatar
    block, bfq: check low_latency flag in bfq_bfqq_save_state() · 1be6e8a9
    Angelo Ruocco authored
    A just-created bfq_queue will certainly be deemed as interactive on
    the arrival of its first I/O request, if the low_latency flag is
    set. Yet, if the queue is merged with another queue on the arrival of
    its first I/O request, it will not have the chance to be flagged as
    interactive. Nevertheless, if the queue is then split soon enough, it
    has to be flagged as interactive after the split.
    
    To handle this early-merge scenario correctly, BFQ saves the state of
    the queue, on the merge, as if the latter had already been deemed
    interactive. So, if the queue is split soon, it will get
    weight-raised, because the previous state of the queue is resumed on
    the split.
    
    Unfortunately, in the act of saving the state of the newly-created
    queue, BFQ doesn't check whether the low_latency flag is set, and this
    causes early-merged queues to be then weight-raised, on queue splits,
    even if low_latency is off. This commit addresses this problem by
    adding the missing check.
    Signed-off-by: default avatarAngelo Ruocco <angeloruocco90@gmail.com>
    Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    1be6e8a9
bfq-iosched.c 170 KB