o2iblnd asserts when ib_poll_cq() returns an error
b=17533
i=maxim
i=Christopher Morrone
if (rc == 0) {
rc = ib_req_notify_cq(conn->ibc_cq,
IB_CQ_NEXT_COMP);
if (rc == 0) {
rc = ib_req_notify_cq(conn->ibc_cq,
IB_CQ_NEXT_COMP);
+ 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);
}
rc = ib_poll_cq(conn->ibc_cq, 1, &wc);
}
+ 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);
spin_lock_irqsave(&kiblnd_data.kib_sched_lock,
flags);