1. 14 8月, 2008 1 次提交
    • T
      svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet · 24b8b447
      Tom Tucker 提交于
      RDMA_READ completions are kept on a separate queue from the general
      I/O request queue. Since a separate lock is used to protect the RDMA_READ
      completion queue, a race exists between the dto_tasklet and the
      svc_rdma_recvfrom thread where the dto_tasklet sets the XPT_DATA
      bit and adds I/O to the read-completion queue. Concurrently, the
      recvfrom thread checks the generic queue, finds it empty and resets
      the XPT_DATA bit. A subsequent svc_xprt_enqueue will fail to enqueue
      the transport for I/O and cause the transport to "stall".
      
      The fix is to protect both lists with the same lock and set the XPT_DATA
      bit with this lock held.
      Signed-off-by: NTom Tucker <tom@opengridcomputing.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      24b8b447
  2. 03 7月, 2008 7 次提交
  3. 19 5月, 2008 17 次提交
  4. 24 4月, 2008 1 次提交
  5. 13 3月, 2008 1 次提交
  6. 02 2月, 2008 1 次提交
    • T
      rdma: SVCRDMA Core Transport Services · 377f9b2f
      Tom Tucker 提交于
      This file implements the core transport data management and I/O
      path. The I/O path for RDMA involves receiving callbacks on interrupt
      context. Since all the svc transport locks are _bh locks we enqueue the
      transport on a list, schedule a tasklet to dequeue data indications from
      the RDMA completion queue. The tasklet in turn takes _bh locks to
      enqueue receive data indications on a list for the transport. The
      svc_rdma_recvfrom transport function dequeues data from this list in an
      NFSD thread context.
      Signed-off-by: NTom Tucker <tom@opengridcomputing.com>
      Acked-by: NNeil Brown <neilb@suse.de>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      377f9b2f