• Chuck Lever's avatar
    xprtrdma: Remove logic that constructs RDMA_MSGP type calls · b3221d6a
    Chuck Lever authored
    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: default avatarChuck Lever <chuck.lever@oracle.com>
    Tested-by: default avatarDevesh Sharma <devesh.sharma@avagotech.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    b3221d6a
rpc_rdma.c 26 KB