SUNRPC: Use only rpcbind v2 for AF_INET requests
Some server vendors support the higher versions of rpcbind only for AF_INET6. The kernel doesn't need to use v3 or v4 for AF_INET anyway, so change the kernel's rpcbind client to query AF_INET servers over rpcbind v2 only. This has a few interesting benefits: 1. If the rpcbind request is going over TCP, and the server doesn't support rpcbind versions 3 or 4, the client reduces by two the number of ephemeral ports left in TIME_WAIT for each rpcbind request. This will help during NFS mount storms. 2. The rpcbind interaction with servers that don't support rpcbind versions 3 or 4 will use less network traffic. Also helpful during mount storms. 3. We can eliminate the kernel build option that controls whether the kernel's rpcbind client uses rpcbind version 3 and 4 for AF_INET servers. Less complicated kernel configuration... Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
8842413aa4
commit
40fef8a649
21
fs/Kconfig
21
fs/Kconfig
|
@ -1799,27 +1799,6 @@ config SUNRPC_XPRT_RDMA
|
|||
|
||||
If unsure, say N.
|
||||
|
||||
config SUNRPC_BIND34
|
||||
bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)"
|
||||
depends on SUNRPC && EXPERIMENTAL
|
||||
default n
|
||||
help
|
||||
RPC requests over IPv6 networks require support for larger
|
||||
addresses when performing an RPC bind. Sun added support for
|
||||
IPv6 addressing by creating two new versions of the rpcbind
|
||||
protocol (RFC 1833).
|
||||
|
||||
This option enables support in the kernel RPC client for
|
||||
querying rpcbind servers via versions 3 and 4 of the rpcbind
|
||||
protocol. The kernel automatically falls back to version 2
|
||||
if a remote rpcbind service does not support versions 3 or 4.
|
||||
By themselves, these new versions do not provide support for
|
||||
RPC over IPv6, but the new protocol versions are necessary to
|
||||
support it.
|
||||
|
||||
If unsure, say N to get traditional behavior (version 2 rpcbind
|
||||
requests only).
|
||||
|
||||
config RPCSEC_GSS_KRB5
|
||||
tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
|
||||
depends on SUNRPC && EXPERIMENTAL
|
||||
|
|
|
@ -592,16 +592,6 @@ static struct rpc_procinfo rpcb_procedures4[] = {
|
|||
};
|
||||
|
||||
static struct rpcb_info rpcb_next_version[] = {
|
||||
#ifdef CONFIG_SUNRPC_BIND34
|
||||
{
|
||||
.rpc_vers = RPCBVERS_4,
|
||||
.rpc_proc = &rpcb_procedures4[RPCBPROC_GETADDR],
|
||||
},
|
||||
{
|
||||
.rpc_vers = RPCBVERS_3,
|
||||
.rpc_proc = &rpcb_procedures3[RPCBPROC_GETADDR],
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.rpc_vers = RPCBVERS_2,
|
||||
.rpc_proc = &rpcb_procedures2[RPCBPROC_GETPORT],
|
||||
|
@ -612,7 +602,6 @@ static struct rpcb_info rpcb_next_version[] = {
|
|||
};
|
||||
|
||||
static struct rpcb_info rpcb_next_version6[] = {
|
||||
#ifdef CONFIG_SUNRPC_BIND34
|
||||
{
|
||||
.rpc_vers = RPCBVERS_4,
|
||||
.rpc_proc = &rpcb_procedures4[RPCBPROC_GETADDR],
|
||||
|
@ -621,7 +610,6 @@ static struct rpcb_info rpcb_next_version6[] = {
|
|||
.rpc_vers = RPCBVERS_3,
|
||||
.rpc_proc = &rpcb_procedures3[RPCBPROC_GETADDR],
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.rpc_proc = NULL,
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue