Messages in this thread | | | Date | Mon, 14 Jul 2014 10:13:27 +0800 | From | Li Zefan <> | Subject | Re: [PATCH 4/5] cgroup: distinguish the default and legacy hierarchies when handling cftypes |
| |
> @@ -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); > }
| |