linux/net/sunrpc/xprtrdma
Chuck Lever 5fdca65314 svcrdma: Renovate sendto chunk list parsing
The current sendto code appears to support clients that provide only
one of a Read list, a Write list, or a Reply chunk. My reading of
that code is that it doesn't support the following cases:

 - Read list + Write list
 - Read list + Reply chunk
 - Write list + Reply chunk
 - Read list + Write list + Reply chunk

The protocol allows more than one Read or Write chunk in those
lists. Some clients do send a Read list and Reply chunk
simultaneously. NFSv4 WRITE uses a Read list for the data payload,
and a Reply chunk because the GETATTR result in the reply can
contain a large object like an ACL.

Generalize one of the sendto code paths needed to support all of
the above cases, and attempt to ensure that only one pass is done
through the RPC Call's transport header to gather chunk list
information for building the reply.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2016-11-30 17:31:12 -05:00
..
backchannel.c xprtrdma: Use gathered Send for large inline messages 2016-09-19 13:08:38 -04:00
fmr_ops.c xprtrdma: Basic support for Remote Invalidation 2016-09-19 13:08:38 -04:00
frwr_ops.c xprtrdma: use complete() instead complete_all() 2016-09-23 09:48:24 -04:00
Makefile xprtrdma: Remove ALLPHYSICAL memory registration mode 2016-07-11 15:50:43 -04:00
module.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
rpc_rdma.c xprtrdma: Eliminate rpcrdma_receive_worker() 2016-09-19 13:08:38 -04:00
svc_rdma_backchannel.c svcrdma: Clear xpt_bc_xps in xprt_setup_rdma_bc() error exit arm 2016-11-30 17:31:11 -05:00
svc_rdma_marshal.c svcrdma: Generalize svc_rdma_xdr_decode_req() 2016-05-13 15:53:06 -04:00
svc_rdma_recvfrom.c svcrdma: Renovate sendto chunk list parsing 2016-11-30 17:31:12 -05:00
svc_rdma_sendto.c svcrdma: Renovate sendto chunk list parsing 2016-11-30 17:31:12 -05:00
svc_rdma_transport.c Some RDMA work and some good bugfixes, and two new features that could 2016-10-13 21:04:42 -07:00
svc_rdma.c svcrdma: Define maximum number of backchannel requests 2016-01-19 15:30:48 -05:00
transport.c xprtrdma: Support larger inline thresholds 2016-09-19 13:08:38 -04:00
verbs.c NFS client updates for Linux 4.9 2016-10-13 21:28:20 -07:00
xprt_rdma.h xprtrdma: Eliminate rpcrdma_receive_worker() 2016-09-19 13:08:38 -04:00