diff options
author | Vailin Choi <vchoi@hdfgroup.org> | 2013-10-08 06:11:44 (GMT) |
---|---|---|
committer | Vailin Choi <vchoi@hdfgroup.org> | 2013-10-08 06:11:44 (GMT) |
commit | 39fc26566e18ac81c43986ed2013676e2918ded2 (patch) | |
tree | d6241c1c75a5769ad876258b182e84ff02d33e41 /src/H5Fprivate.h | |
parent | 43fc25841e2b4b0ad163fe967e6e0750ad3c6bba (diff) | |
download | hdf5-39fc26566e18ac81c43986ed2013676e2918ded2.zip hdf5-39fc26566e18ac81c43986ed2013676e2918ded2.tar.gz hdf5-39fc26566e18ac81c43986ed2013676e2918ded2.tar.bz2 |
[svn-r24263] Changes to do re-reads for metadata with checksums when a file is opened with SWMR access.
There are debugging printfs which will be removed when coding is finalized.
Also some bug fixes:
1) accum.c--clean up some warning messages and use new_argv/new_envp for the call to execve.
2) hl/tools/h5watch--clean up some warning messages and a bug fix for h5watch.c.
This checkin is awaiting code review feedback.
Diffstat (limited to 'src/H5Fprivate.h')
-rw-r--r-- | src/H5Fprivate.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h index ee478c2..6d20749 100644 --- a/src/H5Fprivate.h +++ b/src/H5Fprivate.h @@ -292,6 +292,7 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t; #define H5F_FILE_ID(F) ((F)->file_id) #define H5F_PARENT(F) ((F)->parent) #define H5F_NMOUNTS(F) ((F)->nmounts) +#define H5F_GET_READ_ATTEMPTS(F) ((F)->read_attempts) #define H5F_DRIVER_ID(F) ((F)->shared->lf->driver_id) #define H5F_GET_FILENO(F,FILENUM) ((FILENUM) = (F)->shared->lf->fileno) #define H5F_HAS_FEATURE(F,FL) ((F)->shared->lf->feature_flags & (FL)) @@ -334,6 +335,7 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t; #define H5F_FILE_ID(F) (H5F_get_file_id(F)) #define H5F_PARENT(F) (H5F_get_parent(F)) #define H5F_NMOUNTS(F) (H5F_get_nmounts(F)) +#define H5F_GET_READ_ATTEMPTS(F) (H5F_get_read_attempts(F)) #define H5F_DRIVER_ID(F) (H5F_get_driver_id(F)) #define H5F_GET_FILENO(F,FILENUM) (H5F_get_fileno((F), &(FILENUM))) #define H5F_HAS_FEATURE(F,FL) (H5F_has_feature(F,FL)) @@ -460,6 +462,7 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t; #define H5F_ACS_MULTI_TYPE_NAME "multi_type" /* Data type in multi file driver */ #define H5F_ACS_LATEST_FORMAT_NAME "latest_format" /* 'Use latest format version' flag */ #define H5F_ACS_WANT_POSIX_FD_NAME "want_posix_fd" /* Internal: query the file descriptor from the core VFD, instead of the memory address */ +#define H5F_ACS_READ_ATTEMPTS_NAME "read_attempts" /* # of read attempts */ #define H5F_ACS_EFC_SIZE_NAME "efc_size" /* Size of external file cache */ #define H5F_ACS_FILE_IMAGE_INFO_NAME "file_image_info" /* struct containing initial file image and callback info */ @@ -502,6 +505,11 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t; /* (all on-disk signatures should be this length) */ #define H5_SIZEOF_MAGIC 4 +#define H5_SIZEOF_CHKSUM 4 + +#define H5F_READ_ATTEMPTS 1 /* Default # of read attempts for non-swmr access */ +#define H5F_SWMR_READ_ATTEMPTS 100 /* Default # of read attempts for swmr access */ + /* v1 B-tree node signature */ #define H5B_MAGIC "TREE" @@ -571,6 +579,7 @@ H5_DLL unsigned H5F_decr_nopen_objs(H5F_t *f); H5_DLL hid_t H5F_get_file_id(const H5F_t *f); H5_DLL H5F_t *H5F_get_parent(const H5F_t *f); H5_DLL unsigned H5F_get_nmounts(const H5F_t *f); +H5_DLL unsigned H5F_get_read_attempts(const H5F_t *f); H5_DLL hid_t H5F_get_access_plist(H5F_t *f, hbool_t app_ref); H5_DLL hid_t H5F_get_id(H5F_t *file, hbool_t app_ref); H5_DLL herr_t H5F_get_obj_count(const H5F_t *f, unsigned types, hbool_t app_ref, size_t *obj_id_count_ptr); @@ -629,6 +638,11 @@ H5_DLL herr_t H5F_block_write(const H5F_t *f, H5FD_mem_t type, haddr_t addr, H5_DLL herr_t H5F_flush_tagged_metadata(H5F_t * f, haddr_t tag, hid_t dxpl_id); H5_DLL herr_t H5F_evict_tagged_metadata(H5F_t * f, haddr_t tag, hid_t dxpl_id); +/* Function that read and verify a piece of metadata with checksum */ +H5_DLL herr_t H5F_read_check_metadata(const H5F_t *f, H5FD_mem_t type, haddr_t addr, size_t read_size, size_t chk_size, + hid_t dxpl_id, uint8_t *buf/*out*/, uint32_t *chksum/*out*/); +H5_DLL herr_t H5F_get_checksums(uint8_t *buf, size_t chk_size, uint32_t *s_chksum, uint32_t *c_chksum); + /* Address-related functions */ H5_DLL void H5F_addr_encode(const H5F_t *f, uint8_t **pp, haddr_t addr); H5_DLL void H5F_addr_encode_len(size_t addr_len, uint8_t **pp, haddr_t addr); |