nsfs: Add a show_path method to fix mountinfo
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 24 May 2015 17:49:04 +0000 (12:49 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Sat, 11 Jul 2015 16:09:00 +0000 (11:09 -0500)
Today mountinfo displays a very unhelpful "/" for nsfs files.  Add a
show_path method returning the same string as ns_dname.  This results
in a bind mount of /proc/<pid>/ns/net showing up in /proc/<pid>/mountinfo as
"net:[1234...]" instead of "/".

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
fs/nsfs.c

index 99521e7..e4905fb 100644 (file)
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -4,6 +4,7 @@
 #include <linux/proc_ns.h>
 #include <linux/magic.h>
 #include <linux/ktime.h>
+#include <linux/seq_file.h>
 
 static struct vfsmount *nsfs_mnt;
 
@@ -136,9 +137,18 @@ out_invalid:
        return ERR_PTR(-EINVAL);
 }
 
+static int nsfs_show_path(struct seq_file *seq, struct dentry *dentry)
+{
+       struct inode *inode = d_inode(dentry);
+       const struct proc_ns_operations *ns_ops = dentry->d_fsdata;
+
+       return seq_printf(seq, "%s:[%lu]", ns_ops->name, inode->i_ino);
+}
+
 static const struct super_operations nsfs_ops = {
        .statfs = simple_statfs,
        .evict_inode = nsfs_evict,
+       .show_path = nsfs_show_path,
 };
 static struct dentry *nsfs_mount(struct file_system_type *fs_type,
                        int flags, const char *dev_name, void *data)