[rds-devel] [PATCH 1/3] RDS/IWARP: better error path handling.

Steve Wise swise at opengridcomputing.com
Mon Jan 26 12:13:57 PST 2009


From: Steve Wise <swise at opengridcomputing.com>

- deal with post_send failures
- kill the connection on fatal async errors

Signed-off-by: Steve Wise <swise at opengridcomputing.com>
---

 drivers/infiniband/ulp/rds/iw_cm.c   |   11 +++++------
 drivers/infiniband/ulp/rds/iw_send.c |    2 --
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/infiniband/ulp/rds/iw_cm.c b/drivers/infiniband/ulp/rds/iw_cm.c
index d737681..f51060f 100644
--- a/drivers/infiniband/ulp/rds/iw_cm.c
+++ b/drivers/infiniband/ulp/rds/iw_cm.c
@@ -211,13 +211,11 @@ static void rds_iw_qp_event_handler(struct ib_event *event, void *data)
 		rdma_notify(ic->i_cm_id, IB_EVENT_COMM_EST);
 		break;
 	case IB_EVENT_QP_REQ_ERR:
-		printk(KERN_ERR "Hit IB_EVENT_QP_REQ_ERR\n");
-		ic->i_cm_id->qp = NULL;
-		break;
+	case IB_EVENT_QP_FATAL:
 	default:
-		printk(KERN_WARNING "RDS/IB: unhandled QP event %u "
-		       "on connection to %u.%u.%u.%u\n", event->event,
-		       NIPQUAD(conn->c_faddr));
+		rds_iw_conn_error(conn, "RDS/IW: Fatal QP Event %u - connection %u.%u.%u.%u->%u.%u.%u.%u...reconnecting\n", 
+			event->event, NIPQUAD(conn->c_laddr), 
+			NIPQUAD(conn->c_faddr));
 		break;
 	}
 }
@@ -625,6 +623,7 @@ static int rds_iw_cm_event_handler(struct rdma_cm_id *cm_id,
 		break;
 
 	case RDMA_CM_EVENT_DISCONNECTED:
+		printk(KERN_WARNING "RDS/IW: DISCONNECT event - dropping connection %u.%u.%u.%u->%u.%u.%u.%u\n", NIPQUAD(conn->c_laddr), NIPQUAD(conn->c_faddr));
 		rds_conn_drop(conn);
 		break;
 
diff --git a/drivers/infiniband/ulp/rds/iw_send.c b/drivers/infiniband/ulp/rds/iw_send.c
index 869134d..f6d1cba 100644
--- a/drivers/infiniband/ulp/rds/iw_send.c
+++ b/drivers/infiniband/ulp/rds/iw_send.c
@@ -739,8 +739,6 @@ add_header:
 			ic->i_rm = prev->s_rm;
 			prev->s_rm = NULL;
 		}
-		/* Finesse this later */
-		BUG();
 		goto out;
 	}
 



More information about the rds-devel mailing list