• Chuck Lever's avatar
    [PATCH] RPC: expose API for serializing access to RPC transports · 12a80469
    Chuck Lever authored
     The next several patches introduce an API that allows transports to
     choose whether the RPC client provides congestion control or whether
     the transport itself provides it.
    
     The first method we abstract is the one that serializes access to the
     RPC transport to prevent the bytes from different requests from mingling
     together.  This method provides proper request serialization and the
     opportunity to prevent new requests from being started because the
     transport is congested.
    
     The normal situation is for the transport to handle congestion control
     itself.  Although NFS over UDP was first, it has been recognized after
     years of experience that having the transport provide congestion control
     is much better than doing it in the RPC client.  Thus TCP, and probably
     every future transport implementation, will use the default method,
     xprt_lock_write, provided in xprt.c, which does not provide any kind
     of congestion control.  UDP can continue using the xprt.c-provided
     Van Jacobson congestion avoidance implementation.
    
     Test-plan:
     Use WAN simulation to cause sporadic bursty packet loss.  Look for significant
     regression in performance or client stability.
    Signed-off-by: default avatarChuck Lever <cel@netapp.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    12a80469
xprt.c 23.8 KB