linux-stable/include/linux/sunrpc
Chuck Lever 09a21c4102 SUNRPC: Allow RPCs to fail quickly if the server is unreachable
The kernel sometimes makes RPC calls to services that aren't running.
Because the kernel's RPC client always assumes the hard retry semantic
when reconnecting a connection-oriented RPC transport, the underlying
reconnect logic takes a long while to time out, even though the remote
may have responded immediately with ECONNREFUSED.

In certain cases, like upcalls to our local rpcbind daemon, or for NFS
mount requests, we'd like the kernel to fail immediately if the remote
service isn't reachable.  This allows another transport to be tried
immediately, or the pending request can be abandoned quickly.

Introduce a per-request flag which controls how call_transmit_status()
behaves when request transmission fails because the server cannot be
reached.

We don't want soft connection semantics to apply to other errors.  The
default case of the switch statement in call_transmit_status() no
longer falls through; the fall through code is copied to the default
case, and a "break;" is added.

The transport's connection re-establishment timeout is also ignored for
such requests.  We want the request to fail immediately, so the
reconnect delay is skipped.  Additionally, we don't want a connect
failure here to further increase the reconnect timeout value, since
this request will not be retried.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2009-12-03 15:58:56 -05:00
..
auth.h SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous 2009-09-15 20:49:33 -04:00
auth_gss.h
bc_xprt.h
cache.h SUNRPC: Add an rpc_pipefs front end for the sunrpc cache code 2009-08-09 15:14:30 -04:00
clnt.h nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel 2009-09-13 15:46:15 -04:00
debug.h
gss_api.h
gss_asn1.h
gss_err.h
gss_krb5.h
gss_spkm3.h
Kbuild
metrics.h
msg_prot.h SUNRPC: Clean up RPCBIND_MAXUADDRLEN definitions 2009-08-09 15:09:32 -04:00
rpc_pipe_fs.h nfs: fix compile error in rpc_pipefs.h 2009-08-20 18:20:25 -04:00
rpc_rdma.h
sched.h SUNRPC: Allow RPCs to fail quickly if the server is unreachable 2009-12-03 15:58:56 -05:00
stats.h
svc.h
svc_rdma.h
svc_xprt.h nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -04:00
svcauth.h
svcauth_gss.h
svcsock.h nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -04:00
timer.h
types.h
xdr.h sunrpc: xdr_xcode_hyper helpers cannot presume 64-bit alignment 2009-09-23 14:36:38 -04:00
xprt.h nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel 2009-09-13 15:46:15 -04:00
xprtrdma.h nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel 2009-09-13 15:46:15 -04:00
xprtsock.h nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel 2009-09-13 15:46:15 -04:00