linux/net/sunrpc/xprtrdma
Chuck Lever 2fcc213a18 xprtrdma: Fix large NFS SYMLINK calls
Repair how rpcrdma_marshal_req() chooses which RDMA message type
to use for large non-WRITE operations so that it picks RDMA_NOMSG
in the correct situations, and sets up the marshaling logic to
SEND only the RPC/RDMA header.

Large NFSv2 SYMLINK requests now use RDMA_NOMSG calls. The Linux NFS
server XDR decoder for NFSv2 SYMLINK does not handle having the
pathname argument arrive in a separate buffer. The decoder could be
fixed, but this is simpler and RDMA_NOMSG can be used in a variety
of other situations.

Ensure that the Linux client continues to use "RDMA_MSG + read
list" when sending large NFSv3 SYMLINK requests, which is more
efficient than using RDMA_NOMSG.

Large NFSv4 CREATE(NF4LNK) requests are changed to use "RDMA_MSG +
read list" just like NFSv3 (see Section 5 of RFC 5667). Before,
these did not work at all.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: Devesh Sharma <devesh.sharma@avagotech.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2015-08-05 16:21:28 -04:00
..
fmr_ops.c xprtrdma: Clean up rpcrdma_ia_open() 2015-08-05 16:21:27 -04:00
frwr_ops.c xprtrdma: Clean up rpcrdma_ia_open() 2015-08-05 16:21:27 -04:00
Makefile rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
module.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
physical_ops.c xprtrdma: Clean up rpcrdma_ia_open() 2015-08-05 16:21:27 -04:00
rpc_rdma.c xprtrdma: Fix large NFS SYMLINK calls 2015-08-05 16:21:28 -04:00
svc_rdma_marshal.c svcrdma: Keep rpcrdma_msg fields in network byte-order 2015-06-04 16:55:59 -04:00
svc_rdma_recvfrom.c Merge branch 'for-4.2' of git://linux-nfs.org/~bfields/linux 2015-06-27 10:14:39 -07:00
svc_rdma_sendto.c svcrdma: Replace GFP_KERNEL in a loop with GFP_NOFAIL 2015-06-04 16:56:00 -04:00
svc_rdma_transport.c Merge branch 'for-4.2' of git://linux-nfs.org/~bfields/linux 2015-06-27 10:14:39 -07:00
svc_rdma.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
transport.c xprtrdma: Make xprt_setup_rdma() agnostic to family of server address 2015-08-05 16:21:26 -04:00
verbs.c xprtrdma: Remove logic that constructs RDMA_MSGP type calls 2015-08-05 16:21:27 -04:00
xprt_rdma.h xprtrdma: Remove logic that constructs RDMA_MSGP type calls 2015-08-05 16:21:27 -04:00