summaryrefslogtreecommitdiffstats
path: root/src/H5HFcache.c
diff options
context:
space:
mode:
authorVailin Choi <vchoi@hdfgroup.org>2015-06-24 06:05:11 (GMT)
committerVailin Choi <vchoi@hdfgroup.org>2015-06-24 06:05:11 (GMT)
commite5581d39a5bb4bd4ec95fcd7f9058104bbefbc3d (patch)
tree609aded9e75033f33d4aaf779e72808d1b47ae39 /src/H5HFcache.c
parentd043c9c2655b1fbcb1dceb5ee0f29a4c4c47bf4e (diff)
downloadhdf5-e5581d39a5bb4bd4ec95fcd7f9058104bbefbc3d.zip
hdf5-e5581d39a5bb4bd4ec95fcd7f9058104bbefbc3d.tar.gz
hdf5-e5581d39a5bb4bd4ec95fcd7f9058104bbefbc3d.tar.bz2
[svn-r27273] Bring revision #24331 from revise_chksum_retry branch to revise_chunks. h5committested.
Diffstat (limited to 'src/H5HFcache.c')
-rw-r--r--src/H5HFcache.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/H5HFcache.c b/src/H5HFcache.c
index eb770d9..4066b7b 100644
--- a/src/H5HFcache.c
+++ b/src/H5HFcache.c
@@ -426,7 +426,8 @@ H5HF_cache_hdr_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
uint32_t stored_chksum; /* Stored metadata checksum value */
uint32_t computed_chksum; /* Computed metadata checksum value */
size_t tries, max_tries; /* The # of read attempts */
- size_t fixed_tries;
+ size_t fixed_tries; /* The # of read attempts for the minimum portion */
+ size_t retries; /* The # of retries */
H5HF_hdr_t *ret_value; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -506,8 +507,14 @@ H5HF_cache_hdr_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
if(tries == 0)
HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "incorrect metadata checksum after all tries (%u) for fractal heap header", max_tries)
- else if((max_tries - tries + 1) > 1)
- HDfprintf(stderr, "%s: SUCCESS after %u attempts\n", FUNC, max_tries - tries + 1);
+
+ /* Calculate and track the # of retry */
+ retries = max_tries - tries;
+ if(retries) { /* Does not track 0 retry */
+ HDfprintf(stderr, "%s: SUCCESS after %u retries\n", FUNC, retries);
+ if(H5F_track_metadata_read_retries(f, H5AC_FHEAP_HDR_ID, retries) < 0)
+ HGOTO_ERROR(H5E_OHDR, H5E_BADVALUE, NULL, "cannot track read tries = %u ", retries)
+ }
p = buf;
@@ -891,7 +898,7 @@ H5HF_cache_iblock_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, NULL, "can't get actual buffer")
/* Read and validate indirect block from disk */
- if(H5F_read_check_metadata(f, H5FD_MEM_FHEAP_IBLOCK, addr, iblock->size, iblock->size, dxpl_id, buf, &computed_chksum) < 0)
+ if(H5F_read_check_metadata(f, H5FD_MEM_FHEAP_IBLOCK, H5AC_FHEAP_IBLOCK_ID, addr, iblock->size, iblock->size, dxpl_id, buf, &computed_chksum) < 0)
HGOTO_ERROR(H5E_BTREE, H5E_BADVALUE, NULL, "incorrect metadata checksum for fractal heap indirect block")
/* Get temporary pointer to serialized indirect block */
@@ -1491,6 +1498,7 @@ H5HF_cache_dblock_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
uint32_t computed_chksum; /* Computed metadata checksum value */
uint32_t stored_chksum; /* Metadata checksum value */
size_t tries, max_tries; /* The # of read attempts */
+ size_t retries; /* The # of retries */
size_t chk_size; /* The size for validating checksum */
uint8_t *chk_p; /* Pointer to the area for validating checksum */
size_t read_size; /* Size of filtered direct block to read */
@@ -1614,8 +1622,14 @@ H5HF_cache_dblock_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *_udata)
if(tries == 0)
HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "incorrect metadata checksum after all tries (%u) for fractal heap direct block", max_tries)
- else if((max_tries - tries + 1) > 1)
- HDfprintf(stderr, "%s: SUCCESS after %u attempts\n", FUNC, max_tries - tries + 1);
+
+ /* Calculate and track the # of retries */
+ retries = max_tries - tries;
+ if(retries) { /* Does not track 0 retry */
+ HDfprintf(stderr, "%s: SUCCESS after %u retries\n", FUNC, retries);
+ if(H5F_track_metadata_read_retries(f, H5AC_FHEAP_DBLOCK_ID, retries) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "cannot track read retries = %u ", retries)
+ }
/* Start decoding direct block */
p = dblock->blk;