summaryrefslogtreecommitdiffstats
path: root/src/H5C2journal.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r15221] Description:Quincey Koziol2008-06-161-1/+1
| | | | | | | | | | | | | | | | | | Bring changes from trunk from the time the branch was created (r14280) up to the 1.8.0 release (r14525) back into the metadata journaling branch. 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 Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
* [svn-r15207] Purpose: Adding a quick fix to put the end of address (EOA) ↵Mike McGreevy2008-06-121-4/+12
| | | | | | | | | | | | | | | | | 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-r15182] Purpose: Bug FixMike McGreevy2008-06-091-2/+13
| | | | | | | | | | | | | Description: Changed H5C2_jb__journal_entry function to make a copy of the incoming journal entry before doing anything with it. I was seeing errors in the journals produced by using the pointer passed to me, so copying the data beforehand looks to solve the problem. Also made a quick change to h5recover.c to use generated fapl when opening the recovered HDF5 file. (was previously using H5P_DEFAULT). Tested: kagiso
* [svn-r15176] Trace code added by bin/reconfigure.Albert Cheng2008-06-091-0/+1
| | | | Tested: kagiso.
* [svn-r15171] Description:Quincey Koziol2008-06-061-49/+7
| | | | | | | | | | | | | | | | | | | | | | | | 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-r15114] Bug fix.Albert Cheng2008-06-011-4/+4
| | | | | | | | Rename H5Pset_fapl_journal as H5Pset_journal. Use the public constant of H5AC2__CURR_CACHE_CONFIG_VERSION. Tested: h5committested. (tools/h5recover/testh5reover.sh had failures but that was because ../h5diff/h5diff's failure.)
* [svn-r15113] This checkin contains:John Mainzer2008-05-311-37/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* [svn-r15106] purpose:Albert Cheng2008-05-301-0/+59
| | | | | | | | | | | | new feature. Description: Added H5Pset_fapl_journal() to provide an API to turn journal on. This is just a preliminary implementation. More features will be added later when they are available. Tested: h5committest.
* [svn-r15050] Purpose: Bug FixesMike McGreevy2008-05-201-24/+25
| | | | | | | | | | 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-99/+471
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-56/+969
| | | | | | | | | | | | | | | 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-r14796] Description:Quincey Koziol2008-04-051-58/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+732
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-165/+327
| | | | | | | | | | | | | | | | | | | | 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-r14711] Added test code and associated bug fixes for the metadata ↵John Mainzer2008-03-071-480/+0
| | | | | | | | | journaling superblock extension message. Created the file src/H5Omdj_msg.c and moved journaling superblock extension message to it. Tested serial on Phoenix, and parallel on Kagiso.
* [svn-r14682] purpose:Albert Cheng2008-02-261-2/+2
| | | | | | | | | | | | | | | | | | bug fix. Description: Functions H5O_mdj_conf_decode and H5O_mdj_conf_debug had the wrong function names in its FUNC_ENTER_NOAPI_NOINIT() line. This caused linew (SunOS10) to fail linking as it was looking for those mistyped function names for its own module. Solution: Fixed the typo name. Tested: It took way too long to run make check because cache2 ran for an hour in linew and still not done. At least, all three machines could build the binary now.
* [svn-r14642] Folded initial version of Mike M's journal entry logging code into John Mainzer2008-02-251-1/+1179
| | | | | | | | 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-0/+519
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.