linux/net/sunrpc
Chuck Lever c526611dd6 SUNRPC: Use a cached RPC client and transport for rpcbind upcalls
The kernel's rpcbind client creates and deletes an rpc_clnt and its
underlying transport socket for every upcall to the local rpcbind
daemon.

When starting a typical NFS server on IPv4 and IPv6, the NFS service
itself does three upcalls (one per version) times two upcalls (one
per transport) times two upcalls (one per address family), making 12,
plus another one for the initial call to unregister previous NFS
services.  Starting the NLM service adds an additional 13 upcalls,
for similar reasons.

(Currently the NFS service doesn't start IPv6 listeners, but it will
soon enough).

Instead, let's create an rpc_clnt for rpcbind upcalls during the
first local rpcbind query, and cache it.  This saves the overhead of
creating and destroying an rpc_clnt and a socket for every upcall.

The new logic also prevents the kernel from attempting an RPCB_SET or
RPCB_UNSET if it knows from the start that the local portmapper does
not support rpcbind protocol version 4.  This will cut down on the
number of rpcbind upcalls in legacy environments.

Signed-off-by: Chuck Lever <chuck.lever@oracle.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_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
auth.c SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous 2009-09-15 20:49:33 -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: Use a cached RPC client and transport for rpcbind upcalls 2009-12-03 15:58:56 -05: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_syms.c SUNRPC: Use a cached RPC client and transport for rpcbind upcalls 2009-12-03 15:58:56 -05:00
sunrpc.h nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -04:00
svc_xprt.c nfsd41: sunrpc: Added rpc server-side backchannel handling 2009-09-11 15:04:16 -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
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
svcauth.c SUNRPC: The sunrpc server code should not be used by out-of-tree modules 2009-01-07 17:18:42 -05: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