summaryrefslogtreecommitdiffstats
path: root/src/H5F.c
diff options
context:
space:
mode:
authorJohn Mainzer <mainzer@hdfgroup.org>2008-05-31 10:48:52 (GMT)
committerJohn Mainzer <mainzer@hdfgroup.org>2008-05-31 10:48:52 (GMT)
commitbb57e9a9406dec8c3ae44fbcc6fa6e4e8f716c4a (patch)
tree7f8ae8fb465d8d31e33bee0780ba7649d04cbda2 /src/H5F.c
parent06af1e93904ef055947df07069e4267489c85c91 (diff)
downloadhdf5-bb57e9a9406dec8c3ae44fbcc6fa6e4e8f716c4a.zip
hdf5-bb57e9a9406dec8c3ae44fbcc6fa6e4e8f716c4a.tar.gz
hdf5-bb57e9a9406dec8c3ae44fbcc6fa6e4e8f716c4a.tar.bz2
[svn-r15113] This checkin contains:
* Updates to test opening of a file created with journaling, along with associated debugging modifications. (Mike M. To get journal deletion to work correctly, I had to modify H5C2_jb__init() to allocate a buffer for the journal file name and copy it into the buffer. Similarly, I had to modify to H5C2_jb__takedown() to free the buffer. The fix was hurried, and should be reviewed. Also, a similar fix is probably in order for the HDF5 file name.) * Fix for the bug Albert reported on Linew. * An attempt to apply the changes Quincey requested to the loc_id parameters to the FUNC_ENTER_API_META macro calls in: H5Gmove2(), (src_loc_id --> dst_loc_id) H5Lcopy(), (src_loc_id --> dst_loc_id) H5Lmove(), (src_loc_id --> dst_loc_id) H5Glink2(), (cur_loc_id --> new_loc_id) H5Lmove() (cur_loc_id --> new_loc_id) However, with the exception of the requested change to H5Gmove2(), all these chages caused us to fail the regression tests. Thus only the H5Gmove2() change is made. Several caviats and warnings: * If you build and test this checkin, it will fail on the on the test for trecover. This showed up after I updated my project, so initially I thought I had broken something. However, after examining the problem for a while, I thought to checkout the version prior to this checkin, and test to see if the problem appeared. It did (under serial on phoenix, and parallel on Kagiso), so I am going ahead with this checkin regardless under the assumption that it is orthoginal to my changes. * Low level testing for the journaling feature of the metadata cache is not complete. The coverage of the existing tests is good enough that I don't expect anything major, but don't be surprised if you run into problems around the edges. In particular, enabling and disabling journaling while the file is open has not been tested at all. Suggest we stay away from this until it gets at least a once over. * The metadata journaling smoke check tests in cache2_journal.c are still configured to generate the architype files used to check journal output. This can be turned off any time, but given Quincey's constaints on test file size, I have to write code to skip the tests if the architype files are missing, and then put compressed versions of the architype files in svn before I do so. Unfortunately, there is no time before I leave. * I left a good bit of debugging code in both the journaling code proper, and the associated test code. It should all be #if 0'ed out at present, but if you run into it, you know what is going on. Needless to say, I'll delete it when I finish testing. * I was not able to reproduce the bug Albert observed on RedStorm locally, so I don't have a fix for it. That said, I touched some things that could have caused it, so it is possible that I fixed it by accident. Testing: Before I updated, I was able to build and test serial on Phoenix and Linew, and parallel on Kagiso without errors in the regression tests. As discussed above, after the update, I failed in the test for trecover in a serial build and test on Phoenix, and parallel build and test on Kagiso. Linew is slow, so I didn't attempt a test there. Since the same failures appear in the verion prior to this checkin, I am going ahead with the checkin regardless on the assumption that the problem is orthoginal to my changes.
Diffstat (limited to 'src/H5F.c')
-rw-r--r--src/H5F.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/H5F.c b/src/H5F.c
index e5b191d..21991cb 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -71,7 +71,6 @@ static herr_t H5F_get_vfd_handle(const H5F_t *file, hid_t fapl, void** file_hand
static H5F_t *H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id,
H5FD_t *lf);
static herr_t H5F_dest(H5F_t *f, hid_t dxpl_id);
-static herr_t H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, unsigned flags);
static herr_t H5F_close(H5F_t *f);
/* Declare a free list to manage the H5F_t struct */
@@ -1012,6 +1011,13 @@ H5F_dest(H5F_t *f, hid_t dxpl_id)
H5AC_stats(f);
#endif /* H5AC_DUMP_STATS_ON_CLOSE */
+ /* shut down metadata journaling if it is enabled. */
+ if ( H5C2_end_journaling(f, dxpl_id, f->shared->cache2) != SUCCEED ) {
+ /* Push error, but keep going*/
+ HDONE_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, \
+ "unable to shutdown metadata journaling")
+ }
+
/* Flush and invalidate all caches */
if(H5F_flush(f, dxpl_id, H5F_SCOPE_LOCAL, H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING) < 0)
/* Push error, but keep going*/
@@ -1683,7 +1689,7 @@ done:
*
*-------------------------------------------------------------------------
*/
-static herr_t
+herr_t
H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, unsigned flags)
{
unsigned nerrors = 0; /* Errors from nested flushes */