1. 11 8月, 2015 1 次提交
  2. 21 7月, 2015 4 次提交
    • C
      svcrdma: Remove svc_rdma_fastreg() · 31193fe5
      Chuck Lever 提交于
      Commit 0bf48289 ("svcrdma: refactor marshalling logic") removed
      the last call site for svc_rdma_fastreg().
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      31193fe5
    • C
      svcrdma: Clean up svc_rdma_get_reply_array() · 10dc4512
      Chuck Lever 提交于
      Kernel coding conventions frown upon having large nontrivial
      functions in header files, and the preference these days is to
      allow the compiler to make inlining decisions if possible.
      
      As these functions are re-homed into a .c file, be sure that
      comparisons with fields in struct rpcrdma_msg are with be32
      constants.
      
      This is a refactoring change; no behavior change is intended.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      10dc4512
    • C
      svcrdma: Fix send_reply() scatter/gather set-up · 9d11b51c
      Chuck Lever 提交于
      The Linux NFS server returns garbage in the data payload of inline
      NFS/RDMA READ replies. These are READs of under 1000 bytes or so
      where the client has not provided either a reply chunk or a write
      list.
      
      The NFS server delivers the data payload for an NFS READ reply to
      the transport in an xdr_buf page list. If the NFS client did not
      provide a reply chunk or a write list, send_reply() is supposed to
      set up a separate sge for the page containing the READ data, and
      another sge for XDR padding if needed, then post all of the sges via
      a single SEND Work Request.
      
      The problem is send_reply() does not advance through the xdr_buf
      when setting up scatter/gather entries for SEND WR. It always calls
      dma_map_xdr with xdr_off set to zero. When there's more than one
      sge, dma_map_xdr() sets up the SEND sge's so they all point to the
      xdr_buf's head.
      
      The current Linux NFS/RDMA client always provides a reply chunk or
      a write list when performing an NFS READ over RDMA. Therefore, it
      does not exercise this particular case. The Linux server has never
      had to use more than one extra sge for building RPC/RDMA replies
      with a Linux client.
      
      However, an NFS/RDMA client _is_ allowed to send small NFS READs
      without setting up a write list or reply chunk. The NFS READ reply
      fits entirely within the inline reply buffer in this case. This is
      perhaps a more efficient way of performing NFS READs that the Linux
      NFS/RDMA client may some day adopt.
      
      Fixes: b432e6b3 ('svcrdma: Change DMA mapping logic to . . .')
      BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=285Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      9d11b51c
    • S
      NFS/RDMA Release resources in svcrdma when device is removed · ff79c74d
      Shirley Ma 提交于
      When removing underlying RDMA device, the rmmod will hang forever if there
      are any outstanding NFS/RDMA client mounts. The outstanding NFS/RDMA counts
      could also prevent the server from shutting down. Further debugging shows
      that the existing connections are not teared down and resource are not
      released when receiving RDMA_CM_EVENT_DEVICE_REMOVAL event. It seems the
      original code missing svc_xprt_put() in RDMA_CM_EVENT_REMOVAL event handler
      thus svc_xprt_free is never invoked to release the existing connection
      resources.
      
      The patch has been passed removing, adding device back and forth without
      stopping NFS/RDMA service. This will also allow a device to be unplugged
      and swapped out without shutting down NFS service.
      
      BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=252Signed-off-by: NShirley Ma <shirley.ma@oracle.com>
      Reviewed-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      ff79c74d
  3. 23 6月, 2015 1 次提交
  4. 21 6月, 2015 1 次提交
  5. 20 6月, 2015 2 次提交
  6. 18 6月, 2015 1 次提交
  7. 16 6月, 2015 1 次提交
    • N
      SUNRPC: never enqueue a ->rq_cong request on ->sending · 29807318
      Neil Brown 提交于
      If the sending queue has a task without ->rq_cong set at the front,
      and then a number of tasks with ->rq_cong set such that they use
      the entire congestion window, then the queue deadlocks.  The first
      entry cannot be processed until later entries complete.
      
      This scenario has been seen with a client using UDP to access a server,
      and the network connection breaking for a period of time - it doesn't
      recover.
      
      It never really makes sense for an ->rq_cong request to be on the ->sending
      queue, but it can happen when a request is being retried, and finds
      the transport if locked (XPRT_LOCKED).  In this case we simple call
      __xprt_put_cong() and the deadlock goes away.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      29807318
  8. 13 6月, 2015 15 次提交
  9. 12 6月, 2015 1 次提交
    • C
      SUNRPC: Address kbuild warning in net/sunrpc/debugfs.c · 5fd23f7e
      Chuck Lever 提交于
      Cross-compile test on ARCH=mn10300:
      
      In file included from include/linux/list.h:8:0,
                       from include/linux/wait.h:6,
                       from include/linux/fs.h:6,
                       from include/linux/debugfs.h:18,
                       from net/sunrpc/debugfs.c:7:
      net/sunrpc/debugfs.c: In function 'fault_disconnect_write':
      include/linux/kernel.h:723:17: warning: comparison of distinct pointer
      types lacks a cast
          (void) (&_min1 == &_min2);  \
                         ^
      >> net/sunrpc/debugfs.c:307:8: note: in expansion of macro 'min'
          len = min(len, sizeof(buffer) - 1);
      
      Fixes: ('SUNRPC: Transport fault injection')
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      5fd23f7e
  10. 11 6月, 2015 6 次提交
  11. 05 6月, 2015 7 次提交