• T
    cgroup: distinguish the default and legacy hierarchies when handling cftypes · a8ddc821
    Tejun Heo 提交于
    Until now, cftype arrays carried files for both the default and legacy
    hierarchies and the files which needed to be used on only one of them
    were flagged with either CFTYPE_ONLY_ON_DFL or CFTYPE_INSANE.  This
    gets confusing very quickly and we may end up exposing interface files
    to the default hierarchy without thinking it through.
    
    This patch makes cgroup core provide separate sets of interfaces for
    cftype handling so that the cftypes for the default and legacy
    hierarchies are clearly distinguished.  The previous two patches
    renamed the existing ones so that they clearly indicate that they're
    for the legacy hierarchies.  This patch adds the interface for the
    default hierarchy and apply them selectively depending on the
    hierarchy type.
    
    * cftypes added through cgroup_subsys->dfl_cftypes and
      cgroup_add_dfl_cftypes() only show up on the default hierarchy.
    
    * cftypes added through cgroup_subsys->legacy_cftypes and
      cgroup_add_legacy_cftypes() only show up on the legacy hierarchies.
    
    * cgroup_subsys->dfl_cftypes and ->legacy_cftypes can point to the
      same array for the cases where the interface files are identical on
      both types of hierarchies.
    
    * This makes all the existing subsystem interface files legacy-only by
      default and all subsystems will have no interface file created when
      enabled on the default hierarchy.  Each subsystem should explicitly
      review and compose the interface for the default hierarchy.
    
    * A boot param "cgroup__DEVEL__legacy_files_on_dfl" is added which
      makes subsystems which haven't decided the interface files for the
      default hierarchy to present the legacy files on the default
      hierarchy so that its behavior on the default hierarchy can be
      tested.  As the awkward name suggests, this is for development only.
    
    * memcg's CFTYPE_INSANE on "use_hierarchy" is noop now as the whole
      array isn't used on the default hierarchy.  The flag is removed.
    
    v2: Updated documentation for cgroup__DEVEL__legacy_files_on_dfl.
    
    v3: Clear CFTYPE_ONLY_ON_DFL and CFTYPE_INSANE when cfts are removed
        as suggested by Li.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Acked-by: NNeil Horman <nhorman@tuxdriver.com>
    Acked-by: NLi Zefan <lizefan@huawei.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Aristeu Rozanski <aris@redhat.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    a8ddc821
memcontrol.c 186.9 KB