提交 37d9fe80 编写于 作者: S Sagi Grimberg 提交者: Nicholas Bellinger

iser-target: Introduce isert_poll_budget

In case the CQ is packed with completions, we can't just
hog the CPU forever. Poll until a sufficient budget (currently
hard-coded to 64k completions) and if budget is exhausted, bailout
and give a chance to other threads.
Signed-off-by: NSagi Grimberg <sagig@mellanox.com>
Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
上级 bdf20e72
......@@ -2044,13 +2044,19 @@ isert_handle_wc(struct ib_wc *wc)
static void
isert_cq_work(struct work_struct *work)
{
enum { isert_poll_budget = 65536 };
struct isert_comp *comp = container_of(work, struct isert_comp,
work);
int completed = 0;
struct ib_wc wc;
while (ib_poll_cq(comp->cq, 1, &wc) == 1)
while (ib_poll_cq(comp->cq, 1, &wc) == 1) {
isert_handle_wc(&wc);
if (++completed >= isert_poll_budget)
break;
}
ib_req_notify_cq(comp->cq, IB_CQ_NEXT_COMP);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册