diff options
author | John Mainzer <mainzer@hdfgroup.org> | 2008-05-20 20:43:50 (GMT) |
---|---|---|
committer | John Mainzer <mainzer@hdfgroup.org> | 2008-05-20 20:43:50 (GMT) |
commit | f9857027e327cac5b356da2c6c3ac94e3a773b29 (patch) | |
tree | 8c93fd6a30f34c9b2d63acdcf429e1f9a3bf5378 /src/H5C2private.h | |
parent | 2c84019fcaca9a1cb2a415564d8b88e3dd88479d (diff) | |
download | hdf5-f9857027e327cac5b356da2c6c3ac94e3a773b29.zip hdf5-f9857027e327cac5b356da2c6c3ac94e3a773b29.tar.gz hdf5-f9857027e327cac5b356da2c6c3ac94e3a773b29.tar.bz2 |
[svn-r15049] This is an interrim commit of metadata cache journaling mods.
I now have substantial tests for this code -- enough (I hope) for
Mike M. to get started. However, the code is my no means fully tested.
I don't expect any obvious problems, but there are probably quite a few
relatively subtle bugs remaining. I'll be chasing these in the next
week.
For an example of setting up the cache to journal, see
setup_cache_for_journaling() in test/cache2_journal.c
Warnings:
1) For now, only enable journaling at file creation time -- code to
do this after the file is opened exists, but it hasn't been tested.
2) Right now the journal logging code is very inefficient, so expect
things to run slowly until Mike M. checks in his changes to address
this problem.
3) I have not checked in exemplar journal output files pending a fix
another minor bug in the journal logging code. Until then, the
journal tests create exemplars and then test against them -- a poor
way to find errors.
4) The USE_CORE_DRIVER has been moved to cache2_common.h.
5) When USE_CORE_DRIVER is FALSE, cache2_journal runs VERY slowly on
some system (i.e. 4 hours on Phoenix) -- but it runs fast on Kagiso
(~10 minutes). Don't know why, but would guess that the quantity
of RAM on the system has much to do with it.
Tested serial debug on Phonenix, and parallel debug on Kagiso
Diffstat (limited to 'src/H5C2private.h')
-rw-r--r-- | src/H5C2private.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/H5C2private.h b/src/H5C2private.h index 4f42927..7806337 100644 --- a/src/H5C2private.h +++ b/src/H5C2private.h @@ -572,6 +572,9 @@ typedef herr_t (*H5C2_log_flush_func_t)(H5C2_t * cache_ptr, * If the entry is dirty, the serialize callback must be used * to update this image before it is written to disk * + * image_up_to_date: Boolean flag that is set to TRUE when *image_ptr + * is up to date, and set to false when the entry is dirtied. + * * type: Pointer to the instance of H5C2_class_t containing pointers * to the methods for cache entries of the current type. This * field should be NULL when the instance of H5C2_cache_entry_t @@ -848,6 +851,7 @@ typedef struct H5C2_cache_entry_t haddr_t addr; size_t size; void * image_ptr; + hbool_t image_up_to_date; const H5C2_class_t * type; hbool_t is_dirty; hbool_t dirtied; @@ -1477,6 +1481,7 @@ H5_DLL herr_t H5C2_end_transaction(H5F_t * f, H5_DLL herr_t H5C2_get_journal_config(H5C2_t * cache_ptr, hbool_t * journaling_enabled_ptr, + hbool_t * startup_pending_ptr, char * journal_file_path_ptr, size_t * jbrb_buf_size_ptr, int * jbrb_num_bufs_ptr, @@ -1491,6 +1496,15 @@ H5_DLL herr_t H5C2_journal_pre_flush(H5C2_t * cache_ptr); H5_DLL herr_t H5C2_journal_transaction(H5F_t * f, H5C2_t * cache_ptr); +H5_DLL herr_t H5C2_queue_begin_journaling(H5F_t * f, + hid_t dxpl_id, + H5C2_t * cache_ptr, + char * journal_file_name_ptr, + size_t buf_size, + int num_bufs, + hbool_t use_aio, + hbool_t human_readable); + H5_DLL herr_t H5C2_update_for_new_last_trans_on_disk(H5C2_t * cache_ptr, uint64_t new_last_trans_on_disk); |