diff options
author | Peter Somogyi <psomogyi@gamax.hu> | 2007-02-14 18:58:20 +0100 |
---|---|---|
committer | Peter Somogyi <psomogyi@gamax.hu> | 2007-02-14 18:58:20 +0100 |
commit | 1c8bcd6f5718a675f8a382d143d82871aac85296 (patch) | |
tree | cd39c6231d97526ee9027209c1d9ff0fe0406d55 /ctdb/ib/ibwrapper.c | |
parent | 8b6f1c39e7b8b423e28fbfed09577d8e7f9d1de0 (diff) | |
download | samba-1c8bcd6f5718a675f8a382d143d82871aac85296.tar.gz samba-1c8bcd6f5718a675f8a382d143d82871aac85296.tar.xz samba-1c8bcd6f5718a675f8a382d143d82871aac85296.zip |
ib: a trivial approach of integration
TODO: bugfix (not yet complete, something happens differently than expected
at tcpip when connection is refused in the beginning)
(This used to be ctdb commit 330d76fb91f717d4fb8d1be29c11ddf8c25a4f1c)
Diffstat (limited to 'ctdb/ib/ibwrapper.c')
-rw-r--r-- | ctdb/ib/ibwrapper.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/ctdb/ib/ibwrapper.c b/ctdb/ib/ibwrapper.c index 2f8dd256f9..fef312678a 100644 --- a/ctdb/ib/ibwrapper.c +++ b/ctdb/ib/ibwrapper.c @@ -420,6 +420,7 @@ static void ibw_event_handler_cm(struct event_context *ev, switch (event->event) { case RDMA_CM_EVENT_ADDR_RESOLVED: + DEBUG(11, ("RDMA_CM_EVENT_ADDR_RESOLVED\n")); /* continuing from ibw_connect ... */ rc = rdma_resolve_route(cma_id, 2000); if (rc) { @@ -430,6 +431,7 @@ static void ibw_event_handler_cm(struct event_context *ev, break; case RDMA_CM_EVENT_ROUTE_RESOLVED: + DEBUG(11, ("RDMA_CM_EVENT_ROUTE_RESOLVED\n")); /* after RDMA_CM_EVENT_ADDR_RESOLVED: */ assert(cma_id->context!=NULL); conn = talloc_get_type(cma_id->context, struct ibw_conn); @@ -441,6 +443,7 @@ static void ibw_event_handler_cm(struct event_context *ev, break; case RDMA_CM_EVENT_CONNECT_REQUEST: + DEBUG(11, ("RDMA_CM_EVENT_CONNECT_REQUEST\n")); ctx->state = IBWS_CONNECT_REQUEST; conn = ibw_conn_new(ctx); pconn = talloc_get_type(conn->internal, struct ibw_conn_priv); @@ -481,14 +484,23 @@ static void ibw_event_handler_cm(struct event_context *ev, break; case RDMA_CM_EVENT_ADDR_ERROR: + sprintf(ibw_lasterr, "RDMA_CM_EVENT_ADDR_ERROR, error %d\n", event->status); + goto error; case RDMA_CM_EVENT_ROUTE_ERROR: + sprintf(ibw_lasterr, "RDMA_CM_EVENT_ROUTE_ERROR, error %d\n", event->status); + goto error; case RDMA_CM_EVENT_CONNECT_ERROR: + sprintf(ibw_lasterr, "RDMA_CM_EVENT_CONNECT_ERROR, error %d\n", event->status); + goto error; case RDMA_CM_EVENT_UNREACHABLE: + sprintf(ibw_lasterr, "RDMA_CM_EVENT_UNREACHABLE, error %d\n", event->status); + goto error; case RDMA_CM_EVENT_REJECTED: - sprintf(ibw_lasterr, "cma event %d, error %d\n", event->event, event->status); + sprintf(ibw_lasterr, "RDMA_CM_EVENT_REJECTED, error %d\n", event->status); goto error; case RDMA_CM_EVENT_DISCONNECTED: + DEBUG(11, ("RDMA_CM_EVENT_DISCONNECTED\n")); if (cma_id!=pctx->cm_id) { DEBUG(0, ("client DISCONNECT event cm_id=%p\n", cma_id)); conn = talloc_get_type(cma_id->context, struct ibw_conn); @@ -944,7 +956,7 @@ int ibw_bind(struct ibw_ctx *ctx, struct sockaddr_in *my_addr) int rc; DEBUG(10, ("ibw_bind: addr=%s, port=%u\n", - inet_ntoa(my_addr->sin_addr), my_addr->sin_port)); + inet_ntoa(my_addr->sin_addr), ntohs(my_addr->sin_port))); rc = rdma_bind_addr(pctx->cm_id, (struct sockaddr *) my_addr); if (rc) { sprintf(ibw_lasterr, "rdma_bind_addr error %d\n", rc); @@ -1008,7 +1020,8 @@ int ibw_connect(struct ibw_ctx *ctx, struct sockaddr_in *serv_addr, void *conn_u conn = ibw_conn_new(ctx); conn->conn_userdata = conn_userdata; pconn = talloc_get_type(conn->internal, struct ibw_conn_priv); - DEBUG(10, ("ibw_connect: addr=%s, port=%u\n", inet_ntoa(serv_addr->sin_addr), serv_addr->sin_port)); + DEBUG(10, ("ibw_connect: addr=%s, port=%u\n", inet_ntoa(serv_addr->sin_addr), + ntohs(serv_addr->sin_port))); /* init cm */ rc = rdma_create_id(pctx->cm_channel, &pconn->cm_id, conn, RDMA_PS_TCP); @@ -1023,6 +1036,7 @@ int ibw_connect(struct ibw_ctx *ctx, struct sockaddr_in *serv_addr, void *conn_u if (rc) { sprintf(ibw_lasterr, "rdma_resolve_addr error %d\n", rc); DEBUG(0, (ibw_lasterr)); + talloc_free(conn); return -1; } |