diff options
author | Vailin Choi <vchoi@hdfgroup.org> | 2015-06-24 06:05:11 (GMT) |
---|---|---|
committer | Vailin Choi <vchoi@hdfgroup.org> | 2015-06-24 06:05:11 (GMT) |
commit | e5581d39a5bb4bd4ec95fcd7f9058104bbefbc3d (patch) | |
tree | 609aded9e75033f33d4aaf779e72808d1b47ae39 /src/H5HFcache.c | |
parent | d043c9c2655b1fbcb1dceb5ee0f29a4c4c47bf4e (diff) | |
download | hdf5-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.c | 26 |
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; |