aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2008-06-25 17:24:54 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-07-09 12:09:37 -0400
commit40fef8a649e5344bfb6a67a7cc3def3e0dad6448 (patch)
treebfcbea1a0cf81ca14d59debb6fb77e83a430b2ab
parent8842413aa4c3220ce9313791f99808fc149ca16d (diff)
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>
-rw-r--r--fs/Kconfig21
-rw-r--r--net/sunrpc/rpcb_clnt.c12
2 files changed, 0 insertions, 33 deletions
diff --git a/fs/Kconfig b/fs/Kconfig
index 1c16de9611e9..0ce72dcd6b96 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -1799,27 +1799,6 @@ config SUNRPC_XPRT_RDMA
1799 1799
1800 If unsure, say N. 1800 If unsure, say N.
1801 1801
1802config SUNRPC_BIND34
1803 bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)"
1804 depends on SUNRPC && EXPERIMENTAL
1805 default n
1806 help
1807 RPC requests over IPv6 networks require support for larger
1808 addresses when performing an RPC bind. Sun added support for
1809 IPv6 addressing by creating two new versions of the rpcbind
1810 protocol (RFC 1833).
1811
1812 This option enables support in the kernel RPC client for
1813 querying rpcbind servers via versions 3 and 4 of the rpcbind
1814 protocol. The kernel automatically falls back to version 2
1815 if a remote rpcbind service does not support versions 3 or 4.
1816 By themselves, these new versions do not provide support for
1817 RPC over IPv6, but the new protocol versions are necessary to
1818 support it.
1819
1820 If unsure, say N to get traditional behavior (version 2 rpcbind
1821 requests only).
1822
1823config RPCSEC_GSS_KRB5 1802config RPCSEC_GSS_KRB5
1824 tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)" 1803 tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
1825 depends on SUNRPC && EXPERIMENTAL 1804 depends on SUNRPC && EXPERIMENTAL
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
index 625ba72e624a..c62e446723ae 100644
--- a/net/sunrpc/rpcb_clnt.c
+++ b/net/sunrpc/rpcb_clnt.c
@@ -592,16 +592,6 @@ static struct rpc_procinfo rpcb_procedures4[] = {
592}; 592};
593 593
594static struct rpcb_info rpcb_next_version[] = { 594static struct rpcb_info rpcb_next_version[] = {
595#ifdef CONFIG_SUNRPC_BIND34
596 {
597 .rpc_vers = RPCBVERS_4,
598 .rpc_proc = &rpcb_procedures4[RPCBPROC_GETADDR],
599 },
600 {
601 .rpc_vers = RPCBVERS_3,
602 .rpc_proc = &rpcb_procedures3[RPCBPROC_GETADDR],
603 },
604#endif
605 { 595 {
606 .rpc_vers = RPCBVERS_2, 596 .rpc_vers = RPCBVERS_2,
607 .rpc_proc = &rpcb_procedures2[RPCBPROC_GETPORT], 597 .rpc_proc = &rpcb_procedures2[RPCBPROC_GETPORT],
@@ -612,7 +602,6 @@ static struct rpcb_info rpcb_next_version[] = {
612}; 602};
613 603
614static struct rpcb_info rpcb_next_version6[] = { 604static struct rpcb_info rpcb_next_version6[] = {
615#ifdef CONFIG_SUNRPC_BIND34
616 { 605 {
617 .rpc_vers = RPCBVERS_4, 606 .rpc_vers = RPCBVERS_4,
618 .rpc_proc = &rpcb_procedures4[RPCBPROC_GETADDR], 607 .rpc_proc = &rpcb_procedures4[RPCBPROC_GETADDR],
@@ -621,7 +610,6 @@ static struct rpcb_info rpcb_next_version6[] = {
621 .rpc_vers = RPCBVERS_3, 610 .rpc_vers = RPCBVERS_3,
622 .rpc_proc = &rpcb_procedures3[RPCBPROC_GETADDR], 611 .rpc_proc = &rpcb_procedures3[RPCBPROC_GETADDR],
623 }, 612 },
624#endif
625 { 613 {
626 .rpc_proc = NULL, 614 .rpc_proc = NULL,
627 }, 615 },