From: "Bruno Prémont" <bonbons@linux-vserver.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Greg Kurz <gkurz@fr.ibm.com>,
containers@lists.linux-foundation.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/2] Send a SIGCHLD to the init's pid namespace parent when reboot
Date: Wed, 24 Aug 2011 21:44:18 +0200 [thread overview]
Message-ID: <20110824214418.474b24c6@neptune.home> (raw)
In-Reply-To: <20110823142914.GA22593@redhat.com>
On Tue, 23 August 2011 Oleg Nesterov <oleg@redhat.com> wrote:
> On 08/23, Greg Kurz wrote:
> >
> > On Tue, 2011-08-23 at 15:33 +0200, Oleg Nesterov wrote:
> > > [...]
> > > At least now I understand why did you mention si_code/CLD before. You
> > > meant waitid(). I thought you were talking about the death-notifications
> > > which can't report CLD_ you need.
> > >
> > > I strongly object. We shouldn't uglify wait_task_zombie() to solve the
> > > very specific problem.
> > >
> > > And once again. sub_init->parent does wiat(&status) and sees
> > > WIFSIGNALED() && WTERMSIG(status) == SIGHUP. This can only mean that
> > > sys_reboot(LINUX_REBOOT_CMD_RESTART) was called. It _can not_ be really
> > > killed by SIGHUP, it must be CMD_RESTART.
> > >
> > > Why this can't work? Why do you want the additional complications?
> > >
> >
> > I don't see either what could go wrong with you approach.
>
> Thanks ;)
>
> Just in case... instead of WIFSIGNALED/WTERMSIG we can also report
> the exit code in the upper bits. I mean,
>
> switch (reboot_cmd) {
> case LINUX_REBOOT_CMD_RESTART:
> code = 1 << 16;
> break;
> case LINUX_REBOOT_CMD_HALT:
> code = 2 << 16;
> break;
> }
That looks nice and simple!
> this can't be confused with the normal exit(code), just the parent
> should be careful, I am not sure this can't confuse WIFEXITED/WEXITSTATUS
> user-space macroses.
For recent glibc (2.12.2):
sys/wait.h and stdlib.h:
# define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status))
# define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status))
bits/waitstatus.h:
#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
#define __WTERMSIG(status) ((status) & 0x7f)
#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
For this version of glibc on x86 and amd64 it looks fine.
Would have to look at other versions and other libcs to make sure there
are no surprises.
Bruno
> wait(&status) takes "int *", we have a room for additional info, and
> wait_task_zombie() simply copies exit_code.
>
> Oleg.
>
next prev parent reply other threads:[~2011-08-24 19:45 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-11 20:23 Daniel Lezcano
2011-08-11 20:24 ` [PATCH 1/2] add SA_CLDREBOOT flag Daniel Lezcano
2011-08-14 16:15 ` Oleg Nesterov
2011-08-14 16:36 ` Bruno Prémont
2011-08-14 17:10 ` Oleg Nesterov
2011-08-11 20:24 ` [PATCH 2/2] Notify container-init parent a 'reboot' occured Daniel Lezcano
2011-08-11 21:09 ` Serge Hallyn
2011-08-11 21:30 ` Daniel Lezcano
2011-08-11 21:50 ` Serge Hallyn
2011-08-12 16:29 ` Serge Hallyn
2011-08-12 20:42 ` Daniel Lezcano
2011-08-12 21:13 ` Serge Hallyn
2011-08-13 0:19 ` Matt Helsley
2011-08-13 14:41 ` Daniel Lezcano
2011-08-14 16:01 ` Oleg Nesterov
2011-08-14 16:17 ` [PATCH 0/2] Send a SIGCHLD to the init's pid namespace parent when reboot Oleg Nesterov
2011-08-14 21:36 ` Serge E. Hallyn
2011-08-15 14:47 ` Oleg Nesterov
2011-08-15 17:39 ` Serge E. Hallyn
2011-08-15 17:50 ` Daniel Lezcano
2011-08-18 23:46 ` Daniel Lezcano
2011-08-19 15:24 ` Oleg Nesterov
2011-08-22 12:28 ` Daniel Lezcano
2011-08-22 15:44 ` Oleg Nesterov
2011-08-22 16:31 ` Bruno Prémont
2011-08-22 17:39 ` Oleg Nesterov
2011-08-22 19:17 ` Bruno Prémont
2011-08-23 13:33 ` Oleg Nesterov
2011-08-23 14:09 ` Greg Kurz
2011-08-23 14:29 ` Oleg Nesterov
2011-08-24 19:44 ` Bruno Prémont [this message]
2011-08-25 15:37 ` Oleg Nesterov
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=20110824214418.474b24c6@neptune.home \
--to=bonbons@linux-vserver.org \
--cc=akpm@linux-foundation.org \
--cc=containers@lists.linux-foundation.org \
--cc=gkurz@fr.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®