linux-stable/net/sunrpc/xprtrdma
Chuck Lever c95a3c6b88 xprtrdma: Disable pad optimization by default
Commit d5440e27d3 ("xprtrdma: Enable pad optimization") made the
Linux client omit XDR round-up padding in normal Read and Write
chunks so that the client doesn't have to register and invalidate
3-byte memory regions that contain no real data.

Unfortunately, my cheery 2014 assessment that this optimization "is
supported now by both Linux and Solaris servers" was premature.
We've found bugs in Solaris in this area since commit d5440e27d3
("xprtrdma: Enable pad optimization") was merged (SYMLINK is the
main offender).

So for maximum interoperability, I'm disabling this optimization
again. If a CM private message is exchanged when connecting, the
client recognizes that the server is Linux, and enables the
optimization for that connection.

Until now the Solaris server bugs did not impact common operations,
and were thus largely benign. Soon, less capable devices on Linux
NFS/RDMA clients will make use of Read chunks more often, and these
Solaris bugs will prevent interoperation in more cases.

Fixes: 677eb17e94 ("xprtrdma: Fix XDR tail buffer marshalling")
Cc: stable@vger.kernel.org # v4.9+
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2017-02-10 14:02:36 -05:00
..
backchannel.c xprtrdma: Cap size of callback buffer resources 2016-11-29 16:45:44 -05:00
fmr_ops.c xprtrdma: Basic support for Remote Invalidation 2016-09-19 13:08:38 -04:00
frwr_ops.c xprtrdma: Update documenting comment 2016-11-29 16:45:44 -05: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: Per-connection pad optimization 2017-02-10 14:02:36 -05:00
svc_rdma.c svcrdma: Define maximum number of backchannel requests 2016-01-19 15:30:48 -05:00
svc_rdma_backchannel.c svcrdma: Remove unused variables in xprt_rdma_bc_allocate() 2016-11-30 17:31:14 -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: avoid duplicate dma unmapping during error recovery 2017-01-12 16:14:47 -05:00
svc_rdma_sendto.c svcrdma: Further clean-up of svc_rdma_get_inv_rkey() 2016-11-30 17:31:16 -05:00
svc_rdma_transport.c The one new feature is support for a new NFSv4.2 mode_umask attribute 2016-12-16 10:48:28 -08:00
transport.c xprtrdma: Disable pad optimization by default 2017-02-10 14:02:36 -05:00
verbs.c xprtrdma: Disable pad optimization by default 2017-02-10 14:02:36 -05:00
xprt_rdma.h xprtrdma: Per-connection pad optimization 2017-02-10 14:02:36 -05:00