diff options
author | John Mainzer <mainzer@hdfgroup.org> | 2008-11-27 04:48:40 (GMT) |
---|---|---|
committer | John Mainzer <mainzer@hdfgroup.org> | 2008-11-27 04:48:40 (GMT) |
commit | 53fcc77e7d077f1a9ca17d63787634baa1d2893c (patch) | |
tree | 8712d00af172c5aa7c3e65e732ef57eec1c5b40f /src/H5FDsec2.c | |
parent | 230a3eff621be4d8954feceb4565a45249a465f0 (diff) | |
download | hdf5-53fcc77e7d077f1a9ca17d63787634baa1d2893c.zip hdf5-53fcc77e7d077f1a9ca17d63787634baa1d2893c.tar.gz hdf5-53fcc77e7d077f1a9ca17d63787634baa1d2893c.tar.bz2 |
[svn-r16136] Several changes:
Modified H5C2_journal_post_flush() write the super block and flush
the file before truncating the journal. Failure to do this opened
a window in which the application could crash leaving the HDF5 file
in a state that was un-recoverable.
The hope is that this will fix the file recovery bug observed on
RSQ -- but I have not been able to test there. However, I was able
to generate a similar bug on Linew, and this fix seems to deal with
the Linew bug.
Added a third test to the h5recovery tests. This is really
a test for the library, but it was easier to use existing test
code there to construct the new test.
The new test runs the same application repeatedly, but setting a
timer to crash the application at progressively later times. The object
is to search for windows in which the application leaves the HDF5 file
in an un-recoverable state.
Also, updated H5recover.c to use HDstrtoll() instead of HDstrtod()
to read some addresses and such from the journal file.
Tested serial (debug) on Phoenix and Linew, and parallel (debug)
on Jam.
Diffstat (limited to 'src/H5FDsec2.c')
-rw-r--r-- | src/H5FDsec2.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/H5FDsec2.c b/src/H5FDsec2.c index b01ba3f..0a3879b 100644 --- a/src/H5FDsec2.c +++ b/src/H5FDsec2.c @@ -903,6 +903,9 @@ H5FD_sec2_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing) /* Reset last file I/O information */ file->pos = HADDR_UNDEF; file->op = OP_UNKNOWN; +#if 1 /* JRM */ + fsync(file->fd); +#endif /* JRM */ } done: |