1
1
* Ensure to destroy the correct QP (local->id[num]->qp will always
   have a valid pointer in it, even if we setup a dummy qp)
 * Note two notable places where we need to figure out how to
   propagate errors up from the CPC to the main BTL / PML when errors
   occur.  Probably have the same issue in IBCM, too.

This commit was SVN r18700.
Этот коммит содержится в:
Jeff Squyres 2008-06-20 22:09:30 +00:00
родитель 0074126886
Коммит 5ded50df0e

Просмотреть файл

@ -443,7 +443,7 @@ static int handle_connect_request(rdmacm_contents_t *local,
BTL_VERBOSE(("ep state = %d, local ipaddr = %x, remote ipaddr = %x port %d",
endpoint->endpoint_state, local->ipaddr, message->ipaddr, rem_port));
if ((local->ipaddr > message->ipaddr && local->tcp_port > rem_port) ||
if ((local->ipaddr == message->ipaddr && local->tcp_port > rem_port) ||
local->ipaddr > message->ipaddr) {
int race = 1;
@ -819,7 +819,7 @@ static int finish_connect(rdmacm_contents_t *local, int num)
return 0;
out1:
ibv_destroy_qp(local->endpoint->qps[num].qp->lcl_qp);
ibv_destroy_qp(local->id[num]->qp);
out:
rdmacm_cleanup(local, local->id[num], num);
@ -926,6 +926,7 @@ static void *rdmacm_event_dispatch(int fd, int flags, void *context)
data = malloc(event->param.conn.private_data_len);
if (NULL == data) {
BTL_ERROR(("error mallocing memory"));
/* JMS need to propagate an error up to BTL or PML somehow */
return NULL;
}
memcpy(data, event->param.conn.private_data, event->param.conn.private_data_len);
@ -938,6 +939,7 @@ static void *rdmacm_event_dispatch(int fd, int flags, void *context)
BTL_ERROR(("Error rdma_event_handler -- %s, status = %d",
rdma_event_str(ecopy.event),
ecopy.status));
/* JMS need to propagate an error up to BTL or PML somehow */
}
if (NULL != data)