All of lore.kernel.org
 help / color / mirror / Atom feed
From: Serge Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
To: Daniel Lezcano <daniel.lezcano-GANU6spQydw@public.gmane.org>
Cc: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	gkurz-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Subject: Re: [PATCH 1/1][V5] Add reboot_pid_ns to handle the reboot syscall
Date: Fri, 3 Feb 2012 09:47:17 -0600	[thread overview]
Message-ID: <20120203154717.GA4389@sergelap> (raw)
In-Reply-To: <4F2BA1EA.7060901-GANU6spQydw@public.gmane.org>

Quoting Daniel Lezcano (daniel.lezcano-GANU6spQydw@public.gmane.org):
> On 02/03/2012 01:10 AM, Andrew Morton wrote:
> >On Thu,  5 Jan 2012 10:06:50 +0100
> >Daniel Lezcano<daniel.lezcano-GANU6spQydw@public.gmane.org>  wrote:
> >
> >>In the case of a child pid namespace, rebooting the system does not
> >>really makes sense. When the pid namespace is used in conjunction
> >>with the other namespaces in order to create a linux container, the
> >>reboot syscall leads to some problems.
> >>
> >>A container can reboot the host. That can be fixed by dropping
> >>the sys_reboot capability but we are unable to correctly to poweroff/
> >>halt/reboot a container and the container stays stuck at the shutdown
> >>time with the container's init process waiting indefinitively.
> >>
> >>After several attempts, no solution from userspace was found to reliabily
> >>handle the shutdown from a container.
> >>
> >>This patch propose to make the init process of the child pid namespace to
> >>exit with a signal status set to : SIGINT if the child pid namespace called
> >>"halt/poweroff" and SIGHUP if the child pid namespace called "reboot".
> >>When the reboot syscall is called and we are not in the initial
> >>pid namespace, we kill the pid namespace for "HALT", "POWEROFF", "RESTART",
> >>and "RESTART2". Otherwise we return EINVAL.
> >>
> >>Returning EINVAL is also an easy way to check if this feature is supported
> >>by the kernel when invoking another 'reboot' option like CAD.
> >>
> >>By this way the parent process of the child pid namespace knows if
> >>it rebooted or not and can take the right decision.
> >Looks OK, although the comments need help.  Is the below still true?
> 
> Yes, thanks for fixing this.
> 
> >
> >Do you think it would be feasible to put your testcase into
> >tools/testing/selftests?  I'm thinking "no", because running the test
> >needs elevated permissions and might reboot the user's machine(!).
> 
> Yes, right. I don't think the user will be happy with that.
> Unfortunately, I don't see how to test this feature without falling
> into a reboot on failure. On the other side, this very specific
> feature is used in the container environment and if it fails that
> will be spotted immediately and fixed. So I don't think that does
> make sense to add this test in tools/testing/selftests.

In fact I can add Daniel's testcase to my lxc testsuite to run
separately, apart from lxc.  I haven't yet hooked it up into our
jenkins qa rig, but that's planned.

> [ ... ]
> 
> >  	gid_t pid_gid;
> >  	int hide_pid;
> >+	int reboot;
> >  };
> >This was particuarly distressing.  The field was poorly named and other
> >people forgotting to document their data structures doesn't mean that
> >we should continue to do this!
> 
> Thanks again for adding the description. I will take care next time
> to add a simple description when the field name is not self-explicit
> or ambiguous.
> 
>   -- Daniel

WARNING: multiple messages have this Message-ID (diff)
From: Serge Hallyn <serge.hallyn@canonical.com>
To: Daniel Lezcano <daniel.lezcano@free.fr>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	oleg@redhat.com, containers@lists.linux-foundation.org,
	gkurz@fr.ibm.com, linux-kernel@vger.kernel.org,
	mtk.manpages@gmail.com
Subject: Re: [PATCH 1/1][V5] Add reboot_pid_ns to handle the reboot syscall
Date: Fri, 3 Feb 2012 09:47:17 -0600	[thread overview]
Message-ID: <20120203154717.GA4389@sergelap> (raw)
In-Reply-To: <4F2BA1EA.7060901@free.fr>

Quoting Daniel Lezcano (daniel.lezcano@free.fr):
> On 02/03/2012 01:10 AM, Andrew Morton wrote:
> >On Thu,  5 Jan 2012 10:06:50 +0100
> >Daniel Lezcano<daniel.lezcano@free.fr>  wrote:
> >
> >>In the case of a child pid namespace, rebooting the system does not
> >>really makes sense. When the pid namespace is used in conjunction
> >>with the other namespaces in order to create a linux container, the
> >>reboot syscall leads to some problems.
> >>
> >>A container can reboot the host. That can be fixed by dropping
> >>the sys_reboot capability but we are unable to correctly to poweroff/
> >>halt/reboot a container and the container stays stuck at the shutdown
> >>time with the container's init process waiting indefinitively.
> >>
> >>After several attempts, no solution from userspace was found to reliabily
> >>handle the shutdown from a container.
> >>
> >>This patch propose to make the init process of the child pid namespace to
> >>exit with a signal status set to : SIGINT if the child pid namespace called
> >>"halt/poweroff" and SIGHUP if the child pid namespace called "reboot".
> >>When the reboot syscall is called and we are not in the initial
> >>pid namespace, we kill the pid namespace for "HALT", "POWEROFF", "RESTART",
> >>and "RESTART2". Otherwise we return EINVAL.
> >>
> >>Returning EINVAL is also an easy way to check if this feature is supported
> >>by the kernel when invoking another 'reboot' option like CAD.
> >>
> >>By this way the parent process of the child pid namespace knows if
> >>it rebooted or not and can take the right decision.
> >Looks OK, although the comments need help.  Is the below still true?
> 
> Yes, thanks for fixing this.
> 
> >
> >Do you think it would be feasible to put your testcase into
> >tools/testing/selftests?  I'm thinking "no", because running the test
> >needs elevated permissions and might reboot the user's machine(!).
> 
> Yes, right. I don't think the user will be happy with that.
> Unfortunately, I don't see how to test this feature without falling
> into a reboot on failure. On the other side, this very specific
> feature is used in the container environment and if it fails that
> will be spotted immediately and fixed. So I don't think that does
> make sense to add this test in tools/testing/selftests.

In fact I can add Daniel's testcase to my lxc testsuite to run
separately, apart from lxc.  I haven't yet hooked it up into our
jenkins qa rig, but that's planned.

> [ ... ]
> 
> >  	gid_t pid_gid;
> >  	int hide_pid;
> >+	int reboot;
> >  };
> >This was particuarly distressing.  The field was poorly named and other
> >people forgotting to document their data structures doesn't mean that
> >we should continue to do this!
> 
> Thanks again for adding the description. I will take care next time
> to add a simple description when the field name is not self-explicit
> or ambiguous.
> 
>   -- Daniel

  parent reply	other threads:[~2012-02-03 15:47 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-05  9:06 [PATCH 0/1][V5] Handle reboot in a child pid namespace Daniel Lezcano
2012-01-05  9:06 ` Daniel Lezcano
     [not found] ` <1325754410-32600-1-git-send-email-daniel.lezcano-GANU6spQydw@public.gmane.org>
2012-01-05  9:06   ` [PATCH 1/1][V5] Add reboot_pid_ns to handle the reboot syscall Daniel Lezcano
2012-01-05  9:06     ` Daniel Lezcano
     [not found]     ` <1325754410-32600-2-git-send-email-daniel.lezcano-GANU6spQydw@public.gmane.org>
2012-01-05 19:29       ` Serge Hallyn
2012-01-05 19:29         ` Serge Hallyn
2012-01-11 10:23         ` Serge Hallyn
2012-01-11 10:23           ` Serge Hallyn
2012-01-11 10:45           ` Andrew Morton
2012-01-11 10:45             ` Andrew Morton
     [not found]             ` <20120111024530.7b3607e7.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2012-01-11 10:49               ` Serge E. Hallyn
2012-01-11 10:49                 ` Serge E. Hallyn
2012-02-03  0:10       ` Andrew Morton
2012-02-03  0:10         ` Andrew Morton
     [not found]         ` <20120202161018.e3c62965.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2012-02-03  8:59           ` Daniel Lezcano
2012-02-03  8:59             ` Daniel Lezcano
     [not found]             ` <4F2BA1EA.7060901-GANU6spQydw@public.gmane.org>
2012-02-03 15:47               ` Serge Hallyn [this message]
2012-02-03 15:47                 ` Serge Hallyn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120203154717.GA4389@sergelap \
    --to=serge.hallyn-z7wlfzj8ewms+fvcfc7uqw@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=daniel.lezcano-GANU6spQydw@public.gmane.org \
    --cc=gkurz-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.