1. 06 2月, 2015 1 次提交
  2. 30 1月, 2015 14 次提交
  3. 26 11月, 2014 1 次提交
    • C
      xprtrdma: Cap req_cqinit · e7104a2a
      Chuck Lever 提交于
      Recent work made FRMR registration and invalidation completions
      unsignaled. This greatly reduces the adapter interrupt rate.
      
      Every so often, however, a posted send Work Request is allowed to
      signal. Otherwise, the provider's Work Queue will wrap and the
      workload will hang.
      
      The number of Work Requests that are allowed to remain unsignaled is
      determined by the value of req_cqinit. Currently, this is set to the
      size of the send Work Queue divided by two, minus 1.
      
      For FRMR, the send Work Queue is the maximum number of concurrent
      RPCs (currently 32) times the maximum number of Work Requests an
      RPC might use (currently 7, though some adapters may need more).
      
      For mlx4, this is 224 entries. This leaves completion signaling
      disabled for 111 send Work Requests.
      
      Some providers hold back dispatching Work Requests until a CQE is
      generated.  If completions are disabled, then no CQEs are generated
      for quite some time, and that can stall the Work Queue.
      
      I've seen this occur running xfstests generic/113 over NFSv4, where
      eventually, posting a FAST_REG_MR Work Request fails with -ENOMEM
      because the Work Queue has overflowed. The connection is dropped
      and re-established.
      
      Cap the rep_cqinit setting so completions are not left turned off
      for too long.
      
      BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=269Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      e7104a2a
  4. 30 9月, 2014 1 次提交
    • S
      svcrdma: advertise the correct max payload · 7e5be288
      Steve Wise 提交于
      Svcrdma currently advertises 1MB, which is too large.  The correct value
      is the minimum of RPCSVC_MAXPAYLOAD and the max scatter-gather allowed
      in an NFSRDMA IO chunk * the host page size. This bug is usually benign
      because the Linux X64 NFSRDMA client correctly limits the payload size to
      the correct value (64*4096 = 256KB).  But if the Linux client is PPC64
      with a 64KB page size, then the client will indeed use a payload size
      that will overflow the server.
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      7e5be288
  5. 01 8月, 2014 7 次提交
  6. 04 6月, 2014 9 次提交
  7. 01 2月, 2013 1 次提交
  8. 18 2月, 2012 1 次提交
  9. 27 7月, 2011 1 次提交
  10. 26 7月, 2011 1 次提交
  11. 12 3月, 2011 1 次提交
    • T
      RPCRDMA: Fix FRMR registration/invalidate handling. · 5c635e09
      Tom Tucker 提交于
      When the rpc_memreg_strategy is 5, FRMR are used to map RPC data.
      This mode uses an FRMR to map the RPC data, then invalidates
      (i.e. unregisers) the data in xprt_rdma_free. These FRMR are used
      across connections on the same mount, i.e. if the connection goes
      away on an idle timeout and reconnects later, the FRMR are not
      destroyed and recreated.
      
      This creates a problem for transport errors because the WR that
      invalidate an FRMR may be flushed (i.e. fail) leaving the
      FRMR valid. When the FRMR is later used to map an RPC it will fail,
      tearing down the transport and starting over. Over time, more and
      more of the FRMR pool end up in the wrong state resulting in
      seemingly random disconnects.
      
      This fix keeps track of the FRMR state explicitly by setting it's
      state based on the successful completion of a reg/inv WR. If the FRMR
      is ever used and found to be in the wrong state, an invalidate WR
      is prepended, re-syncing the FRMR state and avoiding the connection loss.
      Signed-off-by: NTom Tucker <tom@ogc.us>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      5c635e09
  12. 11 10月, 2008 2 次提交