The ft_event function needs access to the bml_r2_remove_btl_progress() to ensure
that all progress events are flushed as needed across a checkpoint/restart. This commit was SVN r19566.
Этот коммит содержится в:
родитель
270f482fea
Коммит
351c3a3a86
@ -543,7 +543,7 @@ int mca_bml_r2_del_procs(size_t nprocs,
|
|||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int bml_r2_remove_btl_progress(mca_btl_base_module_t* btl)
|
inline int bml_r2_remove_btl_progress(mca_btl_base_module_t* btl)
|
||||||
{
|
{
|
||||||
unsigned int p;
|
unsigned int p;
|
||||||
|
|
||||||
|
@ -89,6 +89,9 @@ int mca_bml_r2_component_fini(void);
|
|||||||
|
|
||||||
int mca_bml_r2_ft_event(int status);
|
int mca_bml_r2_ft_event(int status);
|
||||||
|
|
||||||
|
inline int bml_r2_remove_btl_progress(mca_btl_base_module_t* btl);
|
||||||
|
|
||||||
|
|
||||||
#if defined(c_plusplus) || defined(__cplusplus)
|
#if defined(c_plusplus) || defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -48,6 +48,7 @@ int mca_bml_r2_ft_event(int state)
|
|||||||
size_t btl_idx;
|
size_t btl_idx;
|
||||||
int ret, p;
|
int ret, p;
|
||||||
int loc_state;
|
int loc_state;
|
||||||
|
opal_list_item_t* w_item = NULL;
|
||||||
|
|
||||||
if(OPAL_CRS_CHECKPOINT == state) {
|
if(OPAL_CRS_CHECKPOINT == state) {
|
||||||
/* Do nothing for now */
|
/* Do nothing for now */
|
||||||
@ -128,6 +129,28 @@ int mca_bml_r2_ft_event(int state)
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
else if(OPAL_CRS_RESTART_PRE == state ) {
|
else if(OPAL_CRS_RESTART_PRE == state ) {
|
||||||
|
/* Flush the progress functions */
|
||||||
|
procs = ompi_proc_all(&num_procs);
|
||||||
|
if(NULL == procs) {
|
||||||
|
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
|
}
|
||||||
|
for (w_item = opal_list_get_first(&mca_btl_base_modules_initialized);
|
||||||
|
w_item != opal_list_get_end(&mca_btl_base_modules_initialized);
|
||||||
|
w_item = opal_list_get_next(w_item)) {
|
||||||
|
mca_btl_base_selected_module_t *sm = (mca_btl_base_selected_module_t *) w_item;
|
||||||
|
mca_btl_base_module_t* btl = sm->btl_module;
|
||||||
|
|
||||||
|
/* unregister the BTL progress function if any */
|
||||||
|
bml_r2_remove_btl_progress(btl);
|
||||||
|
|
||||||
|
/* dont use this btl for any peers */
|
||||||
|
for(p = 0; p < (int)num_procs; ++p) {
|
||||||
|
ompi_proc_t* proc = procs[p];
|
||||||
|
mca_bml_r2_del_proc_btl(proc, sm->btl_module);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* End New */
|
||||||
|
|
||||||
mca_bml_r2.num_btl_modules = 0;
|
mca_bml_r2.num_btl_modules = 0;
|
||||||
mca_bml_r2.num_btl_progress = 0;
|
mca_bml_r2.num_btl_progress = 0;
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(c_plusplus) || defined(__cplusplus)
|
#if defined(c_plusplus) || defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user