• Tejun Heo's avatar
    blk-throttle: generalize update_disptime optimization in blk_throtl_bio() · 0e9f4164
    Tejun Heo authored
    When blk_throtl_bio() wants to queue a bio to a tg (throtl_grp), it
    avoids invoking tg_update_disptime() and
    throtl_schedule_next_dispatch() if the tg already has bios queued in
    that direction.  As a new bio is appeneded after the existing ones, it
    can't change the tg's next dispatch time or the parent's dispatch
    schedule.
    
    This optimization is currently open coded in blk_throtl_bio().
    Whether the target biolist was occupied was recorded in a local
    variable and later used to skip disptime update.  This patch moves
    generalizes it so that throtl_add_bio_tg() sets a new flag
    THROTL_TG_WAS_EMPTY if the biolist was empty before the new bio was
    added.  tg_update_disptime() clears the flag automatically.
    blk_throtl_bio() is updated to simply test the flag before updating
    disptime.
    
    This patch doesn't make any functional differences now but will enable
    using the same optimization for recursive dispatch.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
    0e9f4164
blk-throttle.c 31.1 KB