Commit b24ee6c6 authored by Olga Kornievskaia's avatar Olga Kornievskaia Committed by Anna Schumaker
Browse files

NFS: allow deprecation of NFS UDP protocol



Add a kernel config CONFIG_NFS_DISABLE_UDP_SUPPORT to disallow NFS
UDP mounts and enable it by default.

Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent f7b37b8b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -196,3 +196,12 @@ config NFS_DEBUG
	depends on NFS_FS && SUNRPC_DEBUG
	select CRC32
	default y

config NFS_DISABLE_UDP_SUPPORT
       bool "NFS: Disable NFS UDP protocol support"
       depends on NFS_FS
       default y
       help
	 Choose Y here to disable the use of NFS over UDP. NFS over UDP
	 on modern networks (1Gb+) can lead to data corruption caused by
	 fragmentation during high loads.
+4 −0
Original line number Diff line number Diff line
@@ -474,6 +474,7 @@ void nfs_init_timeout_values(struct rpc_timeout *to, int proto,
			to->to_maxval = to->to_initval;
		to->to_exponential = 0;
		break;
#ifndef CONFIG_NFS_DISABLE_UDP_SUPPORT
	case XPRT_TRANSPORT_UDP:
		if (retrans == NFS_UNSPEC_RETRANS)
			to->to_retries = NFS_DEF_UDP_RETRANS;
@@ -484,6 +485,7 @@ void nfs_init_timeout_values(struct rpc_timeout *to, int proto,
		to->to_maxval = NFS_MAX_UDP_TIMEOUT;
		to->to_exponential = 1;
		break;
#endif
	default:
		BUG();
	}
@@ -580,8 +582,10 @@ static int nfs_start_lockd(struct nfs_server *server)
		default:
			nlm_init.protocol = IPPROTO_TCP;
			break;
#ifndef CONFIG_NFS_DISABLE_UDP_SUPPORT
		case XPRT_TRANSPORT_UDP:
			nlm_init.protocol = IPPROTO_UDP;
#endif
	}

	host = nlmclnt_init(&nlm_init);
+4 −0
Original line number Diff line number Diff line
@@ -1215,6 +1215,10 @@ static int nfs_fs_context_validate(struct fs_context *fc)
		}
	} else {
		nfs_set_mount_transport_protocol(ctx);
#ifdef CONFIG_NFS_DISABLE_UDP_SUPPORT
	       if (ctx->nfs_server.protocol == XPRT_TRANSPORT_UDP)
		       goto out_invalid_transport_udp;
#endif
		if (ctx->nfs_server.protocol == XPRT_TRANSPORT_RDMA)
			port = NFS_RDMA_PORT;
	}