RE: [RFC PATCH 2/3] procfs: show hierarchy of pid namespace

From: Chen, Hanxiao
Date: Thu Sep 04 2014 - 06:13:57 EST


Hi,

> -----Original Message-----
> Hi,
>
> On Wed, Sep 03, 2014 at 18:29 +0800, Chen Hanxiao wrote:
> > This patch will show the hierarchy of pid namespace
> > under /proc/pidns like:
> > /proc/pidns
> > âââ hierarchy
> > â âââ pidns4026532399
> > â â âââ pidns -> /proc/2863/ns/pid
> > â â âââ pidns4026532515
> > â â âââ pidns -> /proc/10611/ns/pid
> > â âââ pidns4026532504
> > â âââ pidns -> /proc/4450/ns/pid
> > âââ refresh
>
> Re: this hierarchy:
>
> 1) I think it is a bit weird that there is a global hierarchy of NSs with
> symlinks to actual NSs located in some random /proc/PID/ns/pid

It will be a symlink to the init process (PID 1) of that ns.
So it could stand for that namespace.

> directories. It would be better to have a global tree with actual
> directories and process directories would have symlinks to some subdirs
> in this global tree.

Do you mean create symlinks from every /proc/PID/ns/pid to a global tree?
If that,
a) we need to rebuild this global tree when pid ns changed.
It would be a burden even if we don't need to know the hierarchy info.
b) we need to prepare different tree views for different pid ns level.

>
> 2) The naming can be changed for even more trivial NSs traversal.
> If the hierarchy is as following --
>
> hierarchy/
> pidns1234/
> pidns
> children/
> pidns3456/
> ...
> pidns5678/
> ...
>
> -- then it is more simple to traverse the tree as child NSs are all
> files in pidnsXXX/children/, not all files of the mask pidns[0-9]+.

Yeh, naming pidns($init_pid_in_ns) is good idea.
IIUC, my current proposal is the same as your opinion,
but free from children dir.

Tree view like your style:
init_pid_ns
|
--- ns10--
| |
ns20 ns21
|
ns30

And this patch suggested:
hierarchy/
âââ nspid4026532393
âââ nspid -> /proc/4652/ns/pid --ns10
âââ nspid4026532489
â âââ nspid -> /proc/4701/ns/pid --ns20
âââ nspid4026532496
âââ nspid -> /proc/4706/ns/pid --ns21
âââ nspid4026532499
âââ nspid -> /proc/4714/ns/pid --ns30


Thanks,
- Chen

>
> > a) hierarchy dir:
> > use to show hierarchy infomation using dir and symlinks.
> > dirs are named as pidns($inum)
> > a symlink is created under pidns($inum), and linked to
> > that pid namespace.
> >
> > b) refresh
> > trigger key.
> > We need to write sth to /proc/nspid/refresh,
> > then we could get hierarchy info
> > under /proc/pidns/hierarchy.
> >
>
> --
> Vasily