1. 04 Jun, 2014 2 commits
    • Allen Andrews's avatar
      nfs-rdma: Fix for FMR leaks · 4034ba04
      Allen Andrews authored
      Two memory region leaks were found during testing:
      
      1. rpcrdma_buffer_create: While allocating RPCRDMA_FRMR's
      ib_alloc_fast_reg_mr is called and then ib_alloc_fast_reg_page_list is
      called.  If ib_alloc_fast_reg_page_list returns an error it bails out of
      the routine dropping the last ib_alloc_fast_reg_mr frmr region creating a
      memory leak.  Added code to dereg the last frmr if
      ib_alloc_fast_reg_page_list fails.
      
      2. rpcrdma_buffer_destroy: While cleaning up, the routine will only free
      the MR's on the rb_mws list if there are rb_send_bufs present.  However, in
      rpcrdma_buffer_create while the rb_mws list is being built if one of the MR
      allocation requests fail after some MR's have been allocated on the rb_mws
      list the routine never gets to create any rb_send_bufs but instead jumps to
      the rpcrdma_buffer_destroy routine which will never free the MR's on rb_mws
      list because the rb_send_bufs were never created.   This leaks all the MR's
      on the rb_mws list that were created prior to one of the MR allocations
      failing.
      
      Issue(2) was seen during testing. Our adapter had a finite number of MR's
      available and we created enough connections to where we saw an MR
      allocation failure on our Nth NFS connection request. After the kernel
      cleaned up the resources it had allocated for the Nth connection we noticed
      that FMR's had been leaked due to the coding error described above.
      
      Issue(1) was seen during a code review while debugging issue(2).
      Signed-off-by: default avatarAllen Andrews <allen.andrews@emulex.com>
      Reviewed-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      4034ba04
    • Steve Wise's avatar
      xprtrdma: mind the device's max fast register page list depth · 0fc6c4e7
      Steve Wise authored
      Some rdma devices don't support a fast register page list depth of
      at least RPCRDMA_MAX_DATA_SEGS.  So xprtrdma needs to chunk its fast
      register regions according to the minimum of the device max supported
      depth or RPCRDMA_MAX_DATA_SEGS.
      Signed-off-by: default avatarSteve Wise <swise@opengridcomputing.com>
      Reviewed-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      0fc6c4e7
  2. 30 May, 2014 3 commits
  3. 29 May, 2014 27 commits
  4. 28 May, 2014 8 commits