• Chuck Lever's avatar
    xprtrdma: Disable pad optimization by default · 387fb7dc
    Chuck Lever authored
    commit c95a3c6b upstream.
    
    Commit d5440e27 ("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 d5440e27
    ("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: 677eb17e ("xprtrdma: Fix XDR tail buffer marshalling")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    387fb7dc
verbs.c 35 KB