• Chuck Lever's avatar
    svcrdma: Support RDMA_NOMSG requests · 0b056c22
    Chuck Lever authored
    Currently the Linux server can not decode RDMA_NOMSG type requests.
    Operations whose length exceeds the fixed size of RDMA SEND buffers,
    like large NFSv4 CREATE(NF4LNK) operations, must be conveyed via
    RDMA_NOMSG.
    
    For an RDMA_MSG type request, the client sends the RPC/RDMA, RPC
    headers, and some or all of the NFS arguments via RDMA SEND.
    
    For an RDMA_NOMSG type request, the client sends just the RPC/RDMA
    header via RDMA SEND. The request's read list contains elements for
    the entire RPC message, including the RPC header.
    
    NFSD expects the RPC/RMDA header and RPC header to be contiguous in
    page zero of the XDR buffer. Add logic in the RDMA READ path to make
    the read list contents land where the server prefers, when the
    incoming message is a type RDMA_NOMSG message.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    0b056c22
svc_rdma_recvfrom.c 18.1 KB