From: Chuck Lever Date: Wed, 28 May 2014 14:33:25 +0000 (-0400) Subject: xprtrdma: Split the completion queue X-Git-Tag: omap-for-v3.16/fixes-against-rc1~64^2~5^2~13 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc66448549bbb77f2f1a38b270ab2d6b6a22da33;p=pandora-kernel.git xprtrdma: Split the completion queue The current CQ handler uses the ib_wc.opcode field to distinguish between event types. However, the contents of that field are not reliable if the completion status is not IB_WC_SUCCESS. When an error completion occurs on a send event, the CQ handler schedules a tasklet with something that is not a struct rpcrdma_rep. This is never correct behavior, and sometimes it results in a panic. To resolve this issue, split the completion queue into a send CQ and a receive CQ. The send CQ handler now handles only struct rpcrdma_mw wr_id's, and the receive CQ handler now handles only struct rpcrdma_rep wr_id's. Fix suggested by Shirley Ma Reported-by: Rafael Reiter Fixes: 5c635e09cec0feeeb310968e51dad01040244851 BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=73211 Signed-off-by: Chuck Lever Tested-by: Klemens Senn Tested-by: Steve Wise Signed-off-by: Anna Schumaker --- Reading git-diff-tree failed