summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Henderson <jhenderson@hdfgroup.org>2020-02-11 23:57:19 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2020-03-17 19:25:36 (GMT)
commitfa087c39199fccc1686b122e67b56e06c8fbe313 (patch)
treed6e6a8a1b8650d454256f32efc635d04edd94d43 /src
parent7613f7e1aa89210bb625d59d79a6220c49a1f22c (diff)
downloadhdf5-fa087c39199fccc1686b122e67b56e06c8fbe313.zip
hdf5-fa087c39199fccc1686b122e67b56e06c8fbe313.tar.gz
hdf5-fa087c39199fccc1686b122e67b56e06c8fbe313.tar.bz2
Update Tools library to be better compatible with VOL connectors
Modify h5repack to integrate with VOL connectors Update tools library to accomodate VOL connectors Update logic in h5tools_fopen for VOL connectors Add command-line options to h5repack for specifying in/out VOL connectors Implement h5tools_set_vol_fapl Fix library shutdown issue Integrate ROS3 and HDFS VFDs into new h5tools_get_fapl() scheme Avoid H5Ocopy in h5repack when using different VOL connectors Update h5tools_test_utils.c for ROS3 and HDFS integration
Diffstat (limited to 'src')
-rw-r--r--src/H5.c4
-rw-r--r--src/H5VLint.c2
-rw-r--r--src/H5VLpassthru.c12
3 files changed, 16 insertions, 2 deletions
diff --git a/src/H5.c b/src/H5.c
index 16c12cb..62a1c09 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -355,7 +355,9 @@ H5_term_library(void)
pending += DOWN(Z);
pending += DOWN(FD);
pending += DOWN(VL);
- pending += DOWN(PL);
+ /* Don't shut down the plugin code until all "pluggable" interfaces (Z, FD, PL) are shut down */
+ if(pending == 0)
+ pending += DOWN(PL);
/* Don't shut down the error code until other APIs which use it are shut down */
if(pending == 0)
pending += DOWN(E);
diff --git a/src/H5VLint.c b/src/H5VLint.c
index 6572faa..861629f 100644
--- a/src/H5VLint.c
+++ b/src/H5VLint.c
@@ -273,7 +273,7 @@ H5VL_term_package(void)
else {
if(H5I_nmembers(H5I_VOL) > 0) {
/* Unregister all VOL connectors */
- (void)H5I_clear_type(H5I_VOL, FALSE, FALSE);
+ (void)H5I_clear_type(H5I_VOL, TRUE, FALSE);
n++;
} /* end if */
else {
diff --git a/src/H5VLpassthru.c b/src/H5VLpassthru.c
index 8b3dc62..2cf470e 100644
--- a/src/H5VLpassthru.c
+++ b/src/H5VLpassthru.c
@@ -1591,6 +1591,10 @@ H5VL_pass_through_file_create(const char *name, unsigned flags, hid_t fcpl_id,
/* Get copy of our VOL info from FAPL */
H5Pget_vol_info(fapl_id, (void **)&info);
+ /* Make sure we have info about the underlying VOL to be used */
+ if (!info)
+ return NULL;
+
/* Copy the FAPL */
under_fapl_id = H5Pcopy(fapl_id);
@@ -1645,6 +1649,10 @@ H5VL_pass_through_file_open(const char *name, unsigned flags, hid_t fapl_id,
/* Get copy of our VOL info from FAPL */
H5Pget_vol_info(fapl_id, (void **)&info);
+ /* Make sure we have info about the underlying VOL to be used */
+ if (!info)
+ return NULL;
+
/* Copy the FAPL */
under_fapl_id = H5Pcopy(fapl_id);
@@ -1785,6 +1793,10 @@ H5VL_pass_through_file_specific(void *file, H5VL_file_specific_t specific_type,
/* Get copy of our VOL info from FAPL */
H5Pget_vol_info(fapl_id, (void **)&info);
+ /* Make sure we have info about the underlying VOL to be used */
+ if (!info)
+ return (-1);
+
/* Copy the FAPL */
under_fapl_id = H5Pcopy(fapl_id);