diff options
author | John Mainzer <mainzer@hdfgroup.org> | 2010-10-17 15:13:24 (GMT) |
---|---|---|
committer | John Mainzer <mainzer@hdfgroup.org> | 2010-10-17 15:13:24 (GMT) |
commit | f527b1a512ea4b571e22e9efee054d4781afcbc0 (patch) | |
tree | 7d68e54480e6012bd4df777baf650a544e32cead /src/H5Cprivate.h | |
parent | c002883bcc008a4274433ed8e8275669c09dcfe6 (diff) | |
download | hdf5-f527b1a512ea4b571e22e9efee054d4781afcbc0.zip hdf5-f527b1a512ea4b571e22e9efee054d4781afcbc0.tar.gz hdf5-f527b1a512ea4b571e22e9efee054d4781afcbc0.tar.bz2 |
[svn-r19622] Port of 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 the 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/H5Cprivate.h')
-rw-r--r-- | src/H5Cprivate.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/H5Cprivate.h b/src/H5Cprivate.h index 9f10409..0c7631a 100644 --- a/src/H5Cprivate.h +++ b/src/H5Cprivate.h @@ -1180,6 +1180,9 @@ H5_DLL herr_t H5C_stats(H5C_t * cache_ptr, H5_DLL void H5C_stats__reset(H5C_t * cache_ptr); +H5_DLL herr_t H5C_dump_cache(H5C_t * cache_ptr, + const char * cache_name); + H5_DLL herr_t H5C_unpin_entry(void *thing); H5_DLL herr_t H5C_destroy_flush_dependency(void *parent_thing, void *child_thing); |