linux_old1/net/sunrpc/xprtrdma
Tom Tucker 24b8b44780 svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet
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: Tom Tucker <tom@opengridcomputing.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2008-08-13 16:57:31 -04:00
..
Makefile rdma: makefile 2008-02-01 16:42:14 -05:00
rpc_rdma.c SUNRPC: Fix an unnecessary implicit type cast in rpcrdma_count_chunks() 2008-01-30 02:05:42 -05:00
svc_rdma.c svcrdma: Create a kmem cache for the WR contexts 2008-07-02 15:02:01 -05:00
svc_rdma_marshal.c rdma: ONCRPC RDMA protocol marshalling 2008-02-01 16:42:14 -05:00
svc_rdma_recvfrom.c svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet 2008-08-13 16:57:31 -04:00
svc_rdma_sendto.c dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
svc_rdma_transport.c svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet 2008-08-13 16:57:31 -04:00
transport.c SUNRPC: Fix a nfs4 over rdma transport oops 2008-03-07 14:35:32 -05:00
verbs.c IB/core: Add support for "send with invalidate" work requests 2008-04-16 21:09:32 -07:00
xprt_rdma.h RPCRDMA: rpc rdma transport switch 2007-10-09 17:18:03 -04:00