Messages in this thread | | | Date | Mon, 17 Mar 2014 15:30:26 +0400 | From | Pavel Emelyanov <> | Subject | Re: [PATCH] proc: show mnt_id in fdinfo files |
| |
On 03/17/2014 02:39 PM, Andrey Vagin wrote: > Currently we don't have a way how to determing from which mount point > file has been opened. This information is required for proper dumping > and restoring file descriptos due to presence of mount namespaces. It's > possible, that two file descriptors are opened using the same paths, but > one fd references mount point from one namespace while the other fd -- > from other namespace. > > Cc: Al Viro <viro@zeniv.linux.org.uk> > Cc: Oleg Nesterov <oleg@redhat.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Cyrill Gorcunov <gorcunov@openvz.org> > Cc: Pavel Emelyanov <xemul@parallels.com> > Signed-off-by: Andrey Vagin <avagin@openvz.org>
These IDs are already shown in the /proc/$pid/mountinfo, and for some FSs can be obtained via path_to_handle_at(), so this patch just makes it work for any FS and speeds things up.
Acked-by: Pavel Emelyanov <xemul@parallels.com>
> --- > fs/proc/fd.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/fs/proc/fd.c b/fs/proc/fd.c > index 985ea88..0788d09 100644 > --- a/fs/proc/fd.c > +++ b/fs/proc/fd.c > @@ -11,6 +11,7 @@ > > #include <linux/proc_fs.h> > > +#include "../mount.h" > #include "internal.h" > #include "fd.h" > > @@ -48,8 +49,9 @@ static int seq_show(struct seq_file *m, void *v) > } > > if (!ret) { > - seq_printf(m, "pos:\t%lli\nflags:\t0%o\n", > - (long long)file->f_pos, f_flags); > + seq_printf(m, "pos:\t%lli\nflags:\t0%o\nmnt_id:\t%i\n", > + (long long)file->f_pos, f_flags, > + real_mount(file->f_path.mnt)->mnt_id); > if (file->f_op->show_fdinfo) > ret = file->f_op->show_fdinfo(m, file); > fput(file); >
| |