Some minor changes to help the openib BTL build and run on Solaris:
- poll() can return POLLRDNORM even if not requested (Solaris bug) - MIN macro not defined in btl_openib.c and while we're at it, we clean up the MIN definition in ad_bgl_pset.h - btl_openib_connect_rdmacm.c was calling rdma_destroy_id() twice leading to undefined behavior (a hang on Solaris) This commit was SVN r24356.
Этот коммит содержится в:
родитель
d711c5a4b1
Коммит
cd5c2e794f
@ -70,6 +70,9 @@
|
|||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MIN
|
||||||
|
#define MIN(a,b) ((a)<(b)?(a):(b))
|
||||||
|
#endif
|
||||||
|
|
||||||
mca_btl_openib_module_t mca_btl_openib_module = {
|
mca_btl_openib_module_t mca_btl_openib_module = {
|
||||||
{
|
{
|
||||||
|
@ -432,6 +432,13 @@ void* btl_openib_async_thread(void * async)
|
|||||||
/* no events */
|
/* no events */
|
||||||
break;
|
break;
|
||||||
case POLLIN:
|
case POLLIN:
|
||||||
|
#if defined(__SVR4) && defined(__sun)
|
||||||
|
/*
|
||||||
|
* Need workaround for Solaris IB user verbs since
|
||||||
|
* "Poll on IB async fd returns POLLRDNORM revent even though it is masked out"
|
||||||
|
*/
|
||||||
|
case POLLIN | POLLRDNORM:
|
||||||
|
#endif
|
||||||
/* Processing our event */
|
/* Processing our event */
|
||||||
if (0 == i) {
|
if (0 == i) {
|
||||||
/* 0 poll we use for comunication with main thread */
|
/* 0 poll we use for comunication with main thread */
|
||||||
|
@ -1922,7 +1922,11 @@ static int rdmacm_component_query(mca_btl_openib_module_t *openib_btl, ompi_btl_
|
|||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
|
|
||||||
out5:
|
out5:
|
||||||
rdma_destroy_id(context->id);
|
/*
|
||||||
|
* Since rdma_create_id() succeeded, we need "rdma_destroy_id(context->id)".
|
||||||
|
* But don't do it here since it's part of out4:OBJ_RELEASE(context),
|
||||||
|
* and we don't want to do it twice.
|
||||||
|
*/
|
||||||
out4:
|
out4:
|
||||||
opal_list_remove_first(&(server->ids));
|
opal_list_remove_first(&(server->ids));
|
||||||
OBJ_RELEASE(context);
|
OBJ_RELEASE(context);
|
||||||
|
@ -47,7 +47,7 @@ typedef struct {
|
|||||||
|
|
||||||
|
|
||||||
#undef MIN
|
#undef MIN
|
||||||
#define MIN(a,b) ((a<b ? a : b))
|
#define MIN(a,b) ((a)<(b) ? (a) : (b))
|
||||||
|
|
||||||
|
|
||||||
/* Default is to choose 8 aggregator nodes in each 32 CN pset.
|
/* Default is to choose 8 aggregator nodes in each 32 CN pset.
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user