• Divyesh Shah's avatar
    cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch · 3440c49f
    Divyesh Shah authored
    When CFQ dispatches requests forcefully due to a barrier or changing iosched,
    it runs through all cfqq's dispatching requests and then expires each queue.
    However, it does not activate a cfqq before flushing its IOs resulting in
    using stale values for computing slice_used.
    This patch fixes it by calling activate queue before flushing reuqests from
    each queue.
    
    This is useful mostly for barrier requests because when the iosched is changing
    it really doesnt matter if we have incorrect accounting since we're going to
    break down all structures anyway.
    
    We also now expire the current timeslice before moving on with the dispatch
    to accurately account slice used for that cfqq.
    
    Signed-off-by: Divyesh Shah<dpshah@google.com>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    3440c49f
cfq-iosched.c 98.4 KB