1
1

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.
Этот коммит содержится в:
Eugene Loh 2011-02-03 23:53:21 +00:00
родитель d711c5a4b1
Коммит cd5c2e794f
4 изменённых файлов: 16 добавлений и 2 удалений

Просмотреть файл

@ -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.