From b9ec35ae559dc4155f4d357d7e0193dcc0aa1481 Mon Sep 17 00:00:00 2001 From: liangzhen <liangzhen> Date: Thu, 20 Nov 2008 06:54:16 +0000 Subject: [PATCH] Branch HEAD o2iblnd asserts when ib_poll_cq() returns an error b=17533 i=maxim i=Christopher Morrone --- lnet/klnds/o2iblnd/o2iblnd_cb.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lnet/klnds/o2iblnd/o2iblnd_cb.c b/lnet/klnds/o2iblnd/o2iblnd_cb.c index 07512fc648..86125ade75 100644 --- a/lnet/klnds/o2iblnd/o2iblnd_cb.c +++ b/lnet/klnds/o2iblnd/o2iblnd_cb.c @@ -3155,12 +3155,28 @@ kiblnd_scheduler(void *arg) if (rc == 0) { rc = ib_req_notify_cq(conn->ibc_cq, IB_CQ_NEXT_COMP); - LASSERT (rc >= 0); + if (rc < 0) { + CWARN("%s: ib_req_notify_cq failed: %d, " + "closing connection\n", + libcfs_nid2str(conn->ibc_peer->ibp_nid), rc); + kiblnd_close_conn(conn, -EIO); + kiblnd_conn_decref(conn); + spin_lock_irqsave(&kiblnd_data.kib_sched_lock, flags); + continue; + } rc = ib_poll_cq(conn->ibc_cq, 1, &wc); } - LASSERT (rc >= 0); + if (rc < 0) { + CWARN("%s: ib_poll_cq failed: %d, " + "closing connection\n", + libcfs_nid2str(conn->ibc_peer->ibp_nid), rc); + kiblnd_close_conn(conn, -EIO); + kiblnd_conn_decref(conn); + spin_lock_irqsave(&kiblnd_data.kib_sched_lock, flags); + continue; + } spin_lock_irqsave(&kiblnd_data.kib_sched_lock, flags); -- GitLab