[Devel] Re: nsgroup autoremoving
KAMEZAWA Hiroyuki
kamezawa.hiroyu at jp.fujitsu.com
Sun Jan 18 19:05:33 PST 2009
On Sun, 18 Jan 2009 17:32:16 -0600
"Serge E. Hallyn" <serue at us.ibm.com> wrote:
> Quoting Daniel Lezcano (daniel.lezcano at free.fr):
> > Serge E. Hallyn wrote:
> >> Quoting Daniel Lezcano (daniel.lezcano at free.fr):
> >>
> >>> Hi,
> >>>
> >>> While trying to unshare a namespace with the clone syscall with an
> >>> inifinite loop, I got an EEXIST.
> >>> That looks weird to have such syscall returning EEXIST ... :)
> >>>
> >>> After investigating, it appears the ns_cgroup creates automatically a
> >>> control group named with the pid number when we call the clone
> >>> syscall with a namespace parameter and when the namespace exits, the
> >>> control group is not automatically removed. So when the pid numbers
> >>> are recycled we conflict with a previous ns_cgroup name and the clone
> >>> fails.
> >>>
> >>> IMHO, if the nsgroup is automatically created, it should
> >>> automatically destroyed, otherwise what will happen to application
> >>> using the namespaces (eg. mount namespace) wrote before nsgroup
> >>> appeared ?
> >>>
> >>
> >> but you can have it automatically destroyed. I.e. I did the
> >> following:
> >>
> >> mount -t cgroup -o freezer,ns freezer /cgroup
> >> cat > /bin/release_cgroup.sh << EOF
> >> #!/bin/sh
> >> echo "Removing dead cgroup .$*." >> /var/log/cgroup
> >> rmdir /cgroup/$* >> /var/log/cgroup 2>&1
> >> echo "return value was $?" >> /var/log/cgroup
> >> EOF
> >> echo /bin/release_cgroup.sh > /cgroup/release_agent
> >> echo 1 > /cgroup/notify_on_release
> >> chmod ugo+x /bin/release_cgroup.sh
> >> ns_exec -m /bin/sh
> >> ls /cgroup`
> >> 3581 notify_on_release release_agent tasks
> >> exit
> >> ls /cgroup
> >> notify_on_release release_agent tasks
> >>
> > Assuming you mount with all the subsystems, this script will destroy the
> > non-nsgroup too. Each time I create a control group manually, I have to
> > unset the notify_on_release, right ?
>
> I assume notify_on_release is per-hierarchy. So you're just asking
> about manually created cgroups in a hierarchy which has ns mounted,
> right?
>
> I suppose you could use a naming convention and do some name
> checking in the release_agent to not delete manually created
> ones.
>
> Would that be too much of a hassle?
>
> Maybe you're right. Maybe we should tag auto-created cgroups,
> and auto-remove them.
I think auto-remove is more useful.
> It's more convenient for me that way...
> Paul, would you have any objections? Daniel do you have a patch
> written?
>
Just a notice:
When the memory subsystem is mounted, notify_on_release will not work as you
expected. Because refcnts from pages still exits.
But you will be able to do rmdir() in many case because of pre_destroy()
handler. (so, the directroy is releasable.)
I'd like to fix this. But now, it doesn't work for memory subsys.
Thanks,
-Kame
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list