• T
    svc: Add xpo_accept transport function · 38a417cc
    Tom Tucker 提交于
    Previously, the accept logic looked into the socket state to determine
    whether to call accept or recv when data-ready was indicated on an endpoint.
    Since some transports don't use sockets, this logic now uses a flag
    bit (SK_LISTENER) to identify listening endpoints. A transport function
    (xpo_accept) allows each transport to define its own accept processing.
    A transport's initialization logic is reponsible for setting the
    SK_LISTENER bit. I didn't see any way to do this in transport independent
    logic since the passive side of a UDP connection doesn't listen and
    always recv's.
    
    In the svc_recv function, if the SK_LISTENER bit is set, the transport
    xpo_accept function is called to handle accept processing.
    
    Note that all functions are defined even if they don't make sense
    for a given transport. For example, accept doesn't mean anything for
    UDP. The function is defined anyway and bug checks if called. The
    UDP transport should never set the SK_LISTENER bit.
    Signed-off-by: NTom Tucker <tom@opengridcomputing.com>
    Acked-by: NNeil Brown <neilb@suse.de>
    Reviewed-by: NChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: NGreg Banks <gnb@sgi.com>
    Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
    38a417cc
svcsock.c 53.3 KB