1
1

OSHMEM: Fix call prepare_src with a NULL endpoint

see issue: https://svn.open-mpi.org/trac/ompi/ticket/4399

Refs trac:4399

fixed by Igor, reviewed by Alex
cmr=v1.7.5:reviewer=ompi-rm1.7

This commit was SVN r31168.

The following Trac tickets were found above:
  Ticket 4399 --> https://svn.open-mpi.org/trac/ompi/ticket/4399
Этот коммит содержится в:
Mike Dubman 2014-03-20 13:11:25 +00:00
родитель 08fd24f452
Коммит d8288fa39d
2 изменённых файлов: 10 добавлений и 9 удалений

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

@ -411,10 +411,6 @@ sshmem_mkey_t *mca_spml_yoda_register(void* addr,
yoda_context->registration = NULL;
if (NULL != ybtl->btl->btl_prepare_src) {
int btl_id;
mca_bml_base_btl_t* bml_btl;
bml_btl = get_next_btl(oshmem_my_proc_id(), &btl_id);
/* initialize convertor for source descriptor*/
opal_convertor_copy_and_prepare_for_recv(proc_self->proc_convertor,
@ -442,7 +438,7 @@ sshmem_mkey_t *mca_spml_yoda_register(void* addr,
/* register source memory */
des = ybtl->btl->btl_prepare_src(ybtl->btl,
bml_btl->btl_endpoint,
ybtl->bml_btl->btl_endpoint,
yoda_context->registration,
&convertor,
MCA_BTL_NO_ORDER,
@ -484,7 +480,7 @@ static void mca_spml_yoda_error_handler(struct mca_btl_base_module_t* btl,
/* make global btl list&map */
static int create_btl_list(void)
{
int btl_id;
int btl_type;
char *btl_name;
int size;
opal_list_item_t *item;
@ -510,12 +506,15 @@ static int create_btl_list(void)
btl_sm = (mca_btl_base_selected_module_t *) item;
btl_name = btl_sm->btl_component->btl_version.mca_component_name;
btl_id = btl_name_to_id(btl_name);
btl_type = btl_name_to_id(btl_name);
SPML_VERBOSE(50, "found btl (%s) btl_id=%d", btl_name, btl_id);
SPML_VERBOSE(50, "found btl (%s) btl_type=%s", btl_name, btl_type2str(btl_type));
/* Note: we setup bml_btl in create_btl_idx() */
mca_spml_yoda.btl_type_map[mca_spml_yoda.n_btls].bml_btl = NULL;
mca_spml_yoda.btl_type_map[mca_spml_yoda.n_btls].btl =
btl_sm->btl_module;
mca_spml_yoda.btl_type_map[mca_spml_yoda.n_btls].btl_type = btl_id;
mca_spml_yoda.btl_type_map[mca_spml_yoda.n_btls].btl_type = btl_type;
mca_spml_yoda.n_btls++;
}
@ -601,6 +600,7 @@ static int create_btl_idx(int dst_pe)
return OSHMEM_ERROR;
}
proc->transport_ids[i] = btl_id;
mca_spml_yoda.btl_type_map[btl_id].bml_btl = bml_btl;
mca_spml_yoda.btl_type_map[btl_id].use_cnt++;
}
return OSHMEM_SUCCESS;

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

@ -55,6 +55,7 @@ enum {
struct yoda_btl {
mca_btl_base_module_t *btl;
mca_bml_base_btl_t *bml_btl;
int btl_type;
int use_cnt;
};