Skip to content
  • Tejun Heo's avatar
    writeback: separate out domain_dirty_limits() · 9fc3a43e
    Tejun Heo authored
    
    
    global_dirty_limits() calculates thresh and bg_thresh (confusingly
    called *pdirty and *pbackground in the function) assuming
    global_wb_domain; however, cgroup writeback support requires
    considering per-memcg wb_domain too.
    
    This patch separates out domain_dirty_limits() which takes
    dirty_throttle_control out of global_dirty_limits().  As thresh and
    bg_thresh calculation needs the amount of dirtyable memory in the
    domain, dirty_throttle_control->avail is added.  The new function
    calculates the two thresholds and store them directly in the
    dirty_throttle_control.
    
    Also, as memcg domains can't follow vm_dirty_bytes and
    dirty_background_bytes settings directly.  If those are set and
    domain_dirty_limits() is invoked for a !global domain, the settings
    are translated to ratios by scaling them against globally available
    memory.  dirty_throttle_control->gdtc is added to enable this when
    CONFIG_CGROUP_WRITEBACK.
    
    global_dirty_limits() is now a thin wrapper around
    domain_dirty_limits() and balance_dirty_pages() is updated to use the
    new function too.
    
    This patch doesn't introduce any behavioral changes.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Wu Fengguang <fengguang.wu@intel.com>
    Cc: Greg Thelen <gthelen@google.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    9fc3a43e