linux/net/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_gss sunrpc: reply AUTH_BADCRED to RPCSEC_GSS with unknown service 2009-08-25 17:39:43 -04:00
xprtrdma headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
addr.c SUNRPC: Display compressed (shorthand) IPv6 presentation addresses 2009-12-03 15:58:56 -05:00
auth.c SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous 2009-09-15 20:49:33 -04:00
auth_generic.c SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous 2009-09-15 20:49:33 -04:00
auth_null.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
auth_unix.c SUNRPC: Use GFP_NOFS when allocating credentials 2008-07-09 12:08:48 -04:00
backchannel_rqst.c nfs41: sunrpc: xprt_alloc_bc_request() should not use spin_lock_bh() 2009-06-20 14:55:39 -04:00
bc_svc.c nfs41: Backchannel callback service helper routines 2009-06-17 14:11:28 -07:00
cache.c sunrpc/cache: avoid variable over-loading in cache_defer_req 2009-09-18 17:01:12 -04:00
clnt.c SUNRPC: Allow RPCs to fail quickly if the server is unreachable 2009-12-03 15:58:56 -05:00
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-04-03 15:24:35 -07:00
Makefile SUNRPC: Provide functions for managing universal addresses 2009-08-09 15:09:34 -04:00
rpc_pipe.c sunrpc/rpc_pipe: fix kernel-doc notation 2009-09-23 14:36:38 -04:00
rpcb_clnt.c SUNRPC: Eliminate PROC macro from rpcb_clnt 2009-08-09 15:09:44 -04:00
sched.c nfsd41: sunrpc: move struct rpc_buffer def into sunrpc.h 2009-09-10 12:09:06 -04:00
socklib.c SUNRPC: temp var should match return type of xdr_skb_read_actor 2008-01-30 02:05:43 -05:00
stats.c nfs41: Rename rq_received to rq_reply_bytes_recvd 2009-06-17 14:11:40 -07:00
sunrpc.h nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -04:00
sunrpc_syms.c SUNRPC: Ensure that sunrpc gets initialised before nfs, lockd, etc... 2009-08-21 08:17:56 -04:00
svc.c Merge commit 'linux-pnfs/nfs41-for-2.6.31' into nfsv41-for-2.6.31 2009-06-17 17:59:58 -07:00
svc_xprt.c nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -04:00
svcauth.c SUNRPC: The sunrpc server code should not be used by out-of-tree modules 2009-01-07 17:18:42 -05:00
svcauth_unix.c Merge branch 'nfs-for-2.6.32' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 into for-2.6.32-incoming 2009-08-21 11:27:29 -04:00
svcsock.c net: fix sk_forward_alloc corruption 2009-10-30 12:25:12 -07:00
sysctl.c sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
timer.c SUNRPC: Add documenting comments in net/sunrpc/timer.c 2009-08-09 15:09:47 -04:00
xdr.c sunrpc: ntoh -> be*_to_cpu 2009-08-14 13:12:52 -04:00
xprt.c nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -04:00
xprtsock.c SUNRPC: Allow RPCs to fail quickly if the server is unreachable 2009-12-03 15:58:56 -05:00