help maintain order established, and defined, during mca_btl_openib_add_procs()
This commit was SVN r23425.
Этот коммит содержится в:
родитель
3abb5556a6
Коммит
f79c89e0e9
@ -14,6 +14,7 @@
|
|||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2008-2009 Mellanox Technologies. All rights reserved.
|
* Copyright (c) 2008-2009 Mellanox Technologies. All rights reserved.
|
||||||
* Copyright (c) 2009 IBM Corporation. All rights reserved.
|
* Copyright (c) 2009 IBM Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved
|
||||||
*
|
*
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -764,6 +765,8 @@ static void rml_recv_cb(int status, orte_process_name_t* process_name,
|
|||||||
slave try to find endpoint in closed state and
|
slave try to find endpoint in closed state and
|
||||||
initiate connection back */
|
initiate connection back */
|
||||||
mca_btl_openib_endpoint_t *ib_endpoint_found = NULL;
|
mca_btl_openib_endpoint_t *ib_endpoint_found = NULL;
|
||||||
|
int master_first_closed = -1;
|
||||||
|
|
||||||
for (i = 0; i < ib_proc->proc_endpoint_count; i++) {
|
for (i = 0; i < ib_proc->proc_endpoint_count; i++) {
|
||||||
ib_endpoint = ib_proc->proc_endpoints[i];
|
ib_endpoint = ib_proc->proc_endpoints[i];
|
||||||
if (ib_endpoint->subnet_id != rem_info.rem_subnet_id ||
|
if (ib_endpoint->subnet_id != rem_info.rem_subnet_id ||
|
||||||
@ -772,6 +775,13 @@ static void rml_recv_cb(int status, orte_process_name_t* process_name,
|
|||||||
continue;
|
continue;
|
||||||
found = true;
|
found = true;
|
||||||
ib_endpoint_found = ib_endpoint;
|
ib_endpoint_found = ib_endpoint;
|
||||||
|
|
||||||
|
if (master && -1 == master_first_closed &&
|
||||||
|
MCA_BTL_IB_CLOSED == ib_endpoint->endpoint_state ) {
|
||||||
|
/* capture in case no endpoint in connecting state */
|
||||||
|
master_first_closed = i;
|
||||||
|
}
|
||||||
|
|
||||||
if ((master &&
|
if ((master &&
|
||||||
MCA_BTL_IB_CONNECTING == ib_endpoint->endpoint_state) ||
|
MCA_BTL_IB_CONNECTING == ib_endpoint->endpoint_state) ||
|
||||||
(!master &&
|
(!master &&
|
||||||
@ -780,6 +790,14 @@ static void rml_recv_cb(int status, orte_process_name_t* process_name,
|
|||||||
}
|
}
|
||||||
ib_endpoint = ib_endpoint_found;
|
ib_endpoint = ib_endpoint_found;
|
||||||
|
|
||||||
|
if (found && master &&
|
||||||
|
MCA_BTL_IB_CLOSED == ib_endpoint->endpoint_state ) {
|
||||||
|
/* since this is master and no endpoints found in
|
||||||
|
* connecting state use the first endpoint found
|
||||||
|
* in closed state */
|
||||||
|
ib_endpoint = ib_proc->proc_endpoints[master_first_closed];
|
||||||
|
}
|
||||||
|
|
||||||
/* if this is slave and there is no endpoints in closed
|
/* if this is slave and there is no endpoints in closed
|
||||||
state then all connection are already in progress so
|
state then all connection are already in progress so
|
||||||
just ignore this connection request */
|
just ignore this connection request */
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user