svcrdma: Remove BH-disabled spin locking in svc_rdma_send()
authorChuck Lever <chuck.lever@oracle.com>
Tue, 29 Nov 2016 16:04:50 +0000 (11:04 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Wed, 30 Nov 2016 22:31:13 +0000 (17:31 -0500)
commite4eb42cecc6dc546aac888ee4913d59121e886ee
treed78a0e21882dfb0ba3046a6f6962285d3efac9ef
parent5fdca6531434c1c1b2d584873afdda52e5ad448c
svcrdma: Remove BH-disabled spin locking in svc_rdma_send()

svcrdma's current SQ accounting algorithm takes sc_lock and disables
bottom-halves while posting all RDMA Read, Write, and Send WRs.

This is relatively heavyweight serialization. And note that Write and
Send are already fully serialized by the xpt_mutex.

Using a single atomic_t should be all that is necessary to guarantee
that ib_post_send() is called only when there is enough space on the
send queue. This is what the other RDMA-enabled storage targets do.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
include/linux/sunrpc/svc_rdma.h
net/sunrpc/xprtrdma/svc_rdma_sendto.c
net/sunrpc/xprtrdma/svc_rdma_transport.c