NFS: Make v2 configurable
authorBryan Schumaker <bjschuma@netapp.com>
Thu, 10 May 2012 20:47:19 +0000 (16:47 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 15 May 2012 00:42:22 +0000 (17:42 -0700)
With this patch NFS v2 can be disabled during Kconfig.  I default the
option to "y" to match the current behavior.

Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/Kconfig
fs/nfs/Makefile
fs/nfs/client.c

index 2a0e6c599147aac9e66a5969c9c00593aa0dd380..66b0f4cb520f7e212678d17d2a2f3ab471401954 100644 (file)
@@ -29,6 +29,16 @@ config NFS_FS
 
          If unsure, say N.
 
+config NFS_V2
+       bool "NFS client support for NFS version 2"
+       depends on NFS_FS
+       default y
+       help
+         This option enables support for version 2 of the NFS protocol
+         (RFC 1094) in the kernel's NFS client.
+
+         If unsure, say Y.
+
 config NFS_V3
        bool "NFS client support for NFS version 3"
        depends on NFS_FS
index b58613d0abb3f62eaa3bb29fd4b8141ebdb596d6..7ddd45d9f1707d24a7661a402d95f58aef108c03 100644 (file)
@@ -4,11 +4,12 @@
 
 obj-$(CONFIG_NFS_FS) += nfs.o
 
-nfs-y                  := client.o dir.o file.o getroot.o inode.o super.o nfs2xdr.o \
-                          direct.o pagelist.o proc.o read.o symlink.o unlink.o \
+nfs-y                  := client.o dir.o file.o getroot.o inode.o super.o \
+                          direct.o pagelist.o read.o symlink.o unlink.o \
                           write.o namespace.o mount_clnt.o \
                           dns_resolve.o cache_lib.o
 nfs-$(CONFIG_ROOT_NFS) += nfsroot.o
+nfs-$(CONFIG_NFS_V2)   += proc.o nfs2xdr.o
 nfs-$(CONFIG_NFS_V3)   += nfs3proc.o nfs3xdr.o
 nfs-$(CONFIG_NFS_V3_ACL)       += nfs3acl.o
 nfs-$(CONFIG_NFS_V4)   += nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o \
index a8f8de618d7337b174e420ebb4e72212be894ce8..8f1c65210afb40a293fd33ef2d00626084d9e5c7 100644 (file)
@@ -90,7 +90,9 @@ static bool nfs4_disable_idmapping = true;
  * RPC cruft for NFS
  */
 static const struct rpc_version *nfs_version[5] = {
+#ifdef CONFIG_NFS_V2
        [2]                     = &nfs_version2,
+#endif
 #ifdef CONFIG_NFS_V3
        [3]                     = &nfs_version3,
 #endif
@@ -847,7 +849,7 @@ static int nfs_init_server(struct nfs_server *server,
                .hostname = data->nfs_server.hostname,
                .addr = (const struct sockaddr *)&data->nfs_server.address,
                .addrlen = data->nfs_server.addrlen,
-               .rpc_ops = &nfs_v2_clientops,
+               .rpc_ops = NULL,
                .proto = data->nfs_server.protocol,
                .net = data->net,
        };
@@ -857,10 +859,20 @@ static int nfs_init_server(struct nfs_server *server,
 
        dprintk("--> nfs_init_server()\n");
 
+       switch (data->version) {
+#ifdef CONFIG_NFS_V2
+       case 2:
+               cl_init.rpc_ops = &nfs_v2_clientops;
+               break;
+#endif
 #ifdef CONFIG_NFS_V3
-       if (data->version == 3)
+       case 3:
                cl_init.rpc_ops = &nfs_v3_clientops;
+               break;
 #endif
+       default:
+               return -EPROTONOSUPPORT;
+       }
 
        nfs_init_timeout_values(&timeparms, data->nfs_server.protocol,
                        data->timeo, data->retrans);