2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-02 02:34:05 +08:00
linux-next/include/linux/sunrpc
Chuck Lever cace564f8b svcrdma: Tail iovec leaves an orphaned DMA mapping
The ctxt's count field is overloaded to mean the number of pages in
the ctxt->page array and the number of SGEs in the ctxt->sge array.
Typically these two numbers are the same.

However, when an inline RPC reply is constructed from an xdr_buf
with a tail iovec, the head and tail often occupy the same page,
but each are DMA mapped independently. In that case, ->count equals
the number of pages, but it does not equal the number of SGEs.
There's one more SGE, for the tail iovec. Hence there is one more
DMA mapping than there are pages in the ctxt->page array.

This isn't a real problem until the server's iommu is enabled. Then
each RPC reply that has content in that iovec orphans a DMA mapping
that consists of real resources.

krb5i and krb5p always populate that tail iovec. After a couple
million sent krb5i/p RPC replies, the NFS server starts behaving
erratically. Reboot is needed to clear the problem.

Fixes: 9d11b51ce7 ("svcrdma: Fix send_reply() scatter/gather set-up")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2016-09-23 10:18:52 -04:00
..
addr.h SUNRPC: Drop double-underscores from __rpc_cmp_addr6() 2015-08-17 14:47:53 -05:00
auth_gss.h
auth.h Merge branch 'nfs-rdma' 2016-07-24 17:09:02 -04:00
bc_xprt.h SUNRPC: Abstract backchannel operations 2015-11-02 13:45:15 -05:00
cache.h sunrpc: remove 'inuse' flag from struct cache_detail. 2016-07-13 15:32:47 -04:00
clnt.h NFSv4: Cap the transport reconnection timer at 1/2 lease period 2016-08-05 19:22:22 -04:00
debug.h sunrpc: make debugfs file creation failure non-fatal 2015-04-23 14:42:27 -04:00
gss_api.h xprtrdma: No direct data placement with krb5i and krb5p 2016-07-11 15:50:43 -04:00
gss_asn1.h
gss_err.h
gss_krb5_enctypes.h
gss_krb5.h sunrpc: Use skcipher and ahash/shash 2016-01-27 20:36:01 +08:00
metrics.h SUNRPC: Fix a compile error when #undef CONFIG_PROC_FS 2015-02-12 08:31:38 -05:00
msg_prot.h sunrpc: Update RPCBIND_MAXNETIDLEN 2016-05-17 15:47:56 -04:00
rpc_pipe_fs.h
rpc_rdma.h xprtrdma: Properly handle RDMA_ERROR replies 2016-03-14 14:55:59 -04:00
sched.h SUNRPC: Reduce latency when send queue is congested 2016-06-13 12:35:51 -04:00
stats.h
svc_rdma.h svcrdma: Tail iovec leaves an orphaned DMA mapping 2016-09-23 10:18:52 -04:00
svc_xprt.h SUNRPC: Remove unused callback xpo_adjust_wspace() 2016-07-13 15:53:50 -04:00
svc.h SUNRPC: Add a server side per-connection limit 2016-07-13 15:53:48 -04:00
svcauth_gss.h
svcauth.h vfs: make the string hashes salt the hash 2016-06-10 20:21:46 -07:00
svcsock.h
timer.h
types.h
xdr.h
xprt.h SUNRPC: Limit the reconnect backoff timer to the max RPC message timeout 2016-08-05 14:12:09 -04:00
xprtmultipath.h SUNRPC: Add a structure to track multiple transports 2016-02-05 18:48:54 -05:00
xprtrdma.h xprtrdma: Bound the inline threshold values 2016-05-17 15:47:57 -04:00
xprtsock.h SUNRPC: Small optimisation of client receive 2016-06-13 12:35:51 -04:00