• C
    xprtrdma: Manage MRs in context of a single connection · 9d2da4ff
    Chuck Lever 提交于
    MRs are now allocated on demand so we can safely throw them away on
    disconnect. This way an idle transport can disconnect and it won't
    pin hardware MR resources.
    
    Two additional changes:
    
    - Now that all MRs are destroyed on disconnect, there's no need to
      check during header marshaling if a req has MRs to recycle. Each
      req is sent only once per connection, and now rl_registered is
      guaranteed to be empty when rpcrdma_marshal_req is invoked.
    
    - Because MRs are now destroyed in a WQ_MEM_RECLAIM context, they
      also must be allocated in a WQ_MEM_RECLAIM context. This reduces
      the likelihood that device driver memory allocation will trigger
      memory reclaim during NFS writeback.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
    9d2da4ff
verbs.c 39.4 KB