diff options
author | John Mainzer <mainzer@hdfgroup.org> | 2008-05-31 10:48:52 (GMT) |
---|---|---|
committer | John Mainzer <mainzer@hdfgroup.org> | 2008-05-31 10:48:52 (GMT) |
commit | bb57e9a9406dec8c3ae44fbcc6fa6e4e8f716c4a (patch) | |
tree | 7f8ae8fb465d8d31e33bee0780ba7649d04cbda2 /src/H5F.c | |
parent | 06af1e93904ef055947df07069e4267489c85c91 (diff) | |
download | hdf5-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.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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 */ |