• C
    svcrdma: Renovate sendto chunk list parsing · 5fdca653
    Chuck Lever 提交于
    The current sendto code appears to support clients that provide only
    one of a Read list, a Write list, or a Reply chunk. My reading of
    that code is that it doesn't support the following cases:
    
     - Read list + Write list
     - Read list + Reply chunk
     - Write list + Reply chunk
     - Read list + Write list + Reply chunk
    
    The protocol allows more than one Read or Write chunk in those
    lists. Some clients do send a Read list and Reply chunk
    simultaneously. NFSv4 WRITE uses a Read list for the data payload,
    and a Reply chunk because the GETATTR result in the reply can
    contain a large object like an ACL.
    
    Generalize one of the sendto code paths needed to support all of
    the above cases, and attempt to ensure that only one pass is done
    through the RPC Call's transport header to gather chunk list
    information for building the reply.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
    5fdca653
svc_rdma_recvfrom.c 19.6 KB