• P
    block, bfq: reset waker pointer with shared queues · 9a2ac41b
    Paolo Valente 提交于
    Commit 85686d0d ("block, bfq: keep shared queues out of the waker
    mechanism") leaves shared bfq_queues out of the waker-detection
    mechanism. It attains this goal by not updating the pointer
    last_completed_rq_bfqq, if the last request completed belongs to a
    shared bfq_queue (so that the pointer will not point to the shared
    bfq_queue).
    
    Yet this has a side effect: the pointer last_completed_rq_bfqq keeps
    pointing, deceptively, to a bfq_queue that actually is not the last
    one to have had a request completed. As a consequence, such a
    bfq_queue may deceptively be considered as a waker of some bfq_queue,
    even of some shared bfq_queue.
    
    To address this issue, reset last_completed_rq_bfqq if the last
    request completed belongs to a shared queue.
    
    Fixes: 85686d0d ("block, bfq: keep shared queues out of the waker mechanism")
    Signed-off-by: NPaolo Valente <paolo.valente@linaro.org>
    Link: https://lore.kernel.org/r/20210619140948.98712-8-paolo.valente@linaro.orgSigned-off-by: NJens Axboe <axboe@kernel.dk>
    9a2ac41b
bfq-iosched.c 255.6 KB