Skip to content
  • Tejun Heo's avatar
    cgroup: teach css_task_iter about effective csses · 3ebb2b6e
    Tejun Heo authored
    
    
    Currently, css_task_iter iterates tasks associated with a css by
    visiting each css_set associated with the owning cgroup and walking
    tasks of each of them.  This works fine for !unified hierarchies as
    each cgroup has its own css for each associated subsystem on the
    hierarchy; however, on the planned unified hierarchy, a cgroup may not
    have csses associated and its tasks would be considered associated
    with the matching css of the nearest ancestor which has the subsystem
    enabled.
    
    This means that on the default unified hierarchy, just walking all
    tasks associated with a cgroup isn't enough to walk all tasks which
    are associated with the specified css.  If any of its children doesn't
    have the matching css enabled, task iteration should also include all
    tasks from the subtree.  We already added cgroup->e_csets[] to list
    all css_sets effectively associated with a given css and walk css_sets
    on that list instead to achieve such iteration.
    
    This patch updates css_task_iter iteration such that it walks css_sets
    on cgroup->e_csets[] instead of cgroup->cset_links if iteration is
    requested on an non-dummy css.  Thanks to the previous iteration
    update, this change can be achieved with the addition of
    css_task_iter->ss and minimal updates to css_advance_task_iter() and
    css_task_iter_start().
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarLi Zefan <lizefan@huawei.com>
    3ebb2b6e