From 4de5549f92e354900b47585d2a76c213984504b3 Mon Sep 17 00:00:00 2001 From: Vailin Choi Date: Tue, 4 Mar 2008 15:02:57 -0500 Subject: [svn-r14702] 1. H5HFiblock.c: fixed problem for uninitialized "u" for bug #1072 in H5HF_man_iblock_size(). 2. H5HFstat.c: Since H5HF_space_size() zeroed out fs_size, add "meta_size" to store free-space size before adding to "heap_size". 3. h5stat_gentest.c: increase # of groups to get "h5stat_newgrat.h5" that contains indirect block entries in fractal heap. This is for testing the recursive part of the code in H5HF_man_iblock_size(). 4. h5stat_newgrat.h5: the new .h5 file generated by h5stat_gentest.c. 5. h5stat_newgrat.ddl: expected output from new "h5stat_newgrat.h5". --- src/H5HFiblock.c | 3 ++- src/H5HFstat.c | 7 +++++-- tools/h5stat/h5stat_gentest.c | 2 +- tools/h5stat/testfiles/h5stat_newgrat.ddl | 20 ++++++++++---------- tools/h5stat/testfiles/h5stat_newgrat.h5 | Bin 72236 -> 6363055 bytes 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/H5HFiblock.c b/src/H5HFiblock.c index 70133aa..2ea8b5d 100644 --- a/src/H5HFiblock.c +++ b/src/H5HFiblock.c @@ -1624,7 +1624,8 @@ H5HF_man_iblock_size(H5F_t *f, hid_t dxpl_id, H5HF_hdr_t *hdr, haddr_t iblock_ad entry = hdr->man_dtable.max_direct_rows * hdr->man_dtable.cparam.width; first_row_bits = H5V_log2_of2((uint32_t)hdr->man_dtable.cparam.start_block_size) + H5V_log2_of2(hdr->man_dtable.cparam.width); - num_indirect_rows = (H5V_log2_gen(hdr->man_dtable.row_block_size[u]) - first_row_bits) + 1; + num_indirect_rows = + (H5V_log2_gen(hdr->man_dtable.row_block_size[hdr->man_dtable.max_direct_rows]) - first_row_bits) + 1; for(u = hdr->man_dtable.max_direct_rows; u < iblock->nrows; u++, num_indirect_rows++) { size_t v; /* Local index variable */ diff --git a/src/H5HFstat.c b/src/H5HFstat.c index 2e3e189..015bd42 100644 --- a/src/H5HFstat.c +++ b/src/H5HFstat.c @@ -128,6 +128,7 @@ H5HF_size(const H5HF_t *fh, hid_t dxpl_id, hsize_t *heap_size) { H5HF_hdr_t *hdr; /* Fractal heap header */ herr_t ret_value = SUCCEED; /* Return value */ + hsize_t meta_size = 0; /* free space storage size */ FUNC_ENTER_NOAPI(H5HF_size, FAIL) @@ -172,9 +173,11 @@ H5HF_size(const H5HF_t *fh, hid_t dxpl_id, hsize_t *heap_size) } /* end if */ /* Get storage for free-space tracking info */ - if(H5F_addr_defined(hdr->fs_addr)) - if(H5HF_space_size(hdr, dxpl_id, heap_size) < 0) + if(H5F_addr_defined(hdr->fs_addr)) { + if(H5HF_space_size(hdr, dxpl_id, &meta_size) < 0) HGOTO_ERROR(H5E_FSPACE, H5E_CANTGET, FAIL, "can't retrieve FS meta storage info") + *heap_size += meta_size; + } done: FUNC_LEAVE_NOAPI(ret_value) diff --git a/tools/h5stat/h5stat_gentest.c b/tools/h5stat/h5stat_gentest.c index 28d20ce..ef644d8 100644 --- a/tools/h5stat/h5stat_gentest.c +++ b/tools/h5stat/h5stat_gentest.c @@ -29,7 +29,7 @@ #define DATASET_NAME "DATASET_NAME" #define GROUP_NAME "GROUP" #define ATTR_NAME "ATTR" -#define NUM_GRPS 350 +#define NUM_GRPS 35000 #define NUM_ATTRS 100 /* diff --git a/tools/h5stat/testfiles/h5stat_newgrat.ddl b/tools/h5stat/testfiles/h5stat_newgrat.ddl index 6881ca9..d704f00 100644 --- a/tools/h5stat/testfiles/h5stat_newgrat.ddl +++ b/tools/h5stat/testfiles/h5stat_newgrat.ddl @@ -3,20 +3,20 @@ Expected output for 'h5stat h5stat_newgrat.h5' ############################# Filename: h5stat_newgrat.h5 File information - # of unique groups: 351 + # of unique groups: 35001 # of unique datasets: 1 # of unique named dataypes: 0 # of unique links: 0 # of unique other: 0 Max. # of links to object: 1 - Max. # of objects in group: 351 + Max. # of objects in group: 35001 Object header size: (total/unused) - Groups: 51597/32292 + Groups: 5145147/3220092 Datasets: 414/312 Storage information: Groups: - B-tree/List: 5158 - Heap: 7643 + B-tree/List: 470054 + Heap: 739128 Attributes: B-tree/List: 2598 Heap: 4442 @@ -28,12 +28,12 @@ Storage information: Heap: 0 Superblock extension: 0 Small groups: - # of groups of size 0: 350 - Total # of small groups: 350 + # of groups of size 0: 35000 + Total # of small groups: 35000 Group bins: - # of groups of size 0: 350 - # of groups of size 100 - 999: 1 - Total # of groups: 351 + # of groups of size 0: 35000 + # of groups of size 10000 - 99999: 1 + Total # of groups: 35001 Dataset dimension information: Max. rank of datasets: 0 Dataset ranks: diff --git a/tools/h5stat/testfiles/h5stat_newgrat.h5 b/tools/h5stat/testfiles/h5stat_newgrat.h5 index cab98bb..8083122 100644 Binary files a/tools/h5stat/testfiles/h5stat_newgrat.h5 and b/tools/h5stat/testfiles/h5stat_newgrat.h5 differ -- cgit v0.12