]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
nfs: merge xdev and remote file_system_type
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 10 Dec 2019 12:30:58 +0000 (07:30 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 15 Jan 2020 15:15:16 +0000 (10:15 -0500)
they are identical now...

Reviewed-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/internal.h
fs/nfs/namespace.c
fs/nfs/nfs4super.c
fs/nfs/super.c

index 4a0ba66bc3aa04ba4cad7daaf8ada83e81245891..e338558b7908d20a625c3802f1d807ca8876acfb 100644 (file)
@@ -388,7 +388,7 @@ extern int nfs_wait_atomic_killable(atomic_t *p, unsigned int mode);
 /* super.c */
 extern const struct super_operations nfs_sops;
 extern struct file_system_type nfs_fs_type;
-extern struct file_system_type nfs_xdev_fs_type;
+extern struct file_system_type nfs_prepared_fs_type;
 #if IS_ENABLED(CONFIG_NFS_V4)
 extern struct file_system_type nfs4_referral_fs_type;
 #endif
index a00936dd153bb2d0ead6c221e14ba559a804d4a3..e5f4f2d760af60a2e555d7f982b38d60c6938a30 100644 (file)
@@ -257,7 +257,7 @@ struct vfsmount *nfs_do_submount(struct dentry *dentry, struct nfs_fh *fh,
        if (IS_ERR(devname))
                mnt = ERR_CAST(devname);
        else
-               mnt = vfs_submount(dentry, &nfs_xdev_fs_type, devname, &mount_info);
+               mnt = vfs_submount(dentry, &nfs_prepared_fs_type, devname, &mount_info);
 
        if (mount_info.server)
                nfs_free_server(mount_info.server);
index 2b34d8e124cde8038d972db8bb13e29b92b07799..1358d8078737d9d100599502514bb3aa6b9c2aea 100644 (file)
 
 static int nfs4_write_inode(struct inode *inode, struct writeback_control *wbc);
 static void nfs4_evict_inode(struct inode *inode);
-static struct dentry *nfs4_remote_mount(struct file_system_type *fs_type,
-       int flags, const char *dev_name, void *raw_data);
 static struct dentry *nfs4_referral_mount(struct file_system_type *fs_type,
        int flags, const char *dev_name, void *raw_data);
 
-static struct file_system_type nfs4_remote_fs_type = {
-       .owner          = THIS_MODULE,
-       .name           = "nfs4",
-       .mount          = nfs4_remote_mount,
-       .kill_sb        = nfs_kill_super,
-       .fs_flags       = FS_RENAME_DOES_D_MOVE|FS_BINARY_MOUNTDATA,
-};
-
 struct file_system_type nfs4_referral_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "nfs4",
@@ -91,16 +81,6 @@ static void nfs4_evict_inode(struct inode *inode)
        nfs_clear_inode(inode);
 }
 
-/*
- * Get the superblock for the NFS4 root partition
- */
-static struct dentry *
-nfs4_remote_mount(struct file_system_type *fs_type, int flags,
-                 const char *dev_name, void *info)
-{
-       return nfs_fs_mount_common(flags, dev_name, info);
-}
-
 struct nfs_referral_count {
        struct list_head list;
        const struct task_struct *task;
@@ -194,7 +174,7 @@ static struct dentry *do_nfs4_mount(struct nfs_server *server, int flags,
        else
                snprintf(root_devname, len, "%s:/", hostname);
        info->server = server;
-       root_mnt = vfs_kern_mount(&nfs4_remote_fs_type, flags, root_devname, info);
+       root_mnt = vfs_kern_mount(&nfs_prepared_fs_type, flags, root_devname, info);
        if (info->server)
                nfs_free_server(info->server);
        info->server = NULL;
index cb0ead628842c54616790162f2c767714790f725..60845dc864e723604da03dd66285af0319c93230 100644 (file)
@@ -293,7 +293,7 @@ static match_table_t nfs_vers_tokens = {
        { Opt_vers_err, NULL }
 };
 
-static struct dentry *nfs_xdev_mount(struct file_system_type *fs_type,
+static struct dentry *nfs_prepared_mount(struct file_system_type *fs_type,
                int flags, const char *dev_name, void *raw_data);
 
 struct file_system_type nfs_fs_type = {
@@ -306,13 +306,14 @@ struct file_system_type nfs_fs_type = {
 MODULE_ALIAS_FS("nfs");
 EXPORT_SYMBOL_GPL(nfs_fs_type);
 
-struct file_system_type nfs_xdev_fs_type = {
+struct file_system_type nfs_prepared_fs_type = {
        .owner          = THIS_MODULE,
        .name           = "nfs",
-       .mount          = nfs_xdev_mount,
+       .mount          = nfs_prepared_mount,
        .kill_sb        = nfs_kill_super,
        .fs_flags       = FS_RENAME_DOES_D_MOVE|FS_BINARY_MOUNTDATA,
 };
+EXPORT_SYMBOL_GPL(nfs_prepared_fs_type);
 
 const struct super_operations nfs_sops = {
        .alloc_inode    = nfs_alloc_inode,
@@ -2791,11 +2792,12 @@ void nfs_kill_super(struct super_block *s)
 EXPORT_SYMBOL_GPL(nfs_kill_super);
 
 /*
- * Clone an NFS2/3/4 server record on xdev traversal (FSID-change)
+ * Internal use only: mount_info is already set up by caller.
+ * Used for mountpoint crossings and for nfs4 root.
  */
 static struct dentry *
-nfs_xdev_mount(struct file_system_type *fs_type, int flags,
-               const char *dev_name, void *raw_data)
+nfs_prepared_mount(struct file_system_type *fs_type, int flags,
+                  const char *dev_name, void *raw_data)
 {
        return nfs_fs_mount_common(flags, dev_name, raw_data);
 }