[PATCH v2 28/34] iser-target: Introduce isert_poll_budget

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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: Sagi Grimberg <sagig@xxxxxxxxxxxx>
---
 drivers/infiniband/ulp/isert/ib_isert.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
index 603d6b8..46ba758 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -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);
 }
 
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux