summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2013-03-20 02:39:19 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2013-03-20 02:39:19 (GMT)
commit6326d8f3bbaca69deb097aba41832ba3621ddfa7 (patch)
tree018a155642b067ddab0e718b5a8bb85f4956572d
parentf1da88e11384a68af8c17f4a01342659f621ac8e (diff)
downloadhdf5-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.c68
-rw-r--r--src/H5VLiod_client.c51
-rw-r--r--src/H5VLiod_client.h2
-rw-r--r--src/H5VLiod_common.h17
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;