diff options
author | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2013-03-20 02:39:19 (GMT) |
---|---|---|
committer | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2013-03-20 02:39:19 (GMT) |
commit | 6326d8f3bbaca69deb097aba41832ba3621ddfa7 (patch) | |
tree | 018a155642b067ddab0e718b5a8bb85f4956572d | |
parent | f1da88e11384a68af8c17f4a01342659f621ac8e (diff) | |
download | hdf5-6326d8f3bbaca69deb097aba41832ba3621ddfa7.zip hdf5-6326d8f3bbaca69deb097aba41832ba3621ddfa7.tar.gz hdf5-6326d8f3bbaca69deb097aba41832ba3621ddfa7.tar.bz2 |
[svn-r23393] fix bug with globally declared IDs for FS routines - reported by Jerome
-rw-r--r-- | src/H5VLiod.c | 68 | ||||
-rw-r--r-- | src/H5VLiod_client.c | 51 | ||||
-rw-r--r-- | src/H5VLiod_client.h | 2 | ||||
-rw-r--r-- | src/H5VLiod_common.h | 17 |
4 files changed, 69 insertions, 69 deletions
diff --git a/src/H5VLiod.c b/src/H5VLiod.c index e520927..589c753 100644 --- a/src/H5VLiod.c +++ b/src/H5VLiod.c @@ -35,6 +35,23 @@ #include "H5VLiod.h" /* Iod VOL plugin */ #include "H5VLiod_client.h" /* Client IOD helper */ +/* function shipper IDs for different routines */ +static fs_id_t H5VL_EFF_INIT_ID; +static fs_id_t H5VL_EFF_FINALIZE_ID; +static fs_id_t H5VL_FILE_CREATE_ID; +static fs_id_t H5VL_FILE_OPEN_ID; +static fs_id_t H5VL_FILE_FLUSH_ID; +static fs_id_t H5VL_FILE_CLOSE_ID; +static fs_id_t H5VL_GROUP_CREATE_ID; +static fs_id_t H5VL_GROUP_OPEN_ID; +static fs_id_t H5VL_GROUP_CLOSE_ID; +static fs_id_t H5VL_DSET_CREATE_ID; +static fs_id_t H5VL_DSET_OPEN_ID; +static fs_id_t H5VL_DSET_READ_ID; +static fs_id_t H5VL_DSET_WRITE_ID; +static fs_id_t H5VL_DSET_SET_EXTENT_ID; +static fs_id_t H5VL_DSET_CLOSE_ID; + /* Prototypes */ static void *H5VL_iod_fapl_copy(const void *_old_fa); static herr_t H5VL_iod_fapl_free(void *_fa); @@ -251,19 +268,61 @@ EFF_init(MPI_Comm comm, MPI_Info info) { char mpi_port_name[MPI_MAX_PORT_NAME]; FILE *config; + fs_request_t fs_req; + int num_procs; herr_t ret_value = SUCCEED; //FUNC_ENTER_API(FAIL) + MPI_Comm_size(comm, &num_procs); + if ((config = fopen("port.cfg", "r")) != NULL) { fread(mpi_port_name, sizeof(char), MPI_MAX_PORT_NAME, config); printf("Using MPI port name: %s.\n", mpi_port_name); fclose(config); } - if(NA_UNDEFINED == (PEER = H5VL_iod_client_eff_init(mpi_port_name, comm, info))) + if(NA_UNDEFINED == (PEER = H5VL_iod_client_eff_init(mpi_port_name))) return FAIL;//HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "failed to initialize eff stack"); + /* Register function and encoding/decoding functions */ + H5VL_EFF_INIT_ID = fs_register("eff_init", H5VL_iod_client_encode_eff_init, + H5VL_iod_client_decode_eff_init); + H5VL_EFF_FINALIZE_ID = fs_register("eff_finalize", NULL, + H5VL_iod_client_decode_eff_init); + H5VL_FILE_CREATE_ID = fs_register("file_create", H5VL_iod_client_encode_file_create, + H5VL_iod_client_decode_file_create); + H5VL_FILE_OPEN_ID = fs_register("file_open", H5VL_iod_client_encode_file_open, + H5VL_iod_client_decode_file_open); + H5VL_FILE_FLUSH_ID = fs_register("file_flush", H5VL_iod_client_encode_file_flush, + H5VL_iod_client_decode_file_flush); + H5VL_FILE_CLOSE_ID = fs_register("file_close", H5VL_iod_client_encode_file_close, + H5VL_iod_client_decode_file_close); + H5VL_GROUP_CREATE_ID = fs_register("group_create", H5VL_iod_client_encode_group_create, + H5VL_iod_client_decode_group_create); + H5VL_GROUP_OPEN_ID = fs_register("group_open", H5VL_iod_client_encode_group_open, + H5VL_iod_client_decode_group_open); + H5VL_GROUP_CLOSE_ID = fs_register("group_close", H5VL_iod_client_encode_group_close, + H5VL_iod_client_decode_group_close); + H5VL_DSET_CREATE_ID = fs_register("dset_create", H5VL_iod_client_encode_dset_create, + H5VL_iod_client_decode_dset_create); + H5VL_DSET_OPEN_ID = fs_register("dset_open", H5VL_iod_client_encode_dset_open, + H5VL_iod_client_decode_dset_open); + H5VL_DSET_READ_ID = fs_register("dset_read", H5VL_iod_client_encode_dset_io, + H5VL_iod_client_decode_dset_read); + H5VL_DSET_WRITE_ID = fs_register("dset_write", H5VL_iod_client_encode_dset_io, + H5VL_iod_client_decode_dset_write); + H5VL_DSET_SET_EXTENT_ID = fs_register("dset_set_extent", H5VL_iod_client_encode_dset_set_extent, + H5VL_iod_client_decode_dset_set_extent); + H5VL_DSET_CLOSE_ID = fs_register("dset_close", H5VL_iod_client_encode_dset_close, + H5VL_iod_client_decode_dset_close); + + /* forward the init call to the IONs */ + if(fs_forward(PEER, H5VL_EFF_INIT_ID, &num_procs, &ret_value, &fs_req) < 0) + return FAIL;//HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, NA_UNDEFINED, "failed to ship eff_init"); + + fs_wait(fs_req, FS_MAX_IDLE_TIME, FS_STATUS_IGNORE); + //done: //FUNC_LEAVE_API(ret_value) return ret_value; @@ -285,10 +344,17 @@ EFF_init(MPI_Comm comm, MPI_Info info) herr_t EFF_finalize(void) { + fs_request_t fs_req; herr_t ret_value = SUCCEED; //FUNC_ENTER_API(FAIL) + /* forward the finalize call to the IONs */ + if(fs_forward(PEER, H5VL_EFF_FINALIZE_ID, NULL, &ret_value, &fs_req) < 0) + return FAIL;//HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "failed to ship eff_finalize"); + + fs_wait(fs_req, FS_MAX_IDLE_TIME, FS_STATUS_IGNORE); + if(H5VL_iod_client_eff_finalize(PEER) < 0) return FAIL;//HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "failed to shutdown eff stack"); //done: diff --git a/src/H5VLiod_client.c b/src/H5VLiod_client.c index 134b1bc..29abe84 100644 --- a/src/H5VLiod_client.c +++ b/src/H5VLiod_client.c @@ -388,18 +388,14 @@ done: } /* end H5VL_iod_local_traverse */ na_addr_t -H5VL_iod_client_eff_init(const char *mpi_port_name, MPI_Comm comm, MPI_Info UNUSED info) +H5VL_iod_client_eff_init(const char *mpi_port_name) { na_addr_t ion_target; int fs_ret; na_addr_t ret_value; - int num_procs; - fs_request_t fs_req; FUNC_ENTER_NOAPI_NOINIT - MPI_Comm_size(comm, &num_procs); - network_class = na_mpi_init(NULL, 0); fs_ret = fs_init(network_class); @@ -415,44 +411,6 @@ H5VL_iod_client_eff_init(const char *mpi_port_name, MPI_Comm comm, MPI_Info UNUS if (fs_ret != S_SUCCESS) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, NA_UNDEFINED, "failed to connect to network address"); - /* Register function and encoding/decoding functions */ - H5VL_EFF_INIT_ID = fs_register("eff_init", H5VL_iod_client_encode_eff_init, - H5VL_iod_client_decode_eff_init); - H5VL_EFF_FINALIZE_ID = fs_register("eff_finalize", NULL, - H5VL_iod_client_decode_eff_init); - H5VL_FILE_CREATE_ID = fs_register("file_create", H5VL_iod_client_encode_file_create, - H5VL_iod_client_decode_file_create); - H5VL_FILE_OPEN_ID = fs_register("file_open", H5VL_iod_client_encode_file_open, - H5VL_iod_client_decode_file_open); - H5VL_FILE_FLUSH_ID = fs_register("file_flush", H5VL_iod_client_encode_file_flush, - H5VL_iod_client_decode_file_flush); - H5VL_FILE_CLOSE_ID = fs_register("file_close", H5VL_iod_client_encode_file_close, - H5VL_iod_client_decode_file_close); - H5VL_GROUP_CREATE_ID = fs_register("group_create", H5VL_iod_client_encode_group_create, - H5VL_iod_client_decode_group_create); - H5VL_GROUP_OPEN_ID = fs_register("group_open", H5VL_iod_client_encode_group_open, - H5VL_iod_client_decode_group_open); - H5VL_GROUP_CLOSE_ID = fs_register("group_close", H5VL_iod_client_encode_group_close, - H5VL_iod_client_decode_group_close); - H5VL_DSET_CREATE_ID = fs_register("dset_create", H5VL_iod_client_encode_dset_create, - H5VL_iod_client_decode_dset_create); - H5VL_DSET_OPEN_ID = fs_register("dset_open", H5VL_iod_client_encode_dset_open, - H5VL_iod_client_decode_dset_open); - H5VL_DSET_READ_ID = fs_register("dset_read", H5VL_iod_client_encode_dset_io, - H5VL_iod_client_decode_dset_read); - H5VL_DSET_WRITE_ID = fs_register("dset_write", H5VL_iod_client_encode_dset_io, - H5VL_iod_client_decode_dset_write); - H5VL_DSET_SET_EXTENT_ID = fs_register("dset_set_extent", H5VL_iod_client_encode_dset_set_extent, - H5VL_iod_client_decode_dset_set_extent); - H5VL_DSET_CLOSE_ID = fs_register("dset_close", H5VL_iod_client_encode_dset_close, - H5VL_iod_client_decode_dset_close); - - /* forward the init call to the IONs */ - if(fs_forward(ion_target, H5VL_EFF_INIT_ID, &num_procs, &ret_value, &fs_req) < 0) - HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, NA_UNDEFINED, "failed to ship eff_init"); - - fs_wait(fs_req, FS_MAX_IDLE_TIME, FS_STATUS_IGNORE); - ret_value = ion_target; done: FUNC_LEAVE_NOAPI(ret_value) @@ -462,17 +420,10 @@ herr_t H5VL_iod_client_eff_finalize(na_addr_t ion_target) { herr_t ret_value = SUCCEED; - fs_request_t fs_req; int fs_ret; FUNC_ENTER_NOAPI_NOINIT - /* forward the finalize call to the IONs */ - if(fs_forward(ion_target, H5VL_EFF_FINALIZE_ID, NULL, &ret_value, &fs_req) < 0) - HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "failed to ship eff_finalize"); - - fs_wait(fs_req, FS_MAX_IDLE_TIME, FS_STATUS_IGNORE); - /* Free addr id */ fs_ret = na_addr_free(network_class, ion_target); if (fs_ret != S_SUCCESS) diff --git a/src/H5VLiod_client.h b/src/H5VLiod_client.h index 0753d5f..08e0a10 100644 --- a/src/H5VLiod_client.h +++ b/src/H5VLiod_client.h @@ -102,7 +102,7 @@ H5_DLL herr_t H5VL_iod_local_traverse(H5VL_iod_object_t *obj, H5VL_loc_params_t const char *name, iod_obj_id_t *id, iod_handle_t *oh, char **new_name); -H5_DLL na_addr_t H5VL_iod_client_eff_init(const char *mpi_port_name, MPI_Comm comm, MPI_Info info); +H5_DLL na_addr_t H5VL_iod_client_eff_init(const char *mpi_port_name); H5_DLL herr_t H5VL_iod_client_eff_finalize(na_addr_t ion_target); H5_DLL herr_t H5VL_iod_client_encode_eff_init(fs_proc_t proc, void *_input); diff --git a/src/H5VLiod_common.h b/src/H5VLiod_common.h index 21ab229..4c1c146 100644 --- a/src/H5VLiod_common.h +++ b/src/H5VLiod_common.h @@ -24,23 +24,6 @@ #define NA_UNDEFINED NULL -/* types for different ways that objects are located in an HDF5 container */ -fs_id_t H5VL_EFF_INIT_ID; -fs_id_t H5VL_EFF_FINALIZE_ID; -fs_id_t H5VL_FILE_CREATE_ID; -fs_id_t H5VL_FILE_OPEN_ID; -fs_id_t H5VL_FILE_FLUSH_ID; -fs_id_t H5VL_FILE_CLOSE_ID; -fs_id_t H5VL_GROUP_CREATE_ID; -fs_id_t H5VL_GROUP_OPEN_ID; -fs_id_t H5VL_GROUP_CLOSE_ID; -fs_id_t H5VL_DSET_CREATE_ID; -fs_id_t H5VL_DSET_OPEN_ID; -fs_id_t H5VL_DSET_READ_ID; -fs_id_t H5VL_DSET_WRITE_ID; -fs_id_t H5VL_DSET_SET_EXTENT_ID; -fs_id_t H5VL_DSET_CLOSE_ID; - /* struct that contains the information about the IOD container */ typedef struct H5VL_iod_remote_file_t { iod_handle_t coh; |