summaryrefslogtreecommitdiffstats
path: root/src/H5AC.c
diff options
context:
space:
mode:
authorJohn Mainzer <mainzer@hdfgroup.org>2010-10-17 07:52:19 (GMT)
committerJohn Mainzer <mainzer@hdfgroup.org>2010-10-17 07:52:19 (GMT)
commit93b2b7cf0782943085e2e9cb87459ed60d10c97b (patch)
treec279ed3cf00e85662cbc201c51050aebd2e4f479 /src/H5AC.c
parent1c14d3e96d8e4ab0b504ca98fdd3958c9cc451ea (diff)
downloadhdf5-93b2b7cf0782943085e2e9cb87459ed60d10c97b.zip
hdf5-93b2b7cf0782943085e2e9cb87459ed60d10c97b.tar.gz
hdf5-93b2b7cf0782943085e2e9cb87459ed60d10c97b.tar.bz2
[svn-r19621] Port fo fix for the round robin parallel flush bug caused by the failure
of the H5Ocache.c code to update its image of the on disk representation of the object header on a call to clear callback. This wasn't an issue as long as all flushes of the object header were made from the same process, but if an object header is modified, and then flushed on one process and cleared on the rest, the changes were not be reflected in the images of the on disk representation on all processes where the object header was cleared rather than flushed. If one of these processes did the next flush, the changes were lost in the on disk representation. Fixed this by causing all dirty messages and to be written to the copy of the on disk image maintained by the object header code on both flush and clear. Also added associated test code in t_mdset.c. Also checking in some cache debug code developed while chasing this bug. Commit tested and tested (parallel) on phoenix.
Diffstat (limited to 'src/H5AC.c')
-rw-r--r--src/H5AC.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/H5AC.c b/src/H5AC.c
index 4f85303..042eb8e 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -1710,6 +1710,40 @@ done:
/*-------------------------------------------------------------------------
+ * Function: H5AC_dump_cache
+ *
+ * Purpose: Dumps a summary of the contents of the metadata cache
+ * to stdout.
+ *
+ * Return: Non-negative on success/Negative on failure
+ *
+ * Programmer: John Mainzer
+ * Sunday, October 10, 2010
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5AC_dump_cache(const H5F_t *f)
+{
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI(H5AC_dump_cache, FAIL)
+
+ HDassert(f);
+ HDassert(f->shared);
+ HDassert(f->shared->cache);
+
+ if ( H5C_dump_cache(f->shared->cache, H5F_OPEN_NAME(f)) < 0 ) {
+
+ HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "H5C_dump_cache() failed.")
+ }
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* H5AC_dump_cache() */
+
+
+/*-------------------------------------------------------------------------
* Function: H5AC_get_cache_auto_resize_config
*
* Purpose: Wrapper function for H5C_get_cache_auto_resize_config().