Skip to content
  • Chuck Lever's avatar
    2ae50ad6
    xprtrdma: Close window between waking RPC senders and posting Receives · 2ae50ad6
    Chuck Lever authored
    
    
    A recent clean up attempted to separate Receive handling and RPC
    Reply processing, in the name of clean layering.
    
    Unfortunately, we can't do this because the Receive Queue has to be
    refilled _after_ the most recent credit update from the responder
    is parsed from the transport header, but _before_ we wake up the
    next RPC sender. That is right in the middle of
    rpcrdma_reply_handler().
    
    Usually this isn't a problem because current responder
    implementations don't vary their credit grant. The one exception is
    when a connection is established: the grant goes from one to a much
    larger number on the first Receive. The requester MUST post enough
    Receives right then so that any outstanding requests can be sent
    without risking RNR and connection loss.
    
    Fixes: 6ceea368 ("xprtrdma: Refactor Receive accounting")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    2ae50ad6
    xprtrdma: Close window between waking RPC senders and posting Receives
    Chuck Lever authored
    
    
    A recent clean up attempted to separate Receive handling and RPC
    Reply processing, in the name of clean layering.
    
    Unfortunately, we can't do this because the Receive Queue has to be
    refilled _after_ the most recent credit update from the responder
    is parsed from the transport header, but _before_ we wake up the
    next RPC sender. That is right in the middle of
    rpcrdma_reply_handler().
    
    Usually this isn't a problem because current responder
    implementations don't vary their credit grant. The one exception is
    when a connection is established: the grant goes from one to a much
    larger number on the first Receive. The requester MUST post enough
    Receives right then so that any outstanding requests can be sent
    without risking RNR and connection loss.
    
    Fixes: 6ceea368 ("xprtrdma: Refactor Receive accounting")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
Loading