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 /testpar/testphdf5.c | |
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 'testpar/testphdf5.c')
-rw-r--r-- | testpar/testphdf5.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c index 0864b11..44415e4 100644 --- a/testpar/testphdf5.c +++ b/testpar/testphdf5.c @@ -317,6 +317,7 @@ int main(int argc, char **argv) H5Ptest_param_t ndsets_params, ngroups_params; H5Ptest_param_t collngroups_params; H5Ptest_param_t io_mode_confusion_params; + H5Ptest_param_t rr_obj_flush_confusion_params; /* Un-buffer the stdout and stderr */ setbuf(stderr, NULL); @@ -472,6 +473,12 @@ int main(int argc, char **argv) "I/O mode confusion test -- hangs quickly on failure", &io_mode_confusion_params); + rr_obj_flush_confusion_params.name = PARATESTFILE; + rr_obj_flush_confusion_params.count = 0; /* value not used */ + AddTest("rrobjflushconf", rr_obj_hdr_flush_confusion, NULL, + "round robin object header flush confusion test", + &rr_obj_flush_confusion_params); + AddTest("tldsc", lower_dim_size_comp_test, NULL, "test lower dim size comp in span tree to mpi derived type", |