• Chuck Lever's avatar
    svcrdma: Hook up the logic to return ERR_CHUNK · a0544c94
    Chuck Lever authored
    RFC 5666 Section 4.2 states:
    
    > When the peer detects an RPC-over-RDMA header version that it does
    > not support (currently this document defines only version 1), it
    > replies with an error code of ERR_VERS, and provides the low and
    > high inclusive version numbers it does, in fact, support.
    
    And:
    
    > When other decoding errors are detected in the header or chunks,
    > either an RPC decode error MAY be returned or the RPC/RDMA error
    > code ERR_CHUNK MUST be returned.
    
    The Linux NFS server does throw ERR_VERS when a client sends it
    a request whose rdma_version is not "one." But it does not return
    ERR_CHUNK when a header decoding error occurs. It just drops the
    request.
    
    To improve protocol extensibility, it should reject invalid values
    in the rdma_proc field instead of treating them all like RDMA_MSG.
    Otherwise clients can't detect when the server doesn't support
    new rdma_proc values.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: default avatarDevesh Sharma <devesh.sharma@broadcom.com>
    Tested-by: default avatarDevesh Sharma <devesh.sharma@broadcom.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    a0544c94
svc_rdma_marshal.c 9.69 KB