• Chuck Lever's avatar
    svcrdma: Preserve Receive buffer until svc_rdma_sendto · 3a88092e
    Chuck Lever authored
    Rather than releasing the incoming svc_rdma_recv_ctxt at the end of
    svc_rdma_recvfrom, hold onto it until svc_rdma_sendto.
    
    This permits the contents of the Receive buffer to be preserved
    through svc_process and then referenced directly in sendto as it
    constructs Write and Reply chunks to return to the client.
    
    The real changes will come in subsequent patches.
    
    Note: I cannot use ->xpo_release_rqst for this purpose because that
    is called _before_ ->xpo_sendto. svc_rdma_sendto uses information in
    the received Call transport header to construct the Reply transport
    header, which is preserved in the RPC's Receive buffer.
    
    The historical comment in svc_send() isn't helpful: it is already
    obvious that ->xpo_release_rqst is being called before ->xpo_sendto,
    but there is no explanation for this ordering going back to the
    beginning of the git era.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    3a88092e
svc_rdma_sendto.c 19.5 KB