linux_dsm_epyc7002/include/linux/sunrpc
Chuck Lever 412055398b nfsd: Fix NFSv4 READ on RDMA when using readv
svcrdma expects that the payload falls precisely into the xdr_buf
page vector. This does not seem to be the case for
nfsd4_encode_readv().

This code is called only when fops->splice_read is missing or when
RQ_SPLICE_OK is clear, so it's not a noticeable problem in many
common cases.

Add new transport method: ->xpo_read_payload so that when a READ
payload does not fit exactly in rq_res's page vector, the XDR
encoder can inform the RPC transport exactly where that payload is,
without the payload's XDR pad.

That way, when a Write chunk is present, the transport knows what
byte range in the Reply message is supposed to be matched with the
chunk.

Note that the Linux NFS server implementation of NFS/RDMA can
currently handle only one Write chunk per RPC-over-RDMA message.
This simplifies the implementation of this fix.

Fixes: b042098063 ("nfsd4: allow exotic read compounds")
Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=198053
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2020-03-16 12:04:31 -04:00
..
addr.h
auth_gss.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
auth.h SUNRPC: Remove broken gss_mech_list_pseudoflavors() 2020-01-15 10:54:32 -05:00
bc_xprt.h SUNRPC: Destroy the back channel when we destroy the host transport 2019-10-30 12:04:35 -04:00
cache.h nfs: use time64_t internally 2019-12-18 18:07:32 +01:00
clnt.h This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00
debug.h
gss_api.h SUNRPC: Remove broken gss_mech_list_pseudoflavors() 2020-01-15 10:54:32 -05:00
gss_asn1.h
gss_err.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
gss_krb5_enctypes.h SUNRPC: Add build option to disable support for insecure enctypes 2019-02-13 13:33:12 -05:00
gss_krb5.h sunrpc: convert to time64_t for expiry 2020-01-15 10:54:30 -05:00
metrics.h SUNRPC: Count ops completing with tk_status < 0 2019-07-06 14:54:51 -04:00
msg_prot.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
rpc_pipe_fs.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
rpc_rdma.h
sched.h NFS Client Updates for Linux 5.3 2019-09-26 12:20:14 -07:00
stats.h proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
svc_rdma.h nfsd: Fix NFSv4 READ on RDMA when using readv 2020-03-16 12:04:31 -04:00
svc_xprt.h nfsd: Fix NFSv4 READ on RDMA when using readv 2020-03-16 12:04:31 -04:00
svc.h nfsd: Fix NFSv4 READ on RDMA when using readv 2020-03-16 12:04:31 -04:00
svcauth_gss.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
svcauth.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
svcsock.h SUNRPC: Cache the process user cred in the RPC server listener 2019-04-24 09:46:35 -04:00
timer.h
types.h
xdr.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
xprt.h This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00
xprtmultipath.h SUNRPC: Add basic load balancing to the transport switch 2019-07-06 14:54:49 -04:00
xprtrdma.h xprtrdma: Boost client's max slot table size to match Linux server 2019-08-20 11:17:16 -04:00
xprtsock.h This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00