On Wed, 2012-08-08 at 10:42 -0400, Bryan Schumaker wrote: > So you're suggesting something like this? I can split it into two patches for the final submission, one to rename the modules and one to move the nfs4_fs_type back to nfs.ko. One patch should suffice, since you can't split this up into something that fixes both issues. Then maybe we can add a separate patch with a MODULE_ALIAS("nfs4") so that distros can start removing the /etc/modprobe.conf alias entries. > diff --git a/fs/nfs/Makefile b/fs/nfs/Makefile > index 8bf3a3f..b7db608 100644 > --- a/fs/nfs/Makefile > +++ b/fs/nfs/Makefile > @@ -12,19 +12,19 @@ nfs-$(CONFIG_ROOT_NFS) += nfsroot.o > nfs-$(CONFIG_SYSCTL) += sysctl.o > nfs-$(CONFIG_NFS_FSCACHE) += fscache.o fscache-index.o > > -obj-$(CONFIG_NFS_V2) += nfs2.o > -nfs2-y := nfs2super.o proc.o nfs2xdr.o > +obj-$(CONFIG_NFS_V2) += nfsv2.o > +nfsv2-y := nfs2super.o proc.o nfs2xdr.o > > -obj-$(CONFIG_NFS_V3) += nfs3.o > -nfs3-y := nfs3super.o nfs3client.o nfs3proc.o nfs3xdr.o > -nfs3-$(CONFIG_NFS_V3_ACL) += nfs3acl.o > +obj-$(CONFIG_NFS_V3) += nfsv3.o > +nfsv3-y := nfs3super.o nfs3client.o nfs3proc.o nfs3xdr.o > +nfsv3-$(CONFIG_NFS_V3_ACL) += nfs3acl.o > > -obj-$(CONFIG_NFS_V4) += nfs4.o > -nfs4-y := nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o nfs4super.o nfs4file.o \ > +obj-$(CONFIG_NFS_V4) += nfsv4.o > +nfsv4-y := nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o nfs4super.o nfs4file.o \ > delegation.o idmap.o callback.o callback_xdr.o callback_proc.o \ > nfs4namespace.o nfs4getroot.o nfs4client.o > -nfs4-$(CONFIG_SYSCTL) += nfs4sysctl.o > -nfs4-$(CONFIG_NFS_V4_1) += pnfs.o pnfs_dev.o > +nfsv4-$(CONFIG_SYSCTL) += nfs4sysctl.o > +nfsv4-$(CONFIG_NFS_V4_1) += pnfs.o pnfs_dev.o > > obj-$(CONFIG_PNFS_FILE_LAYOUT) += nfs_layout_nfsv41_files.o > nfs_layout_nfsv41_files-y := nfs4filelayout.o nfs4filelayoutdev.o > diff --git a/fs/nfs/client.c b/fs/nfs/client.c > index 9fc0d9d..9969444 100644 > --- a/fs/nfs/client.c > +++ b/fs/nfs/client.c > @@ -105,7 +105,7 @@ struct nfs_subversion *get_nfs_version(unsigned int version) > > if (IS_ERR(nfs)) { > mutex_lock(&nfs_version_mutex); > - request_module("nfs%d", version); > + request_module("nfsv%d", version); > nfs = find_nfs_version(version); > mutex_unlock(&nfs_version_mutex); > } > diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h > index 19c1a56..43f4971 100644 > --- a/fs/nfs/nfs4_fs.h > +++ b/fs/nfs/nfs4_fs.h > @@ -205,6 +205,9 @@ extern const struct dentry_operations nfs4_dentry_operations; > int nfs_atomic_open(struct inode *, struct dentry *, struct file *, > > +/* super.c */ > +extern struct file_system_type nfs4_fs_type; > + > /* nfs4namespace.c */ > rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *); > struct rpc_clnt *nfs4_create_sec_client(struct rpc_clnt *, struct inode *, struct qstr *); > diff --git a/fs/nfs/nfs4super.c b/fs/nfs/nfs4super.c > index 12a31a9..bd61221 100644 > --- a/fs/nfs/nfs4super.c > +++ b/fs/nfs/nfs4super.c > @@ -23,14 +23,6 @@ static struct dentry *nfs4_referral_mount(struct file_system_type *fs_type, > static struct dentry *nfs4_remote_referral_mount(struct file_system_type *fs_type, > int flags, const char *dev_name, void *raw_data); > > -static struct file_system_type nfs4_fs_type = { > - .owner = THIS_MODULE, > - .name = "nfs4", > - .mount = nfs_fs_mount, > - .kill_sb = nfs_kill_super, > - .fs_flags = FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT|FS_BINARY_MOUNTDATA, > -}; > - > static struct file_system_type nfs4_remote_fs_type = { > .owner = THIS_MODULE, > .name = "nfs4", > @@ -344,14 +336,8 @@ static int __init init_nfs_v4(void) > if (err) > goto out1; > > - err = register_filesystem(&nfs4_fs_type); > - if (err < 0) > - goto out2; > - > register_nfs_version(&nfs_v4); > return 0; > -out2: > - nfs4_unregister_sysctl(); > out1: > nfs_idmap_quit(); > out: > @@ -361,7 +347,6 @@ out: > static void __exit exit_nfs_v4(void) > { > unregister_nfs_version(&nfs_v4); > - unregister_filesystem(&nfs4_fs_type); > nfs4_unregister_sysctl(); > nfs_idmap_quit(); > } > diff --git a/fs/nfs/super.c b/fs/nfs/super.c > index ac6a3c5..49b2dfa 100644 > --- a/fs/nfs/super.c > +++ b/fs/nfs/super.c > @@ -319,6 +319,15 @@ EXPORT_SYMBOL_GPL(nfs_sops); > static void nfs4_validate_mount_flags(struct nfs_parsed_mount_data *); > static int nfs4_validate_mount_data(void *options, > struct nfs_parsed_mount_data *args, const char *dev_name); > + > +struct file_system_type nfs4_fs_type = { > + .owner = THIS_MODULE, > + .name = "nfs4", > + .mount = nfs_fs_mount, > + .kill_sb = nfs_kill_super, > + .fs_flags = FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT|FS_BINARY_MOUNTDATA, > +}; > +EXPORT_SYMBOL_GPL(nfs4_fs_type); > #endif > > static struct shrinker acl_shrinker = { > @@ -326,6 +335,27 @@ static struct shrinker acl_shrinker = { > .seeks = DEFAULT_SEEKS, > }; > > +#if IS_ENABLED(CONFIG_NFS_V4) > +static int __init register_nfs4_fs(void) > +{ > + return register_filesystem(&nfs4_fs_type); > +} > + > +static void unregister_nfs4_fs(void) > +{ > + unregister_filesystem(&nfs4_fs_type); > +} > +#else > +static int __init register_nfs4_fs(void) > +{ > + return 0; > +} > + > +static void unregister_nfs4_fs(void) > +{ > +} > +#endif /* CONFIG_NFS_V4 */ Why not put these helpers in the same section as the declaration of nfs4_fs_type? > + > /* > * Register the NFS filesystems > */ > @@ -337,12 +367,18 @@ int __init register_nfs_fs(void) > if (ret < 0) > goto error_0; > > - ret = nfs_register_sysctl(); > + ret = register_nfs4_fs(); > if (ret < 0) > goto error_1; > + > + ret = nfs_register_sysctl(); > + if (ret < 0) > + goto error_2; > register_shrinker(&acl_shrinker); > return 0; > > +error_2: > + unregister_nfs4_fs(); > error_1: > unregister_filesystem(&nfs_fs_type); > error_0: > @@ -356,6 +392,7 @@ void __exit unregister_nfs_fs(void) > { > unregister_shrinker(&acl_shrinker); > nfs_unregister_sysctl(); > + unregister_nfs4_fs(); > unregister_filesystem(&nfs_fs_type); > } > -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥