提交 7f23f6f6 编写于 作者: C Chuck Lever 提交者: Anna Schumaker

xprtrmda: Reduce lock contention in completion handlers

Skip the ib_poll_cq() after re-arming, if the provider knows there
are no additional items waiting. (Have a look at commit ed23a727 for
more details).
Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
上级 fc664485
...@@ -192,8 +192,11 @@ rpcrdma_sendcq_upcall(struct ib_cq *cq, void *cq_context) ...@@ -192,8 +192,11 @@ rpcrdma_sendcq_upcall(struct ib_cq *cq, void *cq_context)
return; return;
} }
rc = ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); rc = ib_req_notify_cq(cq,
if (rc) { IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS);
if (rc == 0)
return;
if (rc < 0) {
dprintk("RPC: %s: ib_req_notify_cq failed: %i\n", dprintk("RPC: %s: ib_req_notify_cq failed: %i\n",
__func__, rc); __func__, rc);
return; return;
...@@ -272,8 +275,11 @@ rpcrdma_recvcq_upcall(struct ib_cq *cq, void *cq_context) ...@@ -272,8 +275,11 @@ rpcrdma_recvcq_upcall(struct ib_cq *cq, void *cq_context)
return; return;
} }
rc = ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); rc = ib_req_notify_cq(cq,
if (rc) { IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS);
if (rc == 0)
return;
if (rc < 0) {
dprintk("RPC: %s: ib_req_notify_cq failed: %i\n", dprintk("RPC: %s: ib_req_notify_cq failed: %i\n",
__func__, rc); __func__, rc);
return; return;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册