svcrdma: Fix race with dto_tasklet in svc_rdma_send
authorTom Tucker <tom@opengridcomputing.com>
Tue, 6 May 2008 16:33:11 +0000 (11:33 -0500)
committerTom Tucker <tom@opengridcomputing.com>
Mon, 19 May 2008 12:33:44 +0000 (07:33 -0500)
commitdbcd00eba99945acfc433508a58eadc5dcd18cad
treec9bd31141dc48b45819d153ead3d311a0db51e40
parent0e7f011a19696cc25d68a8d6631fc6c5aa60a54c
svcrdma: Fix race with dto_tasklet in svc_rdma_send

The svc_rdma_send function will attempt to reap SQ WR to make room for
a new request if it finds the SQ full. This function races with the
dto_tasklet that also reaps SQ WR. To avoid polling and arming the CQ
unnecessarily move the test_and_clear_bit of the RDMAXPRT_SQ_PENDING
flag and arming of the CQ to the sq_cq_reap function.

Refactor the rq_cq_reap function to match sq_cq_reap so that the
code is easier to follow.

Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
net/sunrpc/xprtrdma/svc_rdma_transport.c