Skip to content
  • Tejun Heo's avatar
    blk-throttle: implement throtl_grp->has_rules[] · 693e751e
    Tejun Heo authored
    
    
    blk_throtl_bio() has a quick exit path for throtl_grps without limits
    configured.  It looks at the bps and iops limits and if both are not
    configured, the bio is issued immediately.  While this is correct in
    the current flat hierarchy as each throtl_grp behaves completely
    independently, it would become wrong in proper hierarchy mode.  A
    group without any limits could still be limited by one of its
    ancestors and bio's queued for such group should not bypass
    blk-throtl.
    
    As having a quick bypass mechanism is beneficial, this patch
    reimplements the mechanism such that it's correct even with proper
    hierarchy.  throtl_grp->has_rules[] is added.  These booleans are
    updated for the whole subtree whenever a config is updated so that
    has_rules[] of the whole subtree stays synchronized.  They're also
    updated when a new throtl_grp comes online so that it can't escape the
    limits of its ancestors.
    
    As no throtl_grp has another throtl_grp as parent now, this patch
    doesn't yet make any behavior differences.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
    693e751e