summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLarry Knox <lrknox@hdfgroup.org>2017-04-21 21:05:44 (GMT)
committerLarry Knox <lrknox@hdfgroup.org>2017-04-21 21:05:44 (GMT)
commitc0a8eb362cc22cbfabe44456d83faeb47f946a65 (patch)
treef4e31f9295efab164785e0e112dcadf850300c01
parent7037520281fa5cde30a2377f94f7772e96f4f0f6 (diff)
parent15f85df5405eb2caf6ee4d3bc5f558344d4bb16a (diff)
downloadhdf5-c0a8eb362cc22cbfabe44456d83faeb47f946a65.zip
hdf5-c0a8eb362cc22cbfabe44456d83faeb47f946a65.tar.gz
hdf5-c0a8eb362cc22cbfabe44456d83faeb47f946a65.tar.bz2
Merge pull request #450 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:hdf5_1_10 to hdf5_1_10
* commit '15f85df5405eb2caf6ee4d3bc5f558344d4bb16a': bin/trace updates in H5PL.c The cache_image test shows a skipped message about EoC in parallel. Added code to disable the evict-on-close feature in the parallel library.
-rw-r--r--src/H5PL.c4
-rw-r--r--src/H5Pfapl.c20
-rw-r--r--test/cache_image.c10
-rw-r--r--test/evict_on_close.c99
4 files changed, 130 insertions, 3 deletions
diff --git a/src/H5PL.c b/src/H5PL.c
index c8cf98f..bf69d3d 100644
--- a/src/H5PL.c
+++ b/src/H5PL.c
@@ -421,6 +421,7 @@ H5PLappend(const char *plugin_path)
char *dl_path = NULL;
FUNC_ENTER_API(FAIL)
+ H5TRACE1("e", "*s", plugin_path);
if(H5PL_num_paths_g == H5PL_MAX_PATH_NUM)
HGOTO_ERROR(H5E_PLUGIN, H5E_NOSPACE, FAIL, "too many directories in path for table")
if(NULL == plugin_path)
@@ -455,6 +456,7 @@ H5PLprepend(const char *plugin_path)
unsigned int plindex;
FUNC_ENTER_API(FAIL)
+ H5TRACE1("e", "*s", plugin_path);
if(H5PL_num_paths_g == H5PL_MAX_PATH_NUM)
HGOTO_ERROR(H5E_PLUGIN, H5E_NOSPACE, FAIL, "too many directories in path for table")
if(NULL == plugin_path)
@@ -490,6 +492,7 @@ H5PLreplace(const char *plugin_path, unsigned int index)
char *dl_path = NULL;
FUNC_ENTER_API(FAIL)
+ H5TRACE2("e", "*sIu", plugin_path, index);
if(NULL == plugin_path)
HGOTO_ERROR(H5E_PLUGIN, H5E_CANTALLOC, FAIL, "no path provided")
if(index >= H5PL_MAX_PATH_NUM)
@@ -525,6 +528,7 @@ H5PLinsert(const char *plugin_path, unsigned int index)
unsigned int plindex;
FUNC_ENTER_API(FAIL)
+ H5TRACE2("e", "*sIu", plugin_path, index);
if(H5PL_num_paths_g == H5PL_MAX_PATH_NUM)
HGOTO_ERROR(H5E_PLUGIN, H5E_NOSPACE, FAIL, "too many directories in path for table")
if(NULL == plugin_path)
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index 0dab539..0ab0433 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -4379,7 +4379,19 @@ H5P_facc_mdc_log_location_close(const char H5_ATTR_UNUSED *name, size_t H5_ATTR_
*-------------------------------------------------------------------------
*/
herr_t
-H5Pset_evict_on_close(hid_t fapl_id, hbool_t evict_on_close)
+H5Pset_evict_on_close(
+#if defined(H5_HAVE_PARALLEL) && !defined(H5_DEBUG_BUILD)
+ hid_t H5_ATTR_UNUSED fapl_id,
+#else
+ hid_t fapl_id,
+#endif /* H5_HAVE_PARALLEL and !H5_DEBUG_BUILD */
+
+#ifdef H5_HAVE_PARALLEL
+ hbool_t H5_ATTR_UNUSED evict_on_close
+#else
+ hbool_t evict_on_close
+#endif /* H5_HAVE_PARALLEL */
+)
{
H5P_genplist_t *plist; /* property list pointer */
herr_t ret_value = SUCCEED; /* return value */
@@ -4395,9 +4407,13 @@ H5Pset_evict_on_close(hid_t fapl_id, hbool_t evict_on_close)
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
- /* Set values */
+#ifndef H5_HAVE_PARALLEL
+ /* Set value */
if(H5P_set(plist, H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME, &evict_on_close) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set evict on close property")
+#else
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "evict on close is currently not supported in parallel HDF5")
+#endif /* H5_HAVE_PARALLEL */
done:
FUNC_LEAVE_API(ret_value)
diff --git a/test/cache_image.c b/test/cache_image.c
index c3adf5c..58b0b8f 100644
--- a/test/cache_image.c
+++ b/test/cache_image.c
@@ -7712,6 +7712,7 @@ get_free_sections_test(void)
static unsigned
evict_on_close_test(void)
{
+#ifndef H5_HAVE_PARALLEL
const char * fcn_name = "evict_on_close_test()";
char filename[512];
hbool_t show_progress = FALSE;
@@ -7720,9 +7721,16 @@ evict_on_close_test(void)
H5F_t *file_ptr = NULL;
H5C_t *cache_ptr = NULL;
int cp = 0;
+#endif /* H5_HAVE_PARALLEL */
TESTING("Cache image / evict on close interaction");
+#ifdef H5_HAVE_PARALLEL
+ SKIPPED();
+ HDputs(" EoC not supported in the parallel library.");
+ return 0;
+#else
+
pass = TRUE;
if ( show_progress )
@@ -8011,6 +8019,7 @@ evict_on_close_test(void)
FUNC, failure_mssg);
return !pass;
+#endif /* H5_HAVE_PARALLEL */
} /* evict_on_close_test() */
@@ -8070,4 +8079,3 @@ main(void)
} /* main() */
-
diff --git a/test/evict_on_close.c b/test/evict_on_close.c
index b4ef246..6536837 100644
--- a/test/evict_on_close.c
+++ b/test/evict_on_close.c
@@ -37,6 +37,12 @@
#include "H5Gpkg.h"
#include "H5Ipkg.h"
+/* Evict on close is not supported under parallel at this time.
+ * In the meantime, we just run a simple check that EoC can't be
+ * enabled in parallel HDF5.
+ */
+#ifndef H5_HAVE_PARALLEL
+
/* Uncomment to manually inspect cache states */
/* (Requires debug build of the library) */
/* #define EOC_MANUAL_INSPECTION */
@@ -990,3 +996,96 @@ error:
} /* end main() */
+#else
+
+
+/*-------------------------------------------------------------------------
+ * Function: check_evict_on_close_parallel_fail()
+ *
+ * Purpose: Verify that the H5Pset_evict_on_close() call fails in
+ * parallel HDF5.
+ *
+ * Return: SUCCEED/FAIL
+ *
+ * Programmer: Dana Robinson
+ * Spring 2017
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+check_evict_on_close_parallel_fail(void)
+{
+ hid_t fapl_id = -1;
+ hbool_t evict_on_close;
+ herr_t status;
+
+ TESTING("evict on close fails in parallel");
+
+ /* Create a fapl */
+ if((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0)
+ TEST_ERROR;
+
+ /* Set the evict on close property (should fail)*/
+ evict_on_close = TRUE;
+ H5E_BEGIN_TRY {
+ status = H5Pset_evict_on_close(fapl_id, evict_on_close);
+ } H5E_END_TRY;
+ if(status >= 0)
+ FAIL_PUTS_ERROR("H5Pset_evict_on_close() did not fail in parallel HDF5.");
+
+ /* close fapl */
+ if(H5Pclose(fapl_id) < 0)
+ TEST_ERROR;
+
+ PASSED();
+ return SUCCEED;
+
+error:
+ H5_FAILED();
+ return FAIL;
+
+} /* check_evict_on_close_parallel_fail() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: main (parallel version)
+ *
+ * Return: EXIT_FAILURE/EXIT_SUCCESS
+ *
+ * Programmer: Dana Robinson
+ * Spring 2016
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ unsigned nerrors = 0; /* number of test errors */
+
+ HDprintf("Testing evict-on-close cache behavior\n");
+
+ /* Initialize */
+ h5_reset();
+
+ /* Test that EoC fails in parallel HDF5 */
+ nerrors += check_evict_on_close_parallel_fail() < 0 ? 1 : 0;
+
+ if(nerrors)
+ goto error;
+
+ HDprintf("All evict-on-close tests passed.\n");
+ HDprintf("Note that EoC is not supported under parallel so most tests are skipped.\n");
+
+ return EXIT_SUCCESS;
+
+error:
+
+ HDprintf("***** %u evict-on-close test%s FAILED! *****\n",
+ nerrors, nerrors > 1 ? "S" : "");
+
+ return EXIT_FAILURE;
+
+} /* main() - parallel */
+
+#endif /* H5_HAVE_PARALLEL */
+