OSDN Git Service

vfs: switch ->show_devname() to struct dentry *
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 9 Dec 2011 02:32:45 +0000 (21:32 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 7 Jan 2012 04:16:54 +0000 (23:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/nfs/super.c
fs/proc_namespace.c
include/linux/fs.h

index dd74d3b..6e6faa1 100644 (file)
@@ -263,7 +263,7 @@ static match_table_t nfs_local_lock_tokens = {
 static void nfs_umount_begin(struct super_block *);
 static int  nfs_statfs(struct dentry *, struct kstatfs *);
 static int  nfs_show_options(struct seq_file *, struct vfsmount *);
-static int  nfs_show_devname(struct seq_file *, struct vfsmount *);
+static int  nfs_show_devname(struct seq_file *, struct dentry *);
 static int  nfs_show_path(struct seq_file *, struct vfsmount *);
 static int  nfs_show_stats(struct seq_file *, struct dentry *);
 static struct dentry *nfs_fs_mount(struct file_system_type *,
@@ -760,14 +760,14 @@ static void show_pnfs(struct seq_file *m, struct nfs_server *server) {}
 #endif
 #endif
 
-static int nfs_show_devname(struct seq_file *m, struct vfsmount *mnt)
+static int nfs_show_devname(struct seq_file *m, struct dentry *root)
 {
        char *page = (char *) __get_free_page(GFP_KERNEL);
        char *devname, *dummy;
        int err = 0;
        if (!page)
                return -ENOMEM;
-       devname = nfs_path(&dummy, mnt->mnt_root, page, PAGE_SIZE);
+       devname = nfs_path(&dummy, root, page, PAGE_SIZE);
        if (IS_ERR(devname))
                err = PTR_ERR(devname);
        else
index 61a09a6..6d4583d 100644 (file)
@@ -94,9 +94,10 @@ static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
        struct mount *r = real_mount(mnt);
        int err = 0;
        struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt };
+       struct super_block *sb = mnt_path.dentry->d_sb;
 
-       if (mnt->mnt_sb->s_op->show_devname) {
-               err = mnt->mnt_sb->s_op->show_devname(m, mnt);
+       if (sb->s_op->show_devname) {
+               err = sb->s_op->show_devname(m, mnt_path.dentry);
                if (err)
                        goto out;
        } else {
@@ -105,14 +106,14 @@ static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
        seq_putc(m, ' ');
        seq_path(m, &mnt_path, " \t\n\\");
        seq_putc(m, ' ');
-       show_type(m, mnt->mnt_sb);
+       show_type(m, sb);
        seq_puts(m, __mnt_is_readonly(mnt) ? " ro" : " rw");
-       err = show_sb_opts(m, mnt->mnt_sb);
+       err = show_sb_opts(m, sb);
        if (err)
                goto out;
        show_mnt_opts(m, mnt);
-       if (mnt->mnt_sb->s_op->show_options)
-               err = mnt->mnt_sb->s_op->show_options(m, mnt);
+       if (sb->s_op->show_options)
+               err = sb->s_op->show_options(m, mnt);
        seq_puts(m, " 0 0\n");
 out:
        return err;
@@ -163,7 +164,7 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
        show_type(m, sb);
        seq_putc(m, ' ');
        if (sb->s_op->show_devname)
-               err = sb->s_op->show_devname(m, mnt);
+               err = sb->s_op->show_devname(m, mnt->mnt_root);
        else
                mangle(m, r->mnt_devname ? r->mnt_devname : "none");
        if (err)
@@ -189,7 +190,7 @@ static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt)
        /* device */
        if (sb->s_op->show_devname) {
                seq_puts(m, "device ");
-               err = sb->s_op->show_devname(m, mnt);
+               err = sb->s_op->show_devname(m, mnt_path.dentry);
        } else {
                if (r->mnt_devname) {
                        seq_puts(m, "device ");
index b2e4b6f..a8dff43 100644 (file)
@@ -1673,7 +1673,7 @@ struct super_operations {
        void (*umount_begin) (struct super_block *);
 
        int (*show_options)(struct seq_file *, struct vfsmount *);
-       int (*show_devname)(struct seq_file *, struct vfsmount *);
+       int (*show_devname)(struct seq_file *, struct dentry *);
        int (*show_path)(struct seq_file *, struct vfsmount *);
        int (*show_stats)(struct seq_file *, struct dentry *);
 #ifdef CONFIG_QUOTA