Re: [PATCH 0/5 RFC] Add an interface to discover relationships between namespaces
From: Michael Kerrisk (man-pages) <hidden>
Date: 2016-07-26 19:17:52
Also in:
linux-fsdevel, lkml
Hello Andrew, On 26 July 2016 at 20:25, Andrew Vagin [off-list ref] wrote:
On Tue, Jul 26, 2016 at 10:03:25AM +0200, Michael Kerrisk (man-pages) wrote:quoted
On 07/26/2016 04:54 AM, Andrew Vagin wrote:quoted
On Mon, Jul 25, 2016 at 09:59:43AM -0500, Eric W. Biederman wrote:quoted
"Michael Kerrisk (man-pages)" [off-list ref] writes:[snip]quoted
[snip]quoted
quoted
quoted
So, from my point of view, the important piece that was missing from your commit message was the note to use readlink("/proc/self/fd/%d") on the returned FDs. I think that detail needs to be part of the commit message (and also the man page text). I think it even be helpful to include the above program as part of the commit message: it helps people more quickly grasp the API.Please, please make the standard way to compare these things fstat. That is much less magic than a symlink, and a little more future proof. Possibly even kcmp.I like the idea to use kcmp to compare namespaces. I am going to add this functionality to kcmp and describe all these in the man page.Hi Andrey, Can you briefly sketch out the proposed API and how it would be used? I'd find it useful to see that even before the implementation.Sure. If a process wants to compare two namespaces, it needs to get file descriptors for them (open /proc/PID/ns/XXX, use new ioctl-s, find a process which has them), and then it calls kcmp(pid1, pid2, KCMP_NSFD, ns_fd1, ns_fd2) For example, if we want to compare pid namespaces for 1 and 2 processes:
What's the purpose of the following line, and the use of 'pid' in the kcmp() call?:
pid = getpid();
ns_fd1 = open("/proc/1/ns/pid")
ns_fd2 = open("/proc/2/ns/pid")
if (!kcmp(pid, pid, KCMP_NSFD, ns_fd1, ns_fd2))
printf("Both processes live in the same pid namespace\n");Thanks, Michael