• Tejun Heo's avatar
    cgroup: make cgroup_update_dfl_csses() migrate all target processes atomically · 10265075
    Tejun Heo authored
    cgroup_update_dfl_csses() is responsible for migrating processes when
    controllers are enabled or disabled on the default hierarchy.  As the
    css association changes for all the processes in the affected cgroups,
    this involves migrating multiple processes.
    
    Up until now, it was implemented by migrating process-by-process until
    the source css_sets are empty; however, this means that if a process
    fails to migrate after some succeed before it, the recovery is very
    tricky.  This was considered okay as subsystems weren't allowed to
    reject process migration on the default hierarchy; unfortunately,
    enforcing this policy turned out to be problematic for certain types
    of resources - realtime slices for now.
    
    As such, the default hierarchy is gonna allow restricted failures
    during migration and to support that this patch makes
    cgroup_update_dfl_csses() migrate all target processes atomically
    rather than one-by-one.  The preceding patches made subsystems ready
    for multi-process migration and factored out taskset operations making
    this almost trivial.  All tasks of the target processes are put in the
    same taskset and the migration operations are performed once which
    either fails or succeeds for all.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarZefan Li <lizefan@huawei.com>
    10265075
cgroup.c 157 KB