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
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) ((a)<(b)?(a):(b))
|
||||
#endif
|
||||
|
||||
mca_btl_openib_module_t mca_btl_openib_module = {
|
||||
{
|
||||
|
@ -432,6 +432,13 @@ void* btl_openib_async_thread(void * async)
|
||||
/* no events */
|
||||
break;
|
||||
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 */
|
||||
if (0 == i) {
|
||||
/* 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;
|
||||
|
||||
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:
|
||||
opal_list_remove_first(&(server->ids));
|
||||
OBJ_RELEASE(context);
|
||||
|
@ -47,7 +47,7 @@ typedef struct {
|
||||
|
||||
|
||||
#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.
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user