> @@ -3085,8 +3091,37 @@ static int cgroup_add_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) > return ret; > } > > +/** > + * cgroup_add_dfl_cftypes - add an array of cftypes for default hierarchy > + * @ss: target cgroup subsystem > + * @cfts: zero-length name terminated array of cftypes > + * > + * Similar to cgroup_add_cftypes() but the added files are only used for > + * the default hierarchy. > + */ > +int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) > +{ > + struct cftype *cft; > + > + for (cft = cfts; cft && cft->name[0] != '\0'; cft++) > + cft->flags |= CFTYPE_ONLY_ON_DFL; I think we should remove this flag in cgroup_rm_cftypes_locked(). Otherwise if we call cgroup_add_dlf_cftypes() and then cgroup_rm_cftypes() and then cgroup_add_legacy_cftypes() for the same @cfts, both CFTYPE_ONLY_ON_DFL and CFTYPE_INSANE are set. > + return cgroup_add_cftypes(ss, cfts); > +} > + > +/** > + * cgroup_add_legacy_cftypes - add an array of cftypes for legacy hierarchies > + * @ss: target cgroup subsystem > + * @cfts: zero-length name terminated array of cftypes > + * > + * Similar to cgroup_add_cftypes() but the added files are only used for > + * the legacy hierarchies. > + */ > int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) > { > + struct cftype *cft; > + > + for (cft = cfts; cft && cft->name[0] != '\0'; cft++) > + cft->flags |= CFTYPE_INSANE; > return cgroup_add_cftypes(ss, cfts); > } -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html