diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2008-07-20 02:32:47 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2008-07-20 02:32:47 (GMT) |
commit | d08619bfe1a3cbc593bdaae5a5bd393e1d33f150 (patch) | |
tree | 57ec6ef4e2167462f2a10b5739b0f79f2299584d /tools/h5recover/h5recover.c | |
parent | 90497050b818e914ab814e40811b1c0ff98384ea (diff) | |
download | hdf5-d08619bfe1a3cbc593bdaae5a5bd393e1d33f150.zip hdf5-d08619bfe1a3cbc593bdaae5a5bd393e1d33f150.tar.gz hdf5-d08619bfe1a3cbc593bdaae5a5bd393e1d33f150.tar.bz2 |
[svn-r15388] Description:
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
Diffstat (limited to 'tools/h5recover/h5recover.c')
-rw-r--r-- | tools/h5recover/h5recover.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/tools/h5recover/h5recover.c b/tools/h5recover/h5recover.c index 0dfb421..f47abcd 100644 --- a/tools/h5recover/h5recover.c +++ b/tools/h5recover/h5recover.c @@ -19,6 +19,7 @@ #include "h5tools.h" #include "h5tools_utils.h" #include "H5private.h" +#include "H5Iprivate.h" #include <unistd.h> #include <fcntl.h> #include <string.h> @@ -103,8 +104,9 @@ leave(int ret) * *------------------------------------------------------------------------- */ -int -file_copy(char * file_from, char * file_to){ +static int +file_copy(char * file_from, char * file_to) +{ FILE * from; FILE * to; @@ -191,7 +193,7 @@ main (int argc, const char *argv[]) int last_trans_found = 0; /* bool */ char * tok[11]; /* string tokens */ int i; /* iterator */ - haddr_t address; /* address to write to */ + off_t address; /* address to write to */ haddr_t eoa; /* end of address of file */ uint8_t * body; /* body of journal entry */ size_t size; /* size of journal entry body */ @@ -623,9 +625,9 @@ main (int argc, const char *argv[]) /* do a quick string compare on two items */ if (HDstrcmp((const char *)body, (const char *)compare_buf) != 0) { error_msg(progname, "Entry incorrectly written into HDF5 file. Exiting.\n"); - printf("Address %llx:\n", address); - printf(" -- from journal: %llx\n", body); - printf(" -- from HDF5 file: %llx\n", compare_buf); + printf("Address %llx:\n", (unsigned long_long)address); + printf(" -- from journal: '%s'\n", body); + printf(" -- from HDF5 file: '%s'\n", compare_buf); leave( EXIT_FAILURE ); } /* end if */ @@ -633,7 +635,7 @@ main (int argc, const char *argv[]) for (i=0; i<size; i++) { if (body[i] != compare_buf[i]) { error_msg(progname, "Entry incorrectly written into HDF5 file. Exiting.\n"); - printf("Address %d\n", address + i); + printf("Address %llx\n", (unsigned long_long)(address + i)); printf(" -- from journal: %d\n", body[i]); printf(" -- from HDF5 file: %d\n", compare_buf[i]); leave( EXIT_FAILURE ); @@ -737,5 +739,3 @@ main (int argc, const char *argv[]) } /* end main */ - - |