Handle no IP Address in rdmacm more resiliently
If there is no IP Address, have rdmacm log the correct error and let another cpc have a go at it. This is being done by splitting off the IP address checking logic for the modex message creation, and having it log the correct error in the error case. This commit was SVN r18392.
Этот коммит содержится в:
родитель
46bfd42c09
Коммит
9c724128f8
@ -962,11 +962,10 @@ out:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int create_message(struct rdmacm_contents *server, mca_btl_openib_module_t *openib_btl, ompi_btl_openib_connect_base_module_data_t *data)
|
||||
static int ipaddrcheck(struct rdmacm_contents *server, mca_btl_openib_module_t *openib_btl)
|
||||
{
|
||||
int rc, i;
|
||||
struct ibv_device_attr attr;
|
||||
struct message *message;
|
||||
|
||||
rc = ibv_query_device(openib_btl->hca->ib_dev_context, &attr);
|
||||
if (-1 == rc) {
|
||||
@ -999,6 +998,16 @@ static int create_message(struct rdmacm_contents *server, mca_btl_openib_module_
|
||||
goto out;
|
||||
}
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
|
||||
out:
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
static int create_message(struct rdmacm_contents *server, mca_btl_openib_module_t *openib_btl, ompi_btl_openib_connect_base_module_data_t *data)
|
||||
{
|
||||
struct message *message;
|
||||
|
||||
message = malloc(sizeof(struct message));
|
||||
if (NULL == message) {
|
||||
BTL_ERROR(("malloc Failed"));
|
||||
@ -1116,6 +1125,14 @@ static int rdmacm_component_query(mca_btl_openib_module_t *openib_btl,
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = ipaddrcheck(server, openib_btl);
|
||||
if (0 != rc) {
|
||||
opal_output_verbose(5, mca_btl_base_output,
|
||||
"openib BTL: rdmacm IP address not found on port");
|
||||
rc = OMPI_ERR_NOT_SUPPORTED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* rdma_listen() */
|
||||
/* FIXME - 1024 should be (num of connectors * mca_btl_openib_component.num_qps) */
|
||||
rc = rdma_listen(server->id[0], 1024);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user