[PATCH] cgroups: handle failure of cgroup_populate_dir() at mount/remount
kamezawa.hiroyu at jp.fujitsu.com
Tue May 26 23:16:40 PDT 2009
On Wed, 27 May 2009 11:24:22 +0800
Li Zefan <lizf at cn.fujitsu.com> wrote:
> KAMEZAWA Hiroyuki wrote:
> > On Wed, 27 May 2009 09:07:31 +0800
> > Li Zefan <lizf at cn.fujitsu.com> wrote:
> >> Paul Menage wrote:
> >>> On Fri, May 22, 2009 at 1:25 AM, KAMEZAWA Hiroyuki
> >>> <kamezawa.hiroyu at jp.fujitsu.com> wrote:
> >>>> Hm, shouldn't we allow "noprefix" to be effective only agaisnt cpuset ?
> >>>> I think it's just for backward-compatibility of cpuset.
> >>>> (I don't like the option at all.)
> >>> Yes, exposing the "noprefix" option externally was one of the mistakes
> >>> I made when developing cgroups.
> >>> It seems to me really unlikely that anyone is using "noprefix" for
> >> And "noprefix" is not documented in cgroups.txt, so I guess not
> >> many people know this option. Even libcgroup doesn't handle it.
> >>> anything other than implicitly when mounting the "cpuset" filesystem.
> >>> So I'd be inclined to just forbid it if we're mounting more than just
> >>> the cpuset subsystem. A bit of a nasty abstraction violation, but it
> >>> makes more sense overall. The only problem is that someone *might* be
> >>> using it - do we have any way to determine how, and how big do they
> >>> have to be before we care?
> >> I think we can never know..
> > How about this method ?
> > - add "noprefix" to "to-be-removed" list.
> > - add "WARNING: noprefix option will be removed in 2.6.32 (or 2.6.31)" now
> > - remove "noprefix" in 2.6.31-rc or later
> I don't see how we can remove noprefix while reserve the compatibility of
> old cpuset..
> As Paul Menage said, we can allow noprefix to be used only if we mount just
> cpuset subsystem:
I have no objection.
> (pseudo code)
> diff --git a/kernel/cgroup.c b/kernel/cgroup.c
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -886,6 +886,11 @@ static int parse_cgroupfs_options(char *data,
> + if (test_bit(ROOT_NOPREFIX, &opts->flags) &&
> + (opts->subsys_bits & ~cpuset_subsys_id) != 0)
> + return -EINVAL;
> /* We can't have an empty hierarchy */
> if (!opts->subsys_bits)
> return -EINVAL;
More information about the Containers