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>
This commit is contained in:

committed by
J. Bruce Fields

parent
5fdca65314
commit
e4eb42cecc
@@ -139,7 +139,7 @@ struct svcxprt_rdma {
|
||||
int sc_max_sge_rd; /* max sge for read target */
|
||||
bool sc_snd_w_inv; /* OK to use Send With Invalidate */
|
||||
|
||||
atomic_t sc_sq_count; /* Number of SQ WR on queue */
|
||||
atomic_t sc_sq_avail; /* SQEs ready to be consumed */
|
||||
unsigned int sc_sq_depth; /* Depth of SQ */
|
||||
unsigned int sc_rq_depth; /* Depth of RQ */
|
||||
u32 sc_max_requests; /* Forward credits */
|
||||
|
Reference in New Issue
Block a user