nfs: propagate devname to nfs{,4}_get_root()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 16 Mar 2011 09:27:27 +0000 (05:27 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 16 Mar 2011 20:27:04 +0000 (16:27 -0400)
step 1 of ->mnt_devname fixes: make sure we have the value of devname
available in ..._get_root().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/nfs/getroot.c
fs/nfs/internal.h
fs/nfs/super.c

index b5ffe8fa291f73c2f1ad0a43bc42b3186158a911..4d6e5a317e6d2f17f4823ec5aa5b69de731768bf 100644 (file)
@@ -75,7 +75,8 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i
 /*
  * get an NFS2/NFS3 root dentry from the root filehandle
  */
-struct dentry *nfs_get_root(struct super_block *sb, struct nfs_fh *mntfh)
+struct dentry *nfs_get_root(struct super_block *sb, struct nfs_fh *mntfh,
+                           const char *devname)
 {
        struct nfs_server *server = NFS_SB(sb);
        struct nfs_fsinfo fsinfo;
@@ -169,7 +170,8 @@ out:
 /*
  * get an NFS4 root dentry from the root filehandle
  */
-struct dentry *nfs4_get_root(struct super_block *sb, struct nfs_fh *mntfh)
+struct dentry *nfs4_get_root(struct super_block *sb, struct nfs_fh *mntfh,
+                            const char *devname)
 {
        struct nfs_server *server = NFS_SB(sb);
        struct nfs_fattr *fattr = NULL;
index cf9fdbdabc675ad635e7d2183904d930d6995f5c..9e5a003ccc535f3740789ca109fa9bb99cd30e43 100644 (file)
@@ -254,9 +254,11 @@ extern char *nfs_path(const char *base,
 extern struct vfsmount *nfs_d_automount(struct path *path);
 
 /* getroot.c */
-extern struct dentry *nfs_get_root(struct super_block *, struct nfs_fh *);
+extern struct dentry *nfs_get_root(struct super_block *, struct nfs_fh *,
+                                  const char *);
 #ifdef CONFIG_NFS_V4
-extern struct dentry *nfs4_get_root(struct super_block *, struct nfs_fh *);
+extern struct dentry *nfs4_get_root(struct super_block *, struct nfs_fh *,
+                                   const char *);
 
 extern int nfs4_get_rootfh(struct nfs_server *server, struct nfs_fh *mntfh);
 #endif
index b68c8607770fcf09188882f6823b69f894aa24d7..1d81032b226a1bf16b8fb2e31de03fb4ee6311ec 100644 (file)
@@ -2336,7 +2336,7 @@ static int nfs_get_sb(struct file_system_type *fs_type,
                        s, data ? data->fscache_uniq : NULL, NULL);
        }
 
-       mntroot = nfs_get_root(s, mntfh);
+       mntroot = nfs_get_root(s, mntfh, dev_name);
        if (IS_ERR(mntroot)) {
                error = PTR_ERR(mntroot);
                goto error_splat_super;
@@ -2450,7 +2450,7 @@ nfs_xdev_mount(struct file_system_type *fs_type, int flags,
                nfs_fscache_get_super_cookie(s, NULL, data);
        }
 
-       mntroot = nfs_get_root(s, data->fh);
+       mntroot = nfs_get_root(s, data->fh, dev_name);
        if (IS_ERR(mntroot)) {
                error = PTR_ERR(mntroot);
                goto error_splat_super;
@@ -2718,7 +2718,7 @@ nfs4_remote_mount(struct file_system_type *fs_type, int flags,
                        s, data ? data->fscache_uniq : NULL, NULL);
        }
 
-       mntroot = nfs4_get_root(s, mntfh);
+       mntroot = nfs4_get_root(s, mntfh, dev_name);
        if (IS_ERR(mntroot)) {
                error = PTR_ERR(mntroot);
                goto error_splat_super;
@@ -3033,7 +3033,7 @@ nfs4_xdev_mount(struct file_system_type *fs_type, int flags,
                nfs_fscache_get_super_cookie(s, NULL, data);
        }
 
-       mntroot = nfs4_get_root(s, data->fh);
+       mntroot = nfs4_get_root(s, data->fh, dev_name);
        if (IS_ERR(mntroot)) {
                error = PTR_ERR(mntroot);
                goto error_splat_super;
@@ -3120,7 +3120,7 @@ nfs4_remote_referral_mount(struct file_system_type *fs_type, int flags,
                nfs_fscache_get_super_cookie(s, NULL, data);
        }
 
-       mntroot = nfs4_get_root(s, mntfh);
+       mntroot = nfs4_get_root(s, mntfh, dev_name);
        if (IS_ERR(mntroot)) {
                error = PTR_ERR(mntroot);
                goto error_splat_super;