diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2007-03-29 16:48:33 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-05-01 01:17:16 -0400 |
commit | 00a6e7bbf990e3a5e59a9a1e6a68e99c94fe001c (patch) | |
tree | fb0427a8b08702c99bf5eba9c6d5bb16ea4ee2bc | |
parent | 4c2eaf073f0cc2b5bf593b8133c078b9d9406e95 (diff) |
SUNRPC: RPC client should retry with different versions of rpcbind
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r-- | fs/Kconfig | 12 | ||||
-rw-r--r-- | net/sunrpc/clnt.c | 6 |
2 files changed, 16 insertions, 2 deletions
diff --git a/fs/Kconfig b/fs/Kconfig index a42f767dcdd..20bec7767dd 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -1734,6 +1734,18 @@ config SUNRPC | |||
1734 | config SUNRPC_GSS | 1734 | config SUNRPC_GSS |
1735 | tristate | 1735 | tristate |
1736 | 1736 | ||
1737 | config SUNRPC_BIND34 | ||
1738 | bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)" | ||
1739 | depends on SUNRPC && EXPERIMENTAL | ||
1740 | help | ||
1741 | Provides kernel support for querying rpcbind servers via versions 3 | ||
1742 | and 4 of the rpcbind protocol. The kernel automatically falls back | ||
1743 | to version 2 if a remote rpcbind service does not support versions | ||
1744 | 3 or 4. | ||
1745 | |||
1746 | If unsure, say N to get traditional behavior (version 2 rpcbind | ||
1747 | requests only). | ||
1748 | |||
1737 | config RPCSEC_GSS_KRB5 | 1749 | config RPCSEC_GSS_KRB5 |
1738 | tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)" | 1750 | tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)" |
1739 | depends on SUNRPC && EXPERIMENTAL | 1751 | depends on SUNRPC && EXPERIMENTAL |
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index e7dc09ecc47..d8fbee40a19 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -902,9 +902,11 @@ call_bind_status(struct rpc_task *task) | |||
902 | task->tk_pid); | 902 | task->tk_pid); |
903 | break; | 903 | break; |
904 | case -EPROTONOSUPPORT: | 904 | case -EPROTONOSUPPORT: |
905 | dprintk("RPC: %5u remote rpcbind version 2 unavailable\n", | 905 | dprintk("RPC: %5u remote rpcbind version unavailable, retrying\n", |
906 | task->tk_pid); | 906 | task->tk_pid); |
907 | break; | 907 | task->tk_status = 0; |
908 | task->tk_action = call_bind; | ||
909 | return; | ||
908 | default: | 910 | default: |
909 | dprintk("RPC: %5u unrecognized rpcbind error (%d)\n", | 911 | dprintk("RPC: %5u unrecognized rpcbind error (%d)\n", |
910 | task->tk_pid, -task->tk_status); | 912 | task->tk_pid, -task->tk_status); |