From: Bryan Donlan <bdonlan@gmail.com>
To: Greg Kurz <gkurz@fr.ibm.com>
Cc: akpm@linux-foundation.org, containers@lists.osdl.org,
linux-kernel@vger.kernel.org, serge@hallyn.com,
daniel.lezcano@free.fr, ebiederm@xmission.com, oleg@redhat.com,
xemul@openvz.org, Cedric Le Goater <clg@fr.ibm.com>
Subject: Re: [PATCH] Introduce ActivePid: in /proc/self/status (v2, was Vpid:)
Date: Thu, 16 Jun 2011 13:54:57 -0400 [thread overview]
Message-ID: <BANLkTimSC_OSrbekhM=wd2Gie4np3Q4F5A@mail.gmail.com> (raw)
In-Reply-To: <20110615145527.4016.70157.stgit@bahia.local>
On Wed, Jun 15, 2011 at 10:55, Greg Kurz <gkurz@fr.ibm.com> wrote:
> Since pid namespaces were introduced, there's a recurring demand: how one
> can correlate a pid from a child pid ns with a pid from a parent pid ns ?
> The need arises in the LXC community when one wants to send a signal from
> the host (aka. init_pid_ns context) to a container process for which one
> only knows the pid inside the container.
>
> In the future, this should be achievable thanks to Eric Biederman's setns()
> syscall but there's still some work to be done to support pid namespaces:
>
> https://lkml.org/lkml/2011/5/21/162
>
> As stated by Serge Hallyn in:
>
> http://sourceforge.net/mailarchive/message.php?msg_id=27424447
>
> "There is nothing that gives you a 100% guaranteed correct race-free
> correspondence right now. You can look under /proc/<pid>/root/proc/ to
> see the pids valid in the container, and you can relate output of
> lxc-ps --forest to ps --forest output. But nothing under /proc that I
> know of tells you "this task is the same as that task". You can't
> even look at /proc/<pid> inode numbers since they are different
> filesystems for each proc mount."
>
> This patch adds a single line to /proc/self/status. Provided one has kept
> track of its container tasks (with a cgroup like liblxc does for example),
> he may correlate global pids and container pids. This is still racy but
> definitely easier than what we have today.
Although getting the in-namespace PID is a useful thing, wouldn't a
truly race-free API be preferable? Any access by PID has the race
condition in which the target process could die, and its PID get
recycled between retrieving the PID and doing something with it.
Perhaps a file-descriptor API would be better, such as something like
this:
int openpid(int id, int flags);
int rt_sigqueueinfo_fd(int process_fd, int sig, siginfo_t *info);
int sigqueue_fd(int process_fd, int sig, const union sigval value); //
glibc wrapper
The opened process FD could be passed across a unix domain socket to a
process outside the namespace, which could then send signals without
knowing the in-namespace PID. This same API can be easily extended to
cover other syscalls which may require PIDs as well.
next prev parent reply other threads:[~2011-06-16 17:55 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-15 14:55 Greg Kurz
2011-06-15 18:46 ` Oleg Nesterov
2011-06-15 19:08 ` Eric W. Biederman
2011-06-16 11:01 ` Greg Kurz
2011-06-16 12:35 ` Louis Rilling
2011-06-16 13:00 ` Greg Kurz
2011-06-16 13:18 ` Oleg Nesterov
2011-06-16 13:25 ` Louis Rilling
2011-06-16 14:51 ` Oleg Nesterov
2011-06-16 15:08 ` Louis Rilling
2011-06-16 15:01 ` Greg Kurz
2011-06-16 15:27 ` Louis Rilling
2011-06-16 12:42 ` Oleg Nesterov
2011-06-15 19:03 ` Oleg Nesterov
2011-06-16 11:19 ` Greg Kurz
2011-06-16 12:25 ` Cedric Le Goater
2011-06-16 13:06 ` Oleg Nesterov
2011-06-16 14:25 ` Cedric Le Goater
2011-06-16 15:22 ` Eric W. Biederman
2011-06-16 16:22 ` Oleg Nesterov
2011-06-16 15:07 ` Eric W. Biederman
2011-06-16 15:33 ` Greg Kurz
2011-06-16 16:12 ` Oleg Nesterov
2011-06-16 12:52 ` Oleg Nesterov
2011-06-16 17:54 ` Bryan Donlan [this message]
2011-06-20 11:45 ` Greg Kurz
2011-06-20 17:37 ` Bryan Donlan
2011-06-20 22:44 ` Eric W. Biederman
2011-06-22 15:29 ` Greg Kurz
2011-06-23 0:39 ` Eric W. Biederman
2011-06-23 13:43 ` Greg Kurz
2011-06-23 14:37 ` Serge Hallyn
2011-06-22 15:00 ` Greg Kurz
2011-06-22 16:56 ` Bryan Donlan
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='BANLkTimSC_OSrbekhM=wd2Gie4np3Q4F5A@mail.gmail.com' \
--to=bdonlan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=clg@fr.ibm.com \
--cc=containers@lists.osdl.org \
--cc=daniel.lezcano@free.fr \
--cc=ebiederm@xmission.com \
--cc=gkurz@fr.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=serge@hallyn.com \
--cc=xemul@openvz.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 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®