From: Serge Hallyn <serge.hallyn@ubuntu.com>
To: Hu Tao <hutao@cn.fujitsu.com>
Cc: "chenhanxiao@cn.fujitsu.com" <chenhanxiao@cn.fujitsu.com>,
"Richard Weinberger (richard@nod.at)" <richard@nod.at>,
"containers@lists.linux-foundation.org"
<containers@lists.linux-foundation.org>,
"Oleg Nesterov (oleg@redhat.com)" <oleg@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Eric W. Biederman (ebiederm@xmission.com)"
<ebiederm@xmission.com>,
"Vasily Kulikov (segoon@openwall.com)" <segoon@openwall.com>
Subject: Re: [RFC]Pid conversion between pid namespace
Date: Mon, 28 Jul 2014 13:24:56 +0000 [thread overview]
Message-ID: <20140728132455.GB464@ubuntumail> (raw)
In-Reply-To: <20140728081444.GE31917@G08FNSTD100614.fnst.cn.fujitsu.com>
Quoting Hu Tao (hutao@cn.fujitsu.com):
> Hi,
>
> On Fri, Jul 25, 2014 at 05:34:43PM +0000, Serge Hallyn wrote:
> > Quoting chenhanxiao@cn.fujitsu.com (chenhanxiao@cn.fujitsu.com):
> > > Hi,
> > >
> > > > -----Original Message-----
> > > > From: Serge Hallyn [mailto:serge.hallyn@ubuntu.com]
> > > > Sent: Tuesday, July 15, 2014 12:16 PM
> > > > To: Chen, Hanxiao/陈 晗霄
> > > > Subject: Re: [RFC]Pid conversion between pid namespace
> > > > > A-2) syscall pid_t getnspid(pid_t query_pid, pid_t observer_pid)
> > > > > pros:
> > > > > - ns procfs free, easy to use.
> > > > > We could get rid of mounted ns procfs.
> > > > >
> > > > > cons:
> > > > > - may find multiple results in nested ns.
> > > > > We wished the new API could tell us the exact answer.
> > > > > But if getnspid return more than one results will bring trouble to admins,
> > > >
> > > > (See below for more, but) the question being posed to getnspid has precisely
> > > > one answer.
> > > >
> > > > > they had to make another decision.
> > > > > Or we marked the deepest level for translation as prerequisite.
> > > > >
> > > > > -based on current pidns, no reference ns.
> > > >
> > > > Hm, no. The intent here was that
> > > >
> > > > observer_pid would be in current ns
> > > > query_pid would be in observer_pid's ns.
> > > >
> > > > So this would be ideal for "I got a pid in a logfile created by rsyslog in
> > > > a nested contaner, what is the logged pid in my pidns."
> > > >
> > > > Taking a set of tasks (like a container with nesting) and bulding a tree
> > > > of all pids shouldn't be too difficult either. Start with the init pid,
> > > > call getnspid($pid, $init_pid) for every $pid in the container; to figure
> > > > out whether any $pid is itself a nested init_pid, we can compare the
> > > > /proc/$$/ns/pid, as well as look at getnspid($pid, $pid).
> > > I'm a little confused in this section:
> > >
> > > Ex:
> > > init_pid_ns ns1 ns2
> > > t1 2
> > > t2 `- 3 1
> > > t3 `- 4 `- 5 1
> > > t4 `-6 `-8 `-9
> > > t5 `-10 `-9 `-10
> > >
> > > For getnspid($pid, $init_pid),
> > > Does init_pid means container's init_pid such as 3 for t2?
> >
> > Right, if you're in init_pid_ns and making the query, then
> > you'd pass 3.
>
> Sorry for jumping in, but I'm not quite understanding the purpose of
> $init_pid here, does it identify the ns which the process to be
> queried is in? Also see my questions below:
I was passing in initpid for a particular reason before, the second
argument is NOT meant to be an "initpid", it's meant to be the pid
(in caller's ns) of the observer pid - the pid in whose namespace we
are querying.
> 1. Given the example above, what's the return of getnspid(9, 3)?
> Is it 6(task t4) or 10(task t5)?
Assuming the caller is in init_pid_ns, then the return value is t5.
>
> 2. if there is a process in ns1 which is a child of process 1 has pid
> 10, but not in ns2, like below:
>
> init_pid_ns ns1 ns2
> t1 2
> t2 `- 3 1
> t3 `- 4 +- 5 1
> t4 `-6 | `-8 `-9
> t5 `-10 | `-9 `-10
> t6 `-11 `-10
>
> then what is the return of getnspid(10, 3)?
Assuming the caller is in init_pid_ns, the answer is t6. The question
was "In the pid_ns belonging to t2 (pid 3), what task does the pid
10 refer to".
next prev parent reply other threads:[~2014-07-28 13:25 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-03 12:18 chenhanxiao
2014-07-04 5:34 ` Yasunori Goto
2014-07-09 10:34 ` chenhanxiao
2014-07-15 4:16 ` Serge Hallyn
2014-07-21 10:47 ` chenhanxiao
2014-07-25 17:34 ` Serge Hallyn
2014-07-28 8:14 ` Hu Tao
2014-07-28 13:24 ` Serge Hallyn [this message]
2014-07-25 10:01 ` chenhanxiao
2014-08-04 22:20 ` Serge Hallyn
2014-08-07 10:03 ` chenhanxiao
2014-08-07 16:11 ` Serge Hallyn
2014-08-08 9:30 ` chenhanxiao
2014-08-28 13:49 ` Serge E. Hallyn
2014-08-29 9:59 ` chenhanxiao
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=20140728132455.GB464@ubuntumail \
--to=serge.hallyn@ubuntu.com \
--cc=chenhanxiao@cn.fujitsu.com \
--cc=containers@lists.linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=hutao@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=richard@nod.at \
--cc=segoon@openwall.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®