* nsgroup autoremoving
@ 2009-01-16 10:23 Daniel Lezcano
[not found] ` <49706006.80002-GANU6spQydw@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Daniel Lezcano @ 2009-01-16 10:23 UTC (permalink / raw)
To: Linux Containers,
linux- >> Meiosys Linux Development Interlock
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 ?
Thanks.
-- Daniel
^ permalink raw reply [flat|nested] 5+ messages in thread[parent not found: <49706006.80002-GANU6spQydw@public.gmane.org>]
* Re: nsgroup autoremoving [not found] ` <49706006.80002-GANU6spQydw@public.gmane.org> @ 2009-01-16 16:52 ` Serge E. Hallyn [not found] ` <20090116165217.GA8477-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Serge E. Hallyn @ 2009-01-16 16:52 UTC (permalink / raw) To: Daniel Lezcano; +Cc: Linux Containers Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org): > 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 -serge ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20090116165217.GA8477-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>]
* Re: nsgroup autoremoving [not found] ` <20090116165217.GA8477-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> @ 2009-01-18 21:35 ` Daniel Lezcano [not found] ` <4973A0AD.6090508-GANU6spQydw@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Daniel Lezcano @ 2009-01-18 21:35 UTC (permalink / raw) To: Serge E. Hallyn; +Cc: Linux Containers Serge E. Hallyn wrote: > Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org): > >> 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 ? ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <4973A0AD.6090508-GANU6spQydw@public.gmane.org>]
* Re: nsgroup autoremoving [not found] ` <4973A0AD.6090508-GANU6spQydw@public.gmane.org> @ 2009-01-18 23:32 ` Serge E. Hallyn [not found] ` <20090118233216.GA10126-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Serge E. Hallyn @ 2009-01-18 23:32 UTC (permalink / raw) To: Daniel Lezcano; +Cc: Linux Containers, Paul Menage Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org): > Serge E. Hallyn wrote: >> Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org): >> >>> 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. It's more convenient for me that way... Paul, would you have any objections? Daniel do you have a patch written? -serge ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20090118233216.GA10126-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>]
* Re: nsgroup autoremoving [not found] ` <20090118233216.GA10126-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> @ 2009-01-19 3:05 ` KAMEZAWA Hiroyuki 0 siblings, 0 replies; 5+ messages in thread From: KAMEZAWA Hiroyuki @ 2009-01-19 3:05 UTC (permalink / raw) To: Serge E. Hallyn; +Cc: Linux Containers, Paul Menage On Sun, 18 Jan 2009 17:32:16 -0600 "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> wrote: > Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org): > > Serge E. Hallyn wrote: > >> Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org): > >> > >>> 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-01-19 3:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-16 10:23 nsgroup autoremoving Daniel Lezcano
[not found] ` <49706006.80002-GANU6spQydw@public.gmane.org>
2009-01-16 16:52 ` Serge E. Hallyn
[not found] ` <20090116165217.GA8477-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-01-18 21:35 ` Daniel Lezcano
[not found] ` <4973A0AD.6090508-GANU6spQydw@public.gmane.org>
2009-01-18 23:32 ` Serge E. Hallyn
[not found] ` <20090118233216.GA10126-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-01-19 3:05 ` KAMEZAWA Hiroyuki
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.