Committed as r29922 with: Changes from V2: * use orte_rml_oob_ft_event() instead of referencing through the modules * properly protect variable (thanks to --enable-picky)
Adrian On Mon, Dec 09, 2013 at 03:39:11PM -0600, Josh Hursey wrote: > With the modification that Ralph mentioned below, I think the patch it good > to go. > > Thanks! > > > On Mon, Dec 9, 2013 at 2:19 PM, Ralph Castain <r...@open-mpi.org> wrote: > > > On Dec 9, 2013, at 10:07 AM, Ralph Castain <r...@open-mpi.org> wrote: > > > > > I see some things in here that concern me. First, there are variables > > being added to functions that would appear to generate "not used" warnings > > if ft is not enabled - they need to be properly protected. Second, I see > > references like this one: > > > > > > - (ret = orte_oob.ft_event(state)) ) { > > > + if( ORTE_SUCCESS != (ret = > > orte_rml_oob_module.super.ft_event(state)) ) { > > > > Took me awhile to grok what you were doing with the above line - it's > > actually okay, but you could avoid going thru the module dereference by > > just calling > > > > orte_rml_oob_ft_event > > > > No need to reference thru the module unless you want to for some reason. > > > > > > > > > > This doesn't seem right - if we are referencing the OOB, then we need to > > go directly to it. I'll have to check/correct the code, but the RML > > shouldn't even be storing a pointer to the OOB in it as there no longer is > > a direct linkage. > > > > > > > > > On Dec 9, 2013, at 5:38 AM, Adrian Reber <adr...@lisas.de> wrote: > > > > > >> From: Adrian Reber <adrian.re...@hs-esslingen.de> > > >> > > >> This are the remaining changes to get C/R to compile again. This patch > > >> includes various fixes all over the C/R code and are hard to group > > >> like the previous patches. > > >> > > >> Changes from V1: > > >> * explain why mca_base_component_distill_checkpoint_ready no longer > > works > > >> * compare return result of opal functions with OPAL_* values > > >> > > >> Signed-off-by: Adrian Reber <adrian.re...@hs-esslingen.de> > > >> --- > > >> ompi/mca/bml/r2/bml_r2_ft.c | 10 +++++----- > > >> opal/mca/base/mca_base_components_open.c | 9 +++++++++ > > >> opal/mca/crs/self/crs_self_component.c | 16 ++++++++-------- > > >> opal/tools/opal-restart/opal-restart.c | 2 +- > > >> orte/mca/errmgr/base/errmgr_base_fns.c | 2 +- > > >> orte/mca/ess/env/ess_env_module.c | 2 +- > > >> orte/mca/plm/base/plm_base_launch_support.c | 1 + > > >> orte/mca/rml/oob/rml_oob_component.c | 9 ++------- > > >> orte/mca/snapc/base/snapc_base_frame.c | 4 ++-- > > >> orte/mca/snapc/full/snapc_full_app.c | 15 +++++++++++++++ > > >> orte/mca/snapc/full/snapc_full_component.c | 7 ++++--- > > >> orte/mca/snapc/full/snapc_full_global.c | 8 ++++---- > > >> orte/mca/snapc/full/snapc_full_local.c | 2 +- > > >> orte/mca/sstore/stage/sstore_stage_component.c | 5 +++++ > > >> 14 files changed, 59 insertions(+), 33 deletions(-) > > >> > > >> diff --git a/ompi/mca/bml/r2/bml_r2_ft.c b/ompi/mca/bml/r2/bml_r2_ft.c > > >> index 1448c04..fc16452 100644 > > >> --- a/ompi/mca/bml/r2/bml_r2_ft.c > > >> +++ b/ompi/mca/bml/r2/bml_r2_ft.c > > >> @@ -191,7 +191,7 @@ int mca_bml_r2_ft_event(int state) > > >> > > >> for(p = 0; p < (int)num_procs; ++p) { > > >> if( NULL != > > procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML]) { > > >> - OBJ_RELEASE((mca_bml_base_endpoint_t*) > > procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML]); > > >> + > > OBJ_RELEASE(procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML]); > > >> procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML] > > = NULL; > > >> } > > >> > > >> @@ -263,9 +263,9 @@ int mca_bml_r2_ft_event(int state) > > >> mca_base_var_get_value(param_type, &btl_list, NULL, NULL); > > >> opal_output_verbose(11, ompi_cr_output, > > >> "Restart (New BTL MCA): <%s>\n", btl_list ? > > btl_list[0] : ""); > > >> - if( NULL != param_list ) { > > >> - free(param_list); > > >> - param_list = NULL; > > >> + if( NULL != btl_list ) { > > >> + free(btl_list); > > >> + btl_list = NULL; > > >> } > > >> > > >> /* > > >> @@ -286,7 +286,7 @@ int mca_bml_r2_ft_event(int state) > > >> > > >> for(p = 0; p < (int)num_procs; ++p) { > > >> if( NULL != > > procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML]) { > > >> - OBJ_RELEASE((mca_bml_base_endpoint_t*) > > procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML]); > > >> + > > OBJ_RELEASE(procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML]); > > >> procs[p]->proc_endpoints[OMPI_PROC_ENDPOINT_TAG_BML] = > > NULL; > > >> } > > >> > > >> diff --git a/opal/mca/base/mca_base_components_open.c > > b/opal/mca/base/mca_base_components_open.c > > >> index e46e0f3..4568a51 100644 > > >> --- a/opal/mca/base/mca_base_components_open.c > > >> +++ b/opal/mca/base/mca_base_components_open.c > > >> @@ -141,9 +141,18 @@ static int open_components(mca_base_framework_t > > *framework) > > >> * NTH: Logic moved to mca_base_components_filter. > > >> */ > > >> #if (OPAL_ENABLE_FT == 1) && (OPAL_ENABLE_FT_CR == 1) > > >> +#ifdef ENABLE_FT_FIXED > > >> + /* FIXME_FT > > >> + * > > >> + * the variable mca_base_component_distill_checkpoint_ready > > >> + * was removed by commit 8181c8273c486bba59b3dead324939eac1a58b8c > > (r28237) > > >> + * "Introduce the MCA framework system. This formalizes the > > interface frameworks must provide." > > >> + * > > >> + * */ > > >> if (mca_base_component_distill_checkpoint_ready) { > > >> open_only_flags |= MCA_BASE_METADATA_PARAM_CHECKPOINT; > > >> } > > >> +#endif /* ENABLE_FT_FIXED */ > > >> #endif /* (OPAL_ENABLE_FT == 1) && (OPAL_ENABLE_FT_CR == 1) */ > > >> > > >> /* If mca_base_framework_register_components was called with the > > MCA_BASE_COMPONENTS_ALL flag > > >> diff --git a/opal/mca/crs/self/crs_self_component.c > > b/opal/mca/crs/self/crs_self_component.c > > >> index e0ca1ab..eb45d59 100644 > > >> --- a/opal/mca/crs/self/crs_self_component.c > > >> +++ b/opal/mca/crs/self/crs_self_component.c > > >> @@ -90,9 +90,9 @@ static int crs_self_register (void) > > >> mca_crs_self_component.super.priority = 20; > > >> ret = mca_base_component_var_register > > (&mca_crs_self_component.super.base_version, > > >> "priority", "Priority of the > > CRS self component " > > >> - "(default: 20)", > > MCA_BASE_VAR_TYPE_INT, NULL, > > >> + "(default: 20)", > > MCA_BASE_VAR_TYPE_INT, NULL, 0, > > >> MCA_BASE_VAR_FLAG_SETTABLE, > > >> - OPAL_INFO_LVL_9, > > MPI_BASE_VAR_SCOPE_ALL_EQ, > > >> + OPAL_INFO_LVL_9, > > MCA_BASE_VAR_SCOPE_ALL_EQ, > > >> > > &mca_crs_self_component.super.priority); > > >> if (0 > ret) { > > >> return ret; > > >> @@ -102,8 +102,8 @@ static int crs_self_register (void) > > >> ret = mca_base_component_var_register > > (&mca_crs_self_component.super.base_version, > > >> "verbose", > > >> "Verbose level for the CRS > > self component", > > >> - MCA_BASE_VAR_TYPE_INT, > > NULL,MCA_BASE_VAR_FLAG_SETTABLE, > > >> - OPAL_INFO_LVL_9, > > MPI_BASE_VAR_SCOPE_LOCAL, > > >> + MCA_BASE_VAR_TYPE_INT, > > NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE, > > >> + OPAL_INFO_LVL_9, > > MCA_BASE_VAR_SCOPE_LOCAL, > > >> > > &mca_crs_self_component.super.verbose); > > >> if (0 > ret) { > > >> return ret; > > >> @@ -116,8 +116,8 @@ static int crs_self_register (void) > > >> ret = mca_base_component_var_register > > (&mca_crs_self_component.super.base_version, > > >> "prefix", > > >> "Prefix for user defined > > callback functions", > > >> - MCA_BASE_VAR_TYPE_STRING, > > NULL, MCA_BASE_VAR_FLAG_SETTABLE, > > >> - OPAL_INFO_LVL_9, > > MPI_BASE_VAR_SCOPE_LOCAL, > > >> + MCA_BASE_VAR_TYPE_STRING, > > NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE, > > >> + OPAL_INFO_LVL_9, > > MCA_BASE_VAR_SCOPE_LOCAL, > > >> > > &mca_crs_self_component.prefix); > > >> if (0 > ret) { > > >> return ret; > > >> @@ -126,8 +126,8 @@ static int crs_self_register (void) > > >> ret = mca_base_component_var_register > > (&mca_crs_self_component.super.base_version, > > >> "do_restart", > > >> "Start execution by calling > > restart callback", > > >> - MCA_BASE_VAR_TYPE_BOOL, > > NULL, MCA_BASE_VAR_FLAG_SETTABLE, > > >> - OPAL_INFO_LVL_9, > > MPI_BASE_VAR_SCOPE_LOCAL, > > >> + MCA_BASE_VAR_TYPE_BOOL, > > NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE, > > >> + OPAL_INFO_LVL_9, > > MCA_BASE_VAR_SCOPE_LOCAL, > > >> > > &mca_crs_self_component.do_restart); > > >> return (0 > ret) ? ret : OPAL_SUCCESS; > > >> } > > >> diff --git a/opal/tools/opal-restart/opal-restart.c > > b/opal/tools/opal-restart/opal-restart.c > > >> index 35b7843..53da7f3 100644 > > >> --- a/opal/tools/opal-restart/opal-restart.c > > >> +++ b/opal/tools/opal-restart/opal-restart.c > > >> @@ -247,7 +247,7 @@ main(int argc, char *argv[]) > > >> * restart on this node because it doesn't have the proper > > checkpointer > > >> * available. > > >> */ > > >> - if( OPAL_SUCCESS != (ret = opal_crs_base_open()) ) { > > >> + if( OPAL_SUCCESS != (ret = > > opal_crs_base_open(MCA_BASE_OPEN_DEFAULT)) ) { > > >> opal_show_help("help-opal-restart.txt", "comp_select_failure", > > true, > > >> "crs", ret); > > >> exit_status = ret; > > >> diff --git a/orte/mca/errmgr/base/errmgr_base_fns.c > > b/orte/mca/errmgr/base/errmgr_base_fns.c > > >> index 399c237..e8f41a2 100644 > > >> --- a/orte/mca/errmgr/base/errmgr_base_fns.c > > >> +++ b/orte/mca/errmgr/base/errmgr_base_fns.c > > >> @@ -366,7 +366,7 @@ void orte_errmgr_base_migrate_state_notify(int > > state) > > >> } > > >> } > > >> > > >> -void orte_errmgr_base_proc_state_notify(orte_proc_state_t state, > > orte_process_name_t *proc) > > >> +int orte_errmgr_base_proc_state_notify(orte_proc_state_t state, > > orte_process_name_t *proc) > > >> { > > >> if (NULL != proc) { > > >> switch(state) { > > >> diff --git a/orte/mca/ess/env/ess_env_module.c > > b/orte/mca/ess/env/ess_env_module.c > > >> index 6a71230..9b80099 100644 > > >> --- a/orte/mca/ess/env/ess_env_module.c > > >> +++ b/orte/mca/ess/env/ess_env_module.c > > >> @@ -422,7 +422,7 @@ static int rte_ft_event(int state) > > >> exit_status = ret; > > >> goto cleanup; > > >> } > > >> - if (ORTE_SUCCESS != (ret = orte_db.remove(NULL, NULL))) { > > >> + if (OPAL_SUCCESS != (ret = opal_db.remove(NULL, NULL))) { > > >> ORTE_ERROR_LOG(ret); > > >> exit_status = ret; > > >> goto cleanup; > > >> diff --git a/orte/mca/plm/base/plm_base_launch_support.c > > b/orte/mca/plm/base/plm_base_launch_support.c > > >> index 3deee11..6aba2c2 100644 > > >> --- a/orte/mca/plm/base/plm_base_launch_support.c > > >> +++ b/orte/mca/plm/base/plm_base_launch_support.c > > >> @@ -333,6 +333,7 @@ void orte_plm_base_complete_setup(int fd, short > > args, void *cbdata) > > >> { > > >> orte_job_t *jdata, *jdatorted; > > >> orte_state_caddy_t *caddy = (orte_state_caddy_t*)cbdata; > > >> + int rc; > > >> > > >> /* if we don't want to launch the apps, now is the time to leave */ > > >> if (orte_do_not_launch) { > > >> diff --git a/orte/mca/rml/oob/rml_oob_component.c > > b/orte/mca/rml/oob/rml_oob_component.c > > >> index dd539cd..b91f4a3 100644 > > >> --- a/orte/mca/rml/oob/rml_oob_component.c > > >> +++ b/orte/mca/rml/oob/rml_oob_component.c > > >> @@ -11,11 +11,7 @@ > > >> * Copyright (c) 2004-2005 The Regents of the University of California. > > >> * All rights reserved. > > >> * Copyright (c) 2007 Cisco Systems, Inc. All rights reserved. > > >> -<<<<<<< .mine > > >> - * Copyright (c) 2011-2012 Los Alamos National Security, LLC. > > >> -======= > > >> * Copyright (c) 2011-2013 Los Alamos National Security, LLC. > > >> ->>>>>>> .r28253 > > >> * All rights reserved. > > >> * $COPYRIGHT$ > > >> * > > >> @@ -189,8 +185,7 @@ orte_rml_oob_ft_event(int state) { > > >> ; > > >> } > > >> > > >> - if( ORTE_SUCCESS != > > >> - (ret = orte_oob.ft_event(state)) ) { > > >> + if( ORTE_SUCCESS != (ret = > > orte_rml_oob_module.super.ft_event(state)) ) { > > >> ORTE_ERROR_LOG(ret); > > >> exit_status = ret; > > >> goto cleanup; > > >> @@ -212,7 +207,7 @@ orte_rml_oob_ft_event(int state) { > > >> goto cleanup; > > >> } > > >> > > >> - if( ORTE_SUCCESS != (ret = mca_oob_base_select())) { > > >> + if( ORTE_SUCCESS != (ret = orte_oob_base_select())) { > > >> ORTE_ERROR_LOG(ret); > > >> exit_status = ret; > > >> goto cleanup; > > >> diff --git a/orte/mca/snapc/base/snapc_base_frame.c > > b/orte/mca/snapc/base/snapc_base_frame.c > > >> index edb8e6e..a46c77a 100644 > > >> --- a/orte/mca/snapc/base/snapc_base_frame.c > > >> +++ b/orte/mca/snapc/base/snapc_base_frame.c > > >> @@ -79,7 +79,7 @@ static int > > orte_snapc_base_register(mca_base_register_flag_t flags) > > >> return ORTE_SUCCESS; > > >> } > > >> > > >> -static int orte_snapc_base_close(void) > > >> +int orte_snapc_base_close(void) > > >> { > > >> /* Close the selected component */ > > >> if( NULL != orte_snapc.snapc_finalize ) { > > >> @@ -93,7 +93,7 @@ static int orte_snapc_base_close(void) > > >> * Function for finding and opening either all MCA components, > > >> * or the one that was specifically requested via a MCA parameter. > > >> */ > > >> -static int orte_snapc_base_open(mca_base_open_flag_t flags) > > >> +int orte_snapc_base_open(mca_base_open_flag_t flags) > > >> { > > >> /* Init the sequence (interval) number */ > > >> orte_snapc_base_snapshot_seq_number = 0; > > >> diff --git a/orte/mca/snapc/full/snapc_full_app.c > > b/orte/mca/snapc/full/snapc_full_app.c > > >> index 1ff036e..c7438f1 100644 > > >> --- a/orte/mca/snapc/full/snapc_full_app.c > > >> +++ b/orte/mca/snapc/full/snapc_full_app.c > > >> @@ -99,6 +99,12 @@ static int current_cr_state = OPAL_CRS_NONE; > > >> static orte_sstore_base_handle_t current_ss_handle = > > ORTE_SSTORE_HANDLE_INVALID, last_ss_handle = ORTE_SSTORE_HANDLE_INVALID; > > >> static opal_crs_base_ckpt_options_t *current_options = NULL; > > >> > > >> +static void snapc_full_app_callback_recv(int status, > > >> + orte_process_name_t* sender, > > >> + opal_buffer_t* buffer, > > >> + orte_rml_tag_t tag, > > >> + void* cbdata); > > >> + > > >> /************************ > > >> * Function Definitions > > >> ************************/ > > >> @@ -1673,3 +1679,12 @@ int > > app_coord_request_op(orte_snapc_base_request_op_t *datum) > > >> > > >> return exit_status; > > >> } > > >> + > > >> +/* dummy implementation of a callback function to get it to compile > > again */ > > >> +static void snapc_full_app_callback_recv(int status, > > >> + orte_process_name_t* sender, > > >> + opal_buffer_t* buffer, > > >> + orte_rml_tag_t tag, > > >> + void* cbdata) > > >> +{ > > >> +} > > >> diff --git a/orte/mca/snapc/full/snapc_full_component.c > > b/orte/mca/snapc/full/snapc_full_component.c > > >> index 7815363..b953e17 100644 > > >> --- a/orte/mca/snapc/full/snapc_full_component.c > > >> +++ b/orte/mca/snapc/full/snapc_full_component.c > > >> @@ -32,6 +32,7 @@ const char *orte_snapc_full_component_version_string = > > >> */ > > >> static int snapc_full_open(void); > > >> static int snapc_full_close(void); > > >> +static int snapc_full_register(void); > > >> > > >> bool orte_snapc_full_skip_app = false; > > >> bool orte_snapc_full_timing_enabled = false; > > >> @@ -74,7 +75,7 @@ orte_snapc_full_component_t mca_snapc_full_component > > = { > > >> } > > >> }; > > >> > > >> -static int snaps_full_register (void) > > >> +static int snapc_full_register (void) > > >> { > > >> mca_base_component_t *component = > > &mca_snapc_full_component.super.base_version; > > >> /* > > >> @@ -129,7 +130,7 @@ static int snaps_full_register (void) > > >> OPAL_INFO_LVL_9, > > >> MCA_BASE_VAR_SCOPE_LOCAL, > > >> > > &orte_snapc_full_progress_meter); > > >> - orte_snapc_full_progress_meter = (value % 101); > > >> + orte_snapc_full_progress_meter %= 101; > > >> > > >> return ORTE_SUCCESS; > > >> } > > >> @@ -148,7 +149,7 @@ static int snapc_full_open(void) > > >> } > > >> > > >> /* recheck the progress meter (it may have changed between register > > and open) */ > > >> - orte_snapc_full_progress_meter = (value % 101); > > >> + orte_snapc_full_progress_meter %= 101; > > >> > > >> /* > > >> * Debug Output > > >> diff --git a/orte/mca/snapc/full/snapc_full_global.c > > b/orte/mca/snapc/full/snapc_full_global.c > > >> index c88c6db..9f6da34 100644 > > >> --- a/orte/mca/snapc/full/snapc_full_global.c > > >> +++ b/orte/mca/snapc/full/snapc_full_global.c > > >> @@ -513,7 +513,7 @@ int global_coord_end_ckpt(orte_snapc_base_quiesce_t > > *datum) > > >> if( currently_migrating ) { > > >> OPAL_OUTPUT_VERBOSE((10, > > mca_snapc_full_component.super.output_handle, > > >> "Global) End Ckpt: Flush the modex cached > > data\n")); > > >> - if (ORTE_SUCCESS != (ret = orte_db.remove(NULL, NULL))) { > > >> + if (OPAL_SUCCESS != (ret = opal_db.remove(NULL, NULL))) { > > >> ORTE_ERROR_LOG(ret); > > >> exit_status = ret; > > >> goto cleanup; > > >> @@ -1138,7 +1138,7 @@ void snapc_full_global_orted_recv(int status, > > >> OPAL_OUTPUT_VERBOSE((10, > > mca_snapc_full_component.super.output_handle, > > >> "Global) Command: Job State Update > > (quick)")); > > >> > > >> - snapc_full_process_job_update_cmd(&sender, buffer, true); > > >> + snapc_full_process_job_update_cmd(sender, buffer, true); > > >> break; > > >> > > >> case ORTE_SNAPC_FULL_UPDATE_JOB_STATE_CMD: > > >> @@ -1974,7 +1974,7 @@ static void > > snapc_full_process_job_update_cmd(orte_process_name_t* sender, > > >> > > >> static int snapc_full_establish_snapshot_dir(bool empty_metadata) > > >> { > > >> - const char **value = NULL; > > >> + char **value = NULL; > > >> int idx = 0; > > >> > > >> /********************* > > >> @@ -1998,7 +1998,7 @@ static int snapc_full_establish_snapshot_dir(bool > > empty_metadata) > > >> opal_show_help("help-orte-restart.txt", "amca_param_not_found", > > true); > > >> } > > >> if( 0 < idx ) { > > >> - mca_base_var_get_value (idx, &value, sizeof (value), NULL, > > NULL); > > >> + mca_base_var_get_value (idx, &value, NULL, NULL); > > >> > > >> if (*value) { > > >> orte_sstore.set_attr(global_snapshot.ss_handle, > > >> diff --git a/orte/mca/snapc/full/snapc_full_local.c > > b/orte/mca/snapc/full/snapc_full_local.c > > >> index c0b168a..b13fce9 100644 > > >> --- a/orte/mca/snapc/full/snapc_full_local.c > > >> +++ b/orte/mca/snapc/full/snapc_full_local.c > > >> @@ -1776,7 +1776,7 @@ static void snapc_full_local_comm_read_event(int > > fd, short flags, void *arg) > > >> if( currently_migrating && !flushed_modex ) { > > >> OPAL_OUTPUT_VERBOSE((10, > > mca_snapc_full_component.super.output_handle, > > >> "Local) Read Event: Flush the modex cached > > data\n")); > > >> - if (ORTE_SUCCESS != (ret = orte_db.remove(NULL, NULL))) { > > >> + if (OPAL_SUCCESS != (ret = opal_db.remove(NULL, NULL))) { > > >> ORTE_ERROR_LOG(ret); > > >> exit_status = ret; > > >> goto cleanup; > > >> diff --git a/orte/mca/sstore/stage/sstore_stage_component.c > > b/orte/mca/sstore/stage/sstore_stage_component.c > > >> index 19d7c75..aca2b46 100644 > > >> --- a/orte/mca/sstore/stage/sstore_stage_component.c > > >> +++ b/orte/mca/sstore/stage/sstore_stage_component.c > > >> @@ -235,3 +235,8 @@ static int sstore_stage_close(void) > > >> > > >> return ORTE_SUCCESS; > > >> } > > >> + > > >> +static int sstore_stage_register(void) > > >> +{ > > >> + return ORTE_SUCCESS; > > >> +} > > >> -- > > >> 1.8.4.2 > > >> > > >> _______________________________________________ > > >> devel mailing list > > >> de...@open-mpi.org > > >> http://www.open-mpi.org/mailman/listinfo.cgi/devel > > > > > > > _______________________________________________ > > devel mailing list > > de...@open-mpi.org > > http://www.open-mpi.org/mailman/listinfo.cgi/devel > > > > > > -- > Joshua Hursey > Assistant Professor of Computer Science > University of Wisconsin-La Crosse > http://cs.uwlax.edu/~jjhursey > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel