linux/net/sunrpc/xprtrdma
Chuck Lever b3221d6a53 xprtrdma: Remove logic that constructs RDMA_MSGP type calls
RDMA_MSGP type calls insert a zero pad in the middle of the RPC
message to align the RPC request's data payload to the server's
alignment preferences. A server can then "page flip" the payload
into place to avoid a data copy in certain circumstances. However:

1. The client has to have a priori knowledge of the server's
   preferred alignment

2. Requests eligible for RDMA_MSGP are requests that are small
   enough to have been sent inline, and convey a data payload
   at the _end_ of the RPC message

Today 1. is done with a sysctl, and is a global setting that is
copied during mount. Linux does not support CCP to query the
server's preferences (RFC 5666, Section 6).

A small-ish NFSv3 WRITE might use RDMA_MSGP, but no NFSv4
compound fits bullet 2.

Thus the Linux client currently leaves RDMA_MSGP disabled. The
Linux server handles RDMA_MSGP, but does not use any special
page flipping, so it confers no benefit.

Clean up the marshaling code by removing the logic that constructs
RDMA_MSGP type calls. This also reduces the maximum send iovec size
from four to just two elements.

/proc/sys/sunrpc/rdma_inline_write_padding is a kernel API, and
thus is left in place.

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:27 -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: Remove logic that constructs RDMA_MSGP type calls 2015-08-05 16:21:27 -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