summaryrefslogtreecommitdiffstats
path: root/src/H5C2private.h
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r15518] A variety of changes:John Mainzer2008-08-221-11/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) Removed references to H5AC2__CURR_JNL_CONFIG_VER from H5Fget_jnl_config() and H5Pget_jnl_config(), and also references to H5AC__CURR_CACHE_CONFIG_VERSION from H5Fget_mdc_config() and H5Pget_mdc_config(). 2) Removed H5Pset_journal() from H5C2journal.c, and modified test code to use H5F/Pget/set_mdj_config() instead. 3) Implemented support for callbacks on metadata journaling status change along with the associated registration / deregistration calls and associated test code. 4) Fixed bug in journaling shutdown exposed by 3 above. Tested and passed on Phoenix (serial), Linew (serial), and Kagiso (parallel). However, while I was testing there were a couple of checkins, forcing an update and second round of testing. On the second round, tested and passed on Phoenix (serial) and Kagiso (parallel), but failed on Linew (serial). As best I can tell, this was caused by Mike M's checkin -- which broke the smoke checks in cache2_journal on Linew but not Phoenix or Kagiso. A typical delta in the architype files follows: linew.hdfgroup.uiuc.edu% diff -ctw cache2_journal_sc00_000.jnl tmp/cache2_journal_sc00_000.jnl *** cache2_journal_sc00_000.jnl Fri Aug 22 08:28:49 2008 --- tmp/cache2_journal_sc00_000.jnl Fri Aug 22 05:08:41 2008 *************** *** 1,5 **** ! 0 ver_num 1 target_file_name cache_journal_test.h5 creation_date Fri Aug 22 human_readable 1 ! E eoa_value 0x0 C comment Begin transaction on transaction 1.0. 1 bgn_trans 1 2 trans_num 1 length 1 base_addr 0x401 body 01 --- 1,5 ---- ! 0 ver_num 1 target_file_name cache_journal_test.h5 creation_date Wed Aug 20 human_readable 1 ! E eoa_value 0x772a9c01 C comment Begin transaction on transaction 1.0. 1 bgn_trans 1 2 trans_num 1 length 1 base_addr 0x401 body 01 As you can see, it looks like garbage is getting into the first eoa write on Linew. I'm checking in anyway, as Quincey needs my changes, and I will not have time to work on this for several days. Mike: Let me know if you are tackling this one -- if not, I'll deal with it.
* [svn-r15514] Purpose:Mike McGreevy2008-08-211-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - EOA logging update Description: - EOA values will now be written to the journal file in their own transaction when the EOA changes. - The EOA will be udpated in the HDF5 file's superblock before the recovery process begins. This should prevent some loss of raw data as the file won't be getting truncated upon file open as it will read the correct EOA value from the superblock. - Removed storing of EOA in journal entry messages since they're in their own transaction. - Updated tests to reflect change of transaction formats. Regenerated smoke test files to account for new entry types, and tweaked transaction number tests to reflect change in size of journal entries. - Large testfiles (in test/testfiles) should now unzip when ./configure is run. - When journal file is supplied but contains no complete transactions, instead of reporting an error, h5recover now informs the user of said nonexistant transactions, and opens/closes the hdf5 file with the journal recovered flag set. - Other various organizational changes to h5recover, included a bit more added to verbose output. Tested: - kagiso, smirom
* [svn-r15452] Reworked journaling control code to remove journaling configurationJohn Mainzer2008-08-081-1/+0
| | | | | | | | | | | | | | | from the H5AC2_cache_config_t structure and the associated H5P/H5Fget/set_mdc_config() API calls, and into the newly created H5AC2_jnl_config_t structure and H5P/H5Fget/set_jnl_config() calls. Updated test code accordingly. Updated the trace file test code for journaling. Also folded in a fix to an assertion bug in H5C2pkh.h Tested serial on Phoenix and Linew, and parallel (with and without the trace file enabled) on kagiso.
* [svn-r15388] Description:Quincey Koziol2008-07-201-13/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Convert object header cache client to use the new metadata journaling cache, which included adding a new client for handling continuation chunks. Added "real" protect calls around modifying chunks in object headers. Switched a few more metadata cache library API routines to drop the file pointer, when it is not needed (pinning/unpinning entries, etc.) Fixed bug in journaling cache handling of 'image_len' callbacks and also changed cache to retry deserializing entries when the entry's size is larger than the speculative size initially tried. Retrying for 'image_len' callbacks has problems with the 'multi' VFD, so the h5dump and FORTRAN 'multi' tests are commented out, until the changes to the 'multi' VFD from the file free space branch are brought back into the trunk. Currently, the 'h5recover' tool has a bug which requires it to be run twice before replaying the journal "sticks". However, this is from an earlier checkin, since the code in the branch already has this behavior... :-( Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.5.4 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
* [svn-r15348] Checking in a collection of bug fixes and added test code -- ↵John Mainzer2008-07-141-14/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | specifically: 1) Fix for failure to detect journaling in progress on HDF5 files which were not closed correctly. Also associated test code. Note that this required addition of code to test for journaling in progress and enable journaling at the end of H5F_flush(). In passing, I was able to get rid of the wacky code that queued journaling setup at cache creation time. 2) Test code for startup and shutdown of journaling on an open file. 3) Updates to start checking journal output against architype files instead of just generating architypes at test time. Note that per Quincey's request, I have checked in gziped versions of the architype files. At some point, we will have to add code to automatically unzip these files, but for the time being you will have to go to test/testfiles and "gunzip *.gz". The journal tests will still pass if you don't, but you will get a warning about missing test files. 4) Fixed bug in journal entry logging code that allowed a comment to appear in the journal file before the journal file header. (Mike M,: Please review my fix to verify that I haven't clobbered anything.) 5) Additional test code. Note that more test code would be a good idea, but this set of bug fixes should be enough to get us through the basic demo -- at least as far as the metadata cache is concerned. Tested serial on Phoenix, and parallel on Kagiso. Also, tested serial on Linew just prior to some last minute minor edits.
* [svn-r15207] Purpose: Adding a quick fix to put the end of address (EOA) ↵Mike McGreevy2008-06-121-0/+1
| | | | | | | | | | | | | | | | | value into journal entries to be used by the recovery tool. This value is only really neded once per transaction, and only when the EOA changes, so rather than putting it into each journal entry, this should be moved into its own transaction type. However, in order to speed testing along, this quick fix has been implemented for the time being. Modified h5recover tool to use eoa value as well as journaling tests accordingly. Tested: kagiso
* [svn-r15185] Description:Quincey Koziol2008-06-091-2/+7
| | | | | | | | | | | | | | | | | | | | | | | Added a pointer to the cache that an entry is contained within to the cache entry structure. This allows us to remove the file pointer from some of the H5AC2 calls, easing the conversion of some of the cache clients (the free space section info and fractal heap direct blocks, and probably others). Removed file pointer from the H5AC2_unpin_entry() call. Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.5.2 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
* [svn-r15171] Description:Quincey Koziol2008-06-061-10/+6
| | | | | | | | | | | | | | | | | | | | | | | | Convert the symbol table node metadata cache client to use the new journaling cache callbacks. Also added a 'H5F_t *' parameter to the 'serialize' callback for the journaling cache, which makes the client's job much easier. Various minor coding cleanups, etc. also. Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.5.3 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
* [svn-r15050] Purpose: Bug FixesMike McGreevy2008-05-201-1/+0
| | | | | | | | | | Description: Fixing a couple of bugs in the journal logging code. Primarily, H5C2_jb__bin2hex was WAY inefficient. I've cleaned it up a bit. cache2_journal now finishes in less than a minute on kagiso. Also, __DATE__ preprocessor macros are no longer used to generate journal file headers. Tested: kagiso
* [svn-r15049] This is an interrim commit of metadata cache journaling mods.John Mainzer2008-05-201-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* [svn-r14863] Checking in code supporting metadata journaling in the serial case.John Mainzer2008-04-251-17/+101
| | | | | | | | | | | | | | | While this code doesn't break any of the existing tests, it HAS NOT been tested beyond that. Also mods needed to integrate the journaling code with Quincey's latest mods, and to adapt existing test code to slight changes caused by the addition of journaling. Finally, fixed an undefined variable bug in the HL code exposed by the journaling mods. Tested serial under Linux (Phoenix) and parallel under Linux (Kagiso).
* [svn-r14797] Description:Quincey Koziol2008-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | | Misc. cleanups found while compiling in other environments. Still failing on linux machines with a memory corruption error and not finished building in parallel yet either... Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.4.10 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
* [svn-r14796] Description:Quincey Koziol2008-04-051-32/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch v1 B-tree nodes from using previous cache to use the new journaling cache code. This is a major switch for the cache callbacks. Switched the metadata caching code from having a pointer to the file it's in to receiving a pointer to the file, when needed. This was necessary in order to avoid crashing when two files IDs were open on the same underlying file and one of those files was closed with cache entries using the file pointers. Also took out the check in the caching code for reading off the end of the file, which didn't play nicely with the multi-file VFD. Switching the cache from having a pointer internally to requiring one externally meant tweaking almost all the test code. :-/ Added correct exit codes to cache2 tests that didn't have them already, so the 'make check' will stop when they fail. Use the path to the h5diff in this build in the tools/h5recover testing script, since we can't guarantee a user has HDF5 already installed. Assorted minor tweaks to get everything to compile more cleanly and pass all the tests (on my Mac :-). Tested on: Mac OS X (10.5.2) w/C++ (more testing coming up shortly, I just didn't have my "rsync testbed" set up for this branch when I started making changes to the code)
* [svn-r14761] Several odds and sods:John Mainzer2008-03-201-1/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) Code to read and write the metadata journaling configuration block and associated test code. (Quincey: Just recalled that I have not converted the memory type of the metadata journaling configuration block to H5FD_MEM_SUPER per our email conversation. It will be in the next checkin.) 2) Dummy begin/end transaction calls on the off chance that Quincey gets to working on this before I check in the real ones. 3) Updates to cache2 in test to reduce the size of the test according to the value of the HDF5TestExpress environment variable. Run times on Phoenix using the core file driver are as follows: HDF5TestExpress = 0 20:20 HDF5TestExpress = 1 4:56 HDF5TestExpress = 2 3:18 HDF5TestExpress = 3 0:25 With HDF5TestExpress = 3, I skip the smoke checks entirely. With HDF5TestExpress = 2, I set the number of itterations as low as it can go without a major re-write. (Albert: I hope running with HDF5TestExpress = 2 will work for you. If it doesn't, we will just have to run with HDF5TestExpress = 3 on RedStorm, and skip the smoke checks for now. Tested serial on Phonenix and parallel on kagiso.
* [svn-r14736] Purpose: Updating journal entry logging code, and adding ↵Mike McGreevy2008-03-131-2/+9
| | | | | | | | | | | | | | | | | | | | tests. Description: Journal entry logging code has been upgraded. The code now accurately tracks transactions that have made it to disk, and converts data from binary to hex for entry into the journal file. Various other minor code modifications have been made based on suggestions by John Mainzer. More tests have been added to verify the functionality of the logging code. Specifically, tests have been written to verify functionality of the ring buffer, to check validity of journal messages produced, and to verify that transaction tracking is functioning appropriately. Tested: kagiso, smirom, linew, duty
* [svn-r14642] Folded initial version of Mike M's journal entry logging code into John Mainzer2008-02-251-0/+51
| | | | | | | | the journaling branch. Added several new errors, and made many edits to Mike's code (don't worry Mike -- changes I made were on items I neglected to discuss with you). Serial test on Phoenix only.
* [svn-r14594] Ported flash cache size increase code into the journaling branch --John Mainzer2008-02-181-21/+83
| | | | | | | | | | | | | | | | | note that both the H5C and H5C2 code have been updated. Also checked in code to track journaling status in the super block. Note that this code has not been tested -- but as best I can tell, it does not break the existing regression tests. Tested serial (debug and production) on Phoenix. Also tested parallel on kagiso. Note that regression test fails on kagiso (but not on phoenix) if the cache2 serial tests are configured to use the core file driver. Thus this code is check in with the core file driver optimization of the cache2 tests disabled. To turn it on, set the USE_CORE_DRIVER #define to TRUE.
* [svn-r14282] Continuation of initial checkin of changes to metadata journaling John Mainzer2007-11-211-0/+1350
branch -- this commit needed at I forgot to svn add the new files created in support of metadata journaling. Again, this version may not compile.