On Mon, May 26, 2014 at 12:05 PM, Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> wrote: > We need a direct method of getting the pid inside containers. > If some issues occurred inside a container guest, host user > could not know which process is in trouble just by guest pid: > the users of container guest only knew the pid inside containers. > This will bring obstacle for trouble shooting. > > This patch expands fields of Tgid and Pid: > a) In init_pid_ns, nothing changed; > > b) In one pidns, they will tell the pid inside containers: > Tgid: 1628 9 3 > Pid: 1628 9 3 > ** process id is 1628 in level 0, 9 in level 1, 3 in level 2. > > c) If pidns is nested, it depends on which pidns are you in. > Tgid: 9 3 > Pid: 9 3 > ** Views from level 1 for Pid 1628 in host. > > Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> > --- > fs/proc/array.c | 20 +++++++++++++------- > 1 file changed, 13 insertions(+), 7 deletions(-) > > diff --git a/fs/proc/array.c b/fs/proc/array.c > index 64db2bc..eef20dd 100644 > --- a/fs/proc/array.c > +++ b/fs/proc/array.c > @@ -173,17 +173,23 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, > cred = get_task_cred(p); > seq_printf(m, > "State:\t%s\n" > - "Tgid:\t%d\n" > - "Ngid:\t%d\n" > - "Pid:\t%d\n" > + "Ngid:\t%d\n", You're changing the ordering of Tgid and Ngid here. > + get_task_state(p), > + task_numa_group_id(p)); > + seq_puts(m, "Tgid:"); > + for (g = ns->level; g <= pid->level; g++) > + seq_printf(m, "\t%d ", > + task_tgid_nr_ns(p, pid->numbers[g].ns)); I like the idea but IMHO we should keep Tgid and Pid as is and better add two new fields to /proc/pid/status. What about NSpid and NSgid? > + seq_puts(m, "\nPid:"); > + for (g = ns->level; g <= pid->level; g++) > + seq_printf(m, "\t%d ", > + task_pid_nr_ns(p, pid->numbers[g].ns)); > + seq_putc(m, '\n'); > + seq_printf(m, > "PPid:\t%d\n" > "TracerPid:\t%d\n" > "Uid:\t%d\t%d\t%d\t%d\n" > "Gid:\t%d\t%d\t%d\t%d\n", > - get_task_state(p), > - task_tgid_nr_ns(p, ns), > - task_numa_group_id(p), > - pid_nr_ns(pid, ns), > ppid, tpid, > from_kuid_munged(user_ns, cred->uid), > from_kuid_munged(user_ns, cred->euid), > -- > 1.9.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- Thanks, //richard _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers