• Chuck Lever's avatar
    SUNRPC: Refactor svc_recvfrom() · ca07eda3
    Chuck Lever authored
    This function is not currently "generic" so remove the documenting
    comment and rename it appropriately. Its internals are converted to
    use bio_vecs for reading from the transport socket.
    
    In existing typical sunrpc uses of bio_vecs, the bio_vec array is
    allocated dynamically. Here, instead, an array of bio_vecs is added
    to svc_rqst. The lifetime of this array can be greater than one call
    to xpo_recvfrom():
    
    - Multiple calls to xpo_recvfrom() might be needed to read an RPC
      message completely.
    
    - At some later point, rq_arg.bvecs will point to this array and it
      will carry the received message into svc_process().
    
    I also expect that a future optimization will remove either the
    rq_vec or rq_pages array in favor of rq_bvec, thus conserving the
    size of struct svc_rqst.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    ca07eda3
svcsock.c 37.1 KB