kernel_optimize_test/net/sunrpc
Chuck Lever ead3f26e35 xprtrdma: Add ro_unmap_safe memreg method
There needs to be a safe method of releasing registered memory
resources when an RPC terminates. Safe can mean a number of things:

+ Doesn't have to sleep

+ Doesn't rely on having a QP in RTS

ro_unmap_safe will be that safe method. It can be used in cases
where synchronous memory invalidation can deadlock, or needs to have
an active QP.

The important case is fencing an RPC's memory regions after it is
signaled (^C) and before it exits. If this is not done, there is a
window where the server can write an RPC reply into memory that the
client has released and re-used for some other purpose.

Note that this is a full solution for FRWR, but FMR and physical
still have some gaps where a particularly bad server can wreak
some havoc on the client. These gaps are not made worse by this
patch and are expected to be exceptionally rare and timing-based.
They are noted in documenting comments.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2016-05-17 15:48:03 -04:00
..
auth_gss sunrpc: plumb gfp_t parm into crcreate operation 2016-05-09 09:05:40 -04:00
xprtrdma xprtrdma: Add ro_unmap_safe memreg method 2016-05-17 15:48:03 -04:00
addr.c
auth_generic.c sunrpc: add rpc_lookup_generic_cred 2016-05-09 09:05:40 -04:00
auth_null.c nfsd: Lower NFSv4.1 callback message size limit 2016-03-01 13:06:35 -08:00
auth_unix.c sunrpc: plumb gfp_t parm into crcreate operation 2016-05-09 09:05:40 -04:00
auth.c sunrpc: plumb gfp_t parm into crcreate operation 2016-05-09 09:05:40 -04:00
backchannel_rqst.c SUNRPC: Fix callback channel 2015-12-07 13:04:59 -08:00
cache.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
clnt.c sunrpc: Advertise maximum backchannel payload size 2016-05-17 15:47:57 -04:00
debugfs.c SUNRPC: Address kbuild warning in net/sunrpc/debugfs.c 2015-06-11 14:01:06 -04:00
Kconfig rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
Makefile SUNRPC: Add a structure to track multiple transports 2016-02-05 18:48:54 -05:00
netns.h
rpc_pipe.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
rpcb_clnt.c SUNRPC: Use the multipath iterator to assign a transport to each task 2016-02-05 18:48:55 -05:00
sched.c SUNRPC: Allow caller to specify the transport to use 2016-02-05 18:48:55 -05:00
socklib.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
stats.c sunrpc: add rpc_count_iostats_idx 2015-02-03 11:06:38 -08:00
sunrpc_syms.c sunrpc: make debugfs file creation failure non-fatal 2015-04-23 14:42:27 -04:00
sunrpc.h
svc_xprt.c sunrpc: Add a function to close temporary transports immediately 2015-12-23 10:08:15 -05:00
svc.c SUNRPC: Fix callback channel 2015-12-07 13:04:59 -08:00
svcauth_unix.c svcrpc: move some initialization to common code 2015-11-24 10:39:16 -07:00
svcauth.c svcrpc: move some initialization to common code 2015-11-24 10:39:16 -07:00
svcsock.c svcrpc: document lack of some memory barriers 2015-11-10 17:02:47 -05:00
sysctl.c Sunrpc: Supports hexadecimal number for sysctl files of sunrpc debug 2015-11-03 15:56:49 -05:00
timer.c
xdr.c SUNRPC: init xdr_stream for zero iov_len, page_len 2016-05-09 09:05:40 -04:00
xprt.c SUNRPC: Use the multipath iterator to assign a transport to each task 2016-02-05 18:48:55 -05:00
xprtmultipath.c SUNRPC: Add a structure to track multiple transports 2016-02-05 18:48:54 -05:00
xprtsock.c sunrpc: Advertise maximum backchannel payload size 2016-05-17 15:47:57 -04:00