1
1

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.
Этот коммит содержится в:
Jon Mason 2008-05-06 22:31:29 +00:00
родитель 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);