summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-03-31 15:43:14 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-03-31 15:43:14 (GMT)
commit244fdb6d8936f9bc2363d3f64ddd8c674f53dfcf (patch)
treeaf716c87891b52d4e9cea4a828d74db057f9d795 /test
parent6864ebdd6aeb44aa86193f7723b872dbf1ed26fa (diff)
downloadhdf5-244fdb6d8936f9bc2363d3f64ddd8c674f53dfcf.zip
hdf5-244fdb6d8936f9bc2363d3f64ddd8c674f53dfcf.tar.gz
hdf5-244fdb6d8936f9bc2363d3f64ddd8c674f53dfcf.tar.bz2
[svn-r12184] Purpose:
Code checkpoint Description: Checkpoint recent additions to fractal heap code, which allow for better support of objects that don't fit into current direct block, requiring skipped direct blocks to be tracked in free section list. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 (chicago & heping) Linux 2.4 (mir) w/64-bit & FORTRAN & C++ Mac OSX (amazon)
Diffstat (limited to 'test')
-rw-r--r--test/fheap.c523
1 files changed, 428 insertions, 95 deletions
diff --git a/test/fheap.c b/test/fheap.c
index aff2441..af28b12 100644
--- a/test/fheap.c
+++ b/test/fheap.c
@@ -205,10 +205,12 @@ error:
static int
fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
hsize_t heap_size, size_t block_size,
+ hsize_t extra_free,
unsigned start_nobjs, unsigned *nobjs_ptr)
{
H5HF_stat_t heap_stats; /* Statistics about the heap */
unsigned char heap_id[HEAP_ID_LEN]; /* Heap ID for object inserted */
+ hsize_t free_space; /* Size of free space in heap */
unsigned char obj[10]; /* Buffer for object to insert */
unsigned char robj[10]; /* Buffer for reading object */
unsigned nobjs = 0; /* Number of objects inserted */
@@ -222,11 +224,11 @@ fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
/* Initialize variables */
if(block_size <= (64 * 1024)) {
- data_size = block_size - (DBLOCK_OVERHEAD + cparam->managed.max_index / 8); /* '28' is the size of the direct block's overhead */
+ data_size = block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + cparam->managed.max_index / 8); /* '28' is the size of the direct block's overhead */
free_overhead = 4;
} /* end if */
else {
- data_size = block_size - (DBLOCK_OVERHEAD + 1 + cparam->managed.max_index / 8); /* '29' is the size of the direct block's overhead */
+ data_size = block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + 1 + cparam->managed.max_index / 8); /* '29' is the size of the direct block's overhead */
free_overhead = 6;
} /* end else */
@@ -250,7 +252,12 @@ fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
} /* end if */
HDmemcpy(&ids[(nobjs - 1) * HEAP_ID_LEN], heap_id, HEAP_ID_LEN);
- if(check_stats(f, dxpl, fh_addr, heap_size, heap_size, (hsize_t)0, (hsize_t)(data_size - (nobjs * (sizeof(obj) + OBJ_PREFIX_LEN))), (hsize_t)(start_nobjs + nobjs)))
+ free_space = extra_free + (data_size - (nobjs * (sizeof(obj) + OBJ_PREFIX_LEN)));
+#ifdef QAK
+HDfprintf(stderr, "extra_free = %Hu\n", extra_free);
+HDfprintf(stderr, "free_space = %Hu\n", free_space);
+#endif /* QAK */
+ if(check_stats(f, dxpl, fh_addr, heap_size, heap_size, (hsize_t)0, free_space, (hsize_t)(start_nobjs + nobjs)))
FAIL_STACK_ERROR
/* Get statistics for heap */
@@ -259,7 +266,7 @@ fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
/* Loop over inserting objects into the root direct block, until there's no more space */
free_frag_size = 0;
- while(heap_stats.man_free_space > (sizeof(obj) + OBJ_PREFIX_LEN)) {
+ while((heap_stats.man_free_space - extra_free) > (sizeof(obj) + OBJ_PREFIX_LEN)) {
/* Initialize object buffer */
for(u = 0; u < sizeof(obj); u++)
obj[u] = u + nobjs;
@@ -280,9 +287,16 @@ fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
HDmemcpy(&ids[(nobjs - 1) * HEAP_ID_LEN], heap_id, HEAP_ID_LEN);
/* Check stats for heap */
- if((heap_stats.man_free_space - (sizeof(obj) + OBJ_PREFIX_LEN)) <= free_overhead)
- free_frag_size = heap_stats.man_free_space - (sizeof(obj) + OBJ_PREFIX_LEN);
- if(check_stats(f, dxpl, fh_addr, heap_size, heap_size, (hsize_t)0, (hsize_t)(data_size - ((nobjs * (sizeof(obj) + OBJ_PREFIX_LEN)) + free_frag_size)), (hsize_t)(start_nobjs + nobjs)))
+ if(((heap_stats.man_free_space - extra_free) - sizeof(obj)) <= free_overhead)
+ free_frag_size = (heap_stats.man_free_space - extra_free) - (sizeof(obj) + OBJ_PREFIX_LEN);
+#ifdef QAK
+HDfprintf(stderr, "free_frag_size = %u\n", free_frag_size);
+#endif /* QAK */
+ free_space = extra_free + (data_size - ((nobjs * (sizeof(obj) + OBJ_PREFIX_LEN)) + free_frag_size));
+#ifdef QAK
+HDfprintf(stderr, "free_space = %Hu\n", free_space);
+#endif /* QAK */
+ if(check_stats(f, dxpl, fh_addr, heap_size, heap_size, (hsize_t)0, free_space, (hsize_t)(start_nobjs + nobjs)))
FAIL_STACK_ERROR
/* Get statistics for heap */
@@ -291,8 +305,8 @@ fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
} /* end while */
/* Check for adding smaller last object to heap block */
- if(heap_stats.man_free_space > 0) {
- last_obj_len = (size_t)(heap_stats.man_free_space - OBJ_PREFIX_LEN);
+ if((heap_stats.man_free_space - extra_free) > 0) {
+ last_obj_len = (size_t)((heap_stats.man_free_space - extra_free) - OBJ_PREFIX_LEN);
/* Initialize object buffer */
for(u = 0; u < sizeof(obj); u++)
@@ -315,7 +329,7 @@ fill_heap(H5F_t *f, hid_t dxpl, haddr_t fh_addr, const H5HF_create_t *cparam,
HDmemcpy(&ids[(nobjs - 1) * HEAP_ID_LEN], heap_id, HEAP_ID_LEN);
/* Verify that the heap is full */
- if(check_stats(f, dxpl, fh_addr, heap_size, heap_size, (hsize_t)0, (hsize_t)0, (hsize_t)(start_nobjs + nobjs)))
+ if(check_stats(f, dxpl, fh_addr, heap_size, heap_size, (hsize_t)0, extra_free, (hsize_t)(start_nobjs + nobjs)))
FAIL_STACK_ERROR
} /* end if */
else
@@ -582,6 +596,7 @@ test_abs_insert_second(hid_t fapl, H5HF_create_t *cparam)
if(HDmemcmp(obj, robj, sizeof(obj)))
FAIL_STACK_ERROR
+ /* Insert second object */
HDmemset(heap_id, 0, sizeof(heap_id));
if(H5HF_insert(f, dxpl, fh_addr, sizeof(obj2), obj2, heap_id) < 0)
FAIL_STACK_ERROR
@@ -662,7 +677,7 @@ test_abs_insert_root_mult(hid_t fapl, H5HF_create_t *cparam)
TESTING("inserting objects to fill absolute heap's root direct block");
/* Fill the heap up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, 0, NULL))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, 0, NULL))
FAIL_STACK_ERROR
PASSED()
@@ -738,7 +753,7 @@ test_abs_insert_force_indirect(hid_t fapl, H5HF_create_t *cparam)
TESTING("inserting objects to create root indirect block");
/* Fill the heap up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, 0, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, 0, &nobjs))
FAIL_STACK_ERROR
/* Insert one more object, to force root indirect block creation */
@@ -829,12 +844,12 @@ test_abs_insert_fill_second(hid_t fapl, H5HF_create_t *cparam)
TESTING("inserting objects to fill second direct block");
/* Fill the first direct block heap up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
/* Fill the second direct block heap up (also creates initial root indirect block) */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(2 * cparam->managed.start_block_size), cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(2 * cparam->managed.start_block_size), cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
PASSED()
@@ -913,12 +928,12 @@ test_abs_insert_third_direct(hid_t fapl, H5HF_create_t *cparam)
TESTING("inserting objects to create third direct block");
/* Fill the first direct block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
/* Fill the second direct block heap up (also creates initial root indirect block) */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(2 * cparam->managed.start_block_size), cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(2 * cparam->managed.start_block_size), cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
@@ -1019,7 +1034,7 @@ test_abs_fill_first_row(hid_t fapl, H5HF_create_t *cparam)
/* Loop over filling direct blocks, until first root indirect row is full */
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1101,7 +1116,7 @@ test_abs_start_second_row(hid_t fapl, H5HF_create_t *cparam)
/* Loop over filling direct blocks, until first root indirect row is full */
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1203,7 +1218,7 @@ test_abs_fill_second_row(hid_t fapl, H5HF_create_t *cparam)
/* Loop over filling direct blocks, until first root indirect row is full */
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1211,7 +1226,7 @@ test_abs_fill_second_row(hid_t fapl, H5HF_create_t *cparam)
/* Loop over filling direct blocks, until second root indirect row is full */
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)((cparam->managed.width * cparam->managed.start_block_size) + (u + 1) * cparam->managed.start_block_size), cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)((cparam->managed.width * cparam->managed.start_block_size) + (u + 1) * cparam->managed.start_block_size), cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1295,7 +1310,7 @@ test_abs_start_third_row(hid_t fapl, H5HF_create_t *cparam)
/* Loop over filling direct blocks, until first root indirect row is full */
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)(u + 1) * cparam->managed.start_block_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1303,7 +1318,7 @@ test_abs_start_third_row(hid_t fapl, H5HF_create_t *cparam)
/* Loop over filling direct blocks, until second root indirect row is full */
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
- if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)((cparam->managed.width * cparam->managed.start_block_size) + (u + 1) * cparam->managed.start_block_size), cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, (hsize_t)((cparam->managed.width * cparam->managed.start_block_size) + (u + 1) * cparam->managed.start_block_size), cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1414,7 +1429,7 @@ test_abs_fill_fourth_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1506,7 +1521,7 @@ test_abs_fill_all_root_direct(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1605,7 +1620,7 @@ test_abs_first_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1731,7 +1746,7 @@ test_abs_second_direct_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1746,7 +1761,7 @@ test_abs_second_direct_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
/* Fill the first direct block in the recursive indirect block up */
heap_size += cparam->managed.start_block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, cparam->managed.start_block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, cparam->managed.start_block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
@@ -1862,7 +1877,7 @@ test_abs_fill_first_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1886,7 +1901,7 @@ test_abs_fill_first_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -1989,7 +2004,7 @@ test_abs_second_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2013,7 +2028,7 @@ test_abs_second_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2140,7 +2155,7 @@ test_abs_fill_second_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2164,7 +2179,7 @@ test_abs_fill_second_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2188,7 +2203,7 @@ test_abs_fill_second_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2288,7 +2303,7 @@ test_abs_fill_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2314,7 +2329,7 @@ test_abs_fill_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2417,7 +2432,7 @@ test_abs_start_2nd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2443,7 +2458,7 @@ test_abs_start_2nd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2569,7 +2584,7 @@ test_abs_recursive_indirect_two_deep(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2596,7 +2611,7 @@ test_abs_recursive_indirect_two_deep(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2701,7 +2716,7 @@ test_abs_start_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2728,7 +2743,7 @@ test_abs_start_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2856,7 +2871,7 @@ test_abs_fill_first_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2883,7 +2898,7 @@ test_abs_fill_first_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2906,7 +2921,7 @@ test_abs_fill_first_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -2932,7 +2947,7 @@ test_abs_fill_first_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3032,7 +3047,7 @@ test_abs_fill_3rd_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3059,7 +3074,7 @@ test_abs_fill_3rd_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3084,7 +3099,7 @@ test_abs_fill_3rd_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3110,7 +3125,7 @@ test_abs_fill_3rd_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3211,7 +3226,7 @@ test_abs_fill_all_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3238,7 +3253,7 @@ test_abs_fill_all_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3267,7 +3282,7 @@ test_abs_fill_all_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3296,7 +3311,7 @@ test_abs_fill_all_3rd_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3404,7 +3419,7 @@ test_abs_start_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3431,7 +3446,7 @@ test_abs_start_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3460,7 +3475,7 @@ test_abs_start_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3489,7 +3504,7 @@ test_abs_start_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3620,7 +3635,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3647,7 +3662,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3676,7 +3691,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3705,7 +3720,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3730,7 +3745,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3759,7 +3774,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3785,7 +3800,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3814,7 +3829,7 @@ test_abs_fill_first_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3917,7 +3932,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3944,7 +3959,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -3973,7 +3988,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4002,7 +4017,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4030,7 +4045,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4059,7 +4074,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4088,7 +4103,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4117,7 +4132,7 @@ test_abs_fill_4th_recursive_indirect_row(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4222,7 +4237,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4249,7 +4264,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4278,7 +4293,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4307,7 +4322,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4338,7 +4353,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4367,7 +4382,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4396,7 +4411,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4425,7 +4440,7 @@ test_abs_fill_all_4th_recursive_indirect(hid_t fapl, H5HF_create_t *cparam)
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4548,7 +4563,7 @@ HDfprintf(stderr, "%u ", u);
#endif /* QAK */
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4596,7 +4611,7 @@ HDfprintf(stderr, "%u ", u);
#endif /* QAK */
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4634,7 +4649,7 @@ HDfprintf(stderr, "3rd indirect block # = %u\n", x);
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4681,7 +4696,7 @@ HDfprintf(stderr, "%u ", u);
#endif /* QAK */
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4721,7 +4736,7 @@ HDfprintf(stderr, "4th indirect block # = %u\n", z);
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4768,7 +4783,7 @@ HDfprintf(stderr, "%u ", u);
#endif /* QAK */
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4806,7 +4821,7 @@ HDfprintf(stderr, "3rd indirect block # = %u\n", x);
for(u = 0; u < cparam->managed.width; u++) {
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4853,7 +4868,7 @@ HDfprintf(stderr, "%u ", u);
#endif /* QAK */
/* Fill a direct heap block up */
heap_size += block_size;
- if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, tot_nobjs, &nobjs))
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, (hsize_t)0, tot_nobjs, &nobjs))
FAIL_STACK_ERROR
tot_nobjs += nobjs;
} /* end for */
@@ -4892,7 +4907,7 @@ HDfprintf(stderr, "\n");
tot_nobjs++;
heap_size += cparam->managed.start_block_size;
- free_space = cparam->managed.start_block_size - ((sizeof(obj) + OBJ_PREFIX_LEN) + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ free_space = cparam->managed.start_block_size - ((sizeof(obj) + OBJ_PREFIX_LEN) + OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, heap_size, heap_size, (hsize_t)0, free_space, (hsize_t)tot_nobjs))
FAIL_STACK_ERROR
@@ -4923,7 +4938,8 @@ error:
* Function: test_abs_skip_start_block
*
* Purpose: Test inserting object into absolute heap which is too large
- * for starting block size
+ * for starting block size, which forces root indirect block
+ * creation
*
* Return: Success: 0
*
@@ -4983,7 +4999,7 @@ test_abs_skip_start_block(hid_t fapl, H5HF_create_t *cparam)
HDmemset(heap_id, 0, sizeof(heap_id));
if(H5HF_insert(f, dxpl, fh_addr, (cparam->managed.start_block_size + 1), obj, heap_id) < 0)
FAIL_STACK_ERROR
- free_space = (2 * cparam->managed.width * (cparam->managed.start_block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8)))) + (2 * cparam->managed.start_block_size) - (((cparam->managed.start_block_size + 1) + OBJ_PREFIX_LEN) + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ free_space = (2 * cparam->managed.width * (cparam->managed.start_block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8)))) + (2 * cparam->managed.start_block_size) - (((cparam->managed.start_block_size + 1) + OBJ_PREFIX_LEN) + OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)0, free_space, (hsize_t)1))
FAIL_STACK_ERROR
@@ -4991,7 +5007,7 @@ test_abs_skip_start_block(hid_t fapl, H5HF_create_t *cparam)
robj = H5MM_malloc(cparam->managed.start_block_size + 1);
if(H5HF_read(f, dxpl, fh_addr, heap_id, robj) < 0)
FAIL_STACK_ERROR
- if(HDmemcmp(obj, robj, sizeof(obj)))
+ if(HDmemcmp(obj, robj, (cparam->managed.start_block_size + 1)))
FAIL_STACK_ERROR
PASSED()
@@ -5016,6 +5032,321 @@ error:
/*-------------------------------------------------------------------------
+ * Function: test_abs_skip_start_block_add_back
+ *
+ * Purpose: Test inserting object into absolute heap which is too large
+ * for starting block size, which forces root indirect block
+ * creation, then add object which fits in skipped direct block
+ *
+ * Return: Success: 0
+ *
+ * Failure: 1
+ *
+ * Programmer: Quincey Koziol
+ * Tuesday, March 28, 2006
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_abs_skip_start_block_add_back(hid_t fapl, H5HF_create_t *cparam)
+{
+ hid_t file = -1; /* File ID */
+ hid_t dxpl = H5P_DATASET_XFER_DEFAULT; /* DXPL to use */
+ char filename[1024]; /* Filename to use */
+ H5F_t *f = NULL; /* Internal file object pointer */
+ haddr_t fh_addr; /* Address of fractal heap created */
+ size_t id_len; /* Size of fractal heap IDs */
+ unsigned char *obj = NULL; /* Buffer for object to insert */
+ unsigned char *robj = NULL; /* Buffer for object to read */
+ unsigned char obj2[20]; /* Buffer for second object to insert */
+ unsigned char robj2[20]; /* Buffer for reading second object */
+ unsigned char heap_id[HEAP_ID_LEN]; /* Heap ID for object inserted */
+ hsize_t free_space; /* Size of free space in heap */
+ size_t obj_size; /* Size of object to add */
+ unsigned u; /* Local index variable */
+
+ /* Set the filename to use for this test (dependent on fapl) */
+ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+
+ /* Create the file to work on */
+ if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ TEST_ERROR
+
+ /* Get a pointer to the internal file object */
+ if(NULL == (f = H5I_object(file)))
+ STACK_ERROR
+
+ /* Create absolute heap */
+ if(H5HF_create(f, dxpl, cparam, &fh_addr/*out*/, &id_len/*out*/) < 0)
+ FAIL_STACK_ERROR
+ if(!H5F_addr_defined(fh_addr))
+ FAIL_STACK_ERROR
+ if(id_len > HEAP_ID_LEN)
+ FAIL_STACK_ERROR
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)0, (hsize_t)0, (hsize_t)0, (hsize_t)0, (hsize_t)0))
+ FAIL_STACK_ERROR
+
+ /* Initialize object buffer */
+ obj_size = cparam->managed.start_block_size + 1;
+ obj = H5MM_malloc(obj_size);
+ for(u = 0; u < obj_size; u++)
+ obj[u] = u;
+
+ /*
+ * Test inserting object into absolute heap which doesn't fit into starting
+ * block size
+ */
+ TESTING("skipping starting block, then adding object back to first block");
+ HDmemset(heap_id, 0, sizeof(heap_id));
+ if(H5HF_insert(f, dxpl, fh_addr, obj_size, obj, heap_id) < 0)
+ FAIL_STACK_ERROR
+ free_space = (2 * cparam->managed.width * (cparam->managed.start_block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8)))) + (2 * cparam->managed.start_block_size) - ((obj_size + OBJ_PREFIX_LEN) + OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)0, free_space, (hsize_t)1))
+ FAIL_STACK_ERROR
+
+ /* Check reading back in the object */
+ robj = H5MM_malloc(obj_size);
+ if(H5HF_read(f, dxpl, fh_addr, heap_id, robj) < 0)
+ FAIL_STACK_ERROR
+ if(HDmemcmp(obj, robj, obj_size))
+ FAIL_STACK_ERROR
+
+ /* Insert an object to fill up the heap block just created */
+
+ /* Initialize object buffer */
+ H5MM_xfree(obj);
+ obj_size = (2 * cparam->managed.start_block_size) - (OBJ_PREFIX_LEN + (cparam->managed.start_block_size + 1 + OBJ_PREFIX_LEN) + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ obj = H5MM_malloc(obj_size);
+ for(u = 0; u < obj_size; u++)
+ obj[u] = u;
+
+ HDmemset(heap_id, 0, sizeof(heap_id));
+ if(H5HF_insert(f, dxpl, fh_addr, obj_size, obj, heap_id) < 0)
+ FAIL_STACK_ERROR
+ free_space -= obj_size; /* no object prefix, there's no more space in the node */
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)0, free_space, (hsize_t)2))
+ FAIL_STACK_ERROR
+
+ /* Check reading back in the object */
+ H5MM_xfree(robj);
+ robj = H5MM_malloc(obj_size);
+ if(H5HF_read(f, dxpl, fh_addr, heap_id, robj) < 0)
+ FAIL_STACK_ERROR
+ if(HDmemcmp(obj, robj, obj_size))
+ FAIL_STACK_ERROR
+
+ /* Insert second "real" object, which should go in earlier direct block */
+ HDmemset(heap_id, 0, sizeof(heap_id));
+ if(H5HF_insert(f, dxpl, fh_addr, sizeof(obj2), obj2, heap_id) < 0)
+ FAIL_STACK_ERROR
+ free_space -= (OBJ_PREFIX_LEN + sizeof(obj2));
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)(3 * cparam->managed.start_block_size), (hsize_t)(3 * cparam->managed.start_block_size), (hsize_t)0, free_space, (hsize_t)3))
+ FAIL_STACK_ERROR
+
+ /* Check reading back in the second object */
+ if(H5HF_read(f, dxpl, fh_addr, heap_id, robj2) < 0)
+ FAIL_STACK_ERROR
+ if(HDmemcmp(obj2, robj2, sizeof(obj2)))
+ FAIL_STACK_ERROR
+
+ PASSED()
+
+ /* Close the file */
+ if(H5Fclose(file) < 0)
+ TEST_ERROR
+
+ /* All tests passed */
+ H5MM_xfree(obj);
+ H5MM_xfree(robj);
+ return(0);
+
+error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ H5MM_xfree(obj);
+ H5MM_xfree(robj);
+ } H5E_END_TRY;
+ return(1);
+} /* test_abs_skip_start_block_add_back() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: test_abs_skip_start_block_add_skipped
+ *
+ * Purpose: Test inserting object into absolute heap which is too large
+ * for starting block size, which forces root indirect block
+ * creation, then add objects to fill skipped direct blocks
+ * and add another object to start on next "normal" block
+ *
+ * Return: Success: 0
+ *
+ * Failure: 1
+ *
+ * Programmer: Quincey Koziol
+ * Tuesday, March 28, 2006
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_abs_skip_start_block_add_skipped(hid_t fapl, H5HF_create_t *cparam)
+{
+ hid_t file = -1; /* File ID */
+ hid_t dxpl = H5P_DATASET_XFER_DEFAULT; /* DXPL to use */
+ char filename[1024]; /* Filename to use */
+ H5F_t *f = NULL; /* Internal file object pointer */
+ haddr_t fh_addr; /* Address of fractal heap created */
+ size_t id_len; /* Size of fractal heap IDs */
+ unsigned char *obj = NULL; /* Buffer for object to insert */
+ unsigned char *robj = NULL; /* Buffer for object to read */
+ unsigned char obj2[20]; /* Buffer for second object to insert */
+ unsigned char robj2[20]; /* Buffer for reading second object */
+ unsigned char heap_id[HEAP_ID_LEN]; /* Heap ID for object inserted */
+ hsize_t free_space; /* Size of free space in heap */
+ unsigned nobjs = 0; /* Number of objects inserted */
+ unsigned tot_nobjs = 0; /* Total number of objects inserted */
+ size_t obj_size; /* Size of object to add */
+ size_t block_size; /* Size of block added */
+ hsize_t heap_size; /* Total size of heap */
+ unsigned u, v; /* Local index variable */
+
+ /* Set the filename to use for this test (dependent on fapl) */
+ h5_fixname(FILENAME[0], fapl, filename, sizeof(filename));
+
+ /* Create the file to work on */
+ if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ TEST_ERROR
+
+ /* Get a pointer to the internal file object */
+ if(NULL == (f = H5I_object(file)))
+ STACK_ERROR
+
+ /* Create absolute heap */
+ if(H5HF_create(f, dxpl, cparam, &fh_addr/*out*/, &id_len/*out*/) < 0)
+ FAIL_STACK_ERROR
+ if(!H5F_addr_defined(fh_addr))
+ FAIL_STACK_ERROR
+ if(id_len > HEAP_ID_LEN)
+ FAIL_STACK_ERROR
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)0, (hsize_t)0, (hsize_t)0, (hsize_t)0, (hsize_t)0))
+ FAIL_STACK_ERROR
+
+ /* Initialize object buffer */
+ obj_size = cparam->managed.start_block_size + 1;
+ obj = H5MM_malloc(obj_size);
+ for(u = 0; u < obj_size; u++)
+ obj[u] = u;
+
+ /*
+ * Test inserting object into absolute heap which doesn't fit into starting
+ * block size
+ */
+ TESTING("skipping starting block, then adding objects to backfill and extend");
+ HDmemset(heap_id, 0, sizeof(heap_id));
+ if(H5HF_insert(f, dxpl, fh_addr, obj_size, obj, heap_id) < 0)
+ FAIL_STACK_ERROR
+ free_space = (2 * cparam->managed.width * (cparam->managed.start_block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8)))) + (2 * cparam->managed.start_block_size) - ((obj_size + OBJ_PREFIX_LEN) + OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)0, free_space, (hsize_t)1))
+ FAIL_STACK_ERROR
+
+ /* Check reading back in the object */
+ robj = H5MM_malloc(obj_size);
+ if(H5HF_read(f, dxpl, fh_addr, heap_id, robj) < 0)
+ FAIL_STACK_ERROR
+ if(HDmemcmp(obj, robj, obj_size))
+ FAIL_STACK_ERROR
+
+ /* Insert an object to fill up the heap block just created */
+
+ /* Initialize object buffer */
+ H5MM_xfree(obj);
+ obj_size = (2 * cparam->managed.start_block_size) - (OBJ_PREFIX_LEN + (cparam->managed.start_block_size + 1 + OBJ_PREFIX_LEN) + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ obj = H5MM_malloc(obj_size);
+ for(u = 0; u < obj_size; u++)
+ obj[u] = u;
+
+ HDmemset(heap_id, 0, sizeof(heap_id));
+ if(H5HF_insert(f, dxpl, fh_addr, obj_size, obj, heap_id) < 0)
+ FAIL_STACK_ERROR
+ free_space -= obj_size; /* no object prefix, there's no more space in the node */
+#ifdef QAK
+HDfprintf(stderr, "free_space = %Hu\n", free_space);
+#endif /* QAK */
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)(2 * cparam->managed.start_block_size), (hsize_t)0, free_space, (hsize_t)2))
+ FAIL_STACK_ERROR
+
+ /* Check reading back in the object */
+ H5MM_xfree(robj);
+ robj = H5MM_malloc(obj_size);
+ if(H5HF_read(f, dxpl, fh_addr, heap_id, robj) < 0)
+ FAIL_STACK_ERROR
+ if(HDmemcmp(obj, robj, obj_size))
+ FAIL_STACK_ERROR
+
+ /* Add row of blocks to "backfill" direct blocks that were skipped */
+ heap_size = (2 * cparam->managed.start_block_size) + cparam->managed.start_block_size;
+ block_size = cparam->managed.start_block_size;
+ tot_nobjs = nobjs = 2;
+ free_space -= cparam->managed.start_block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+#ifdef QAK
+HDfprintf(stderr, "free_space = %Hu\n", free_space);
+#endif /* QAK */
+ for(v = 0; v < 2; v++) {
+ for(u = 0; u < cparam->managed.width; u++) {
+ /* Fill a direct heap block up */
+#ifdef QAK
+HDfprintf(stderr, "heap_size = %Hu\n", heap_size);
+#endif /* QAK */
+ if(fill_heap(f, dxpl, fh_addr, cparam, heap_size, block_size, free_space, tot_nobjs, &nobjs))
+ FAIL_STACK_ERROR
+ free_space -= cparam->managed.start_block_size - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ heap_size += block_size;
+ tot_nobjs += nobjs;
+ } /* end for */
+ } /* end for */
+
+ /* Insert another object, which should go extend direct blocks, instead of backfill */
+ HDmemset(heap_id, 0, sizeof(heap_id));
+ if(H5HF_insert(f, dxpl, fh_addr, sizeof(obj2), obj2, heap_id) < 0)
+ FAIL_STACK_ERROR
+ heap_size += cparam->managed.start_block_size;
+ free_space = (2 * cparam->managed.start_block_size) - (OBJ_PREFIX_LEN + DBLOCK_OVERHEAD + (cparam->managed.max_index / 8));
+ free_space -= (OBJ_PREFIX_LEN + sizeof(obj2));
+#ifdef QAK
+HDfprintf(stderr, "free_space = %Hu\n", free_space);
+HDfprintf(stderr, "heap_size = %Hu\n", heap_size);
+#endif /* QAK */
+ tot_nobjs++;
+ if(check_stats(f, H5P_DATASET_XFER_DEFAULT, fh_addr, heap_size, heap_size, (hsize_t)0, free_space, (hsize_t)tot_nobjs))
+ FAIL_STACK_ERROR
+
+ /* Check reading back in the second object */
+ if(H5HF_read(f, dxpl, fh_addr, heap_id, robj2) < 0)
+ FAIL_STACK_ERROR
+ if(HDmemcmp(obj2, robj2, sizeof(obj2)))
+ FAIL_STACK_ERROR
+
+ PASSED()
+
+ /* Close the file */
+ if(H5Fclose(file) < 0)
+ TEST_ERROR
+
+ /* All tests passed */
+ H5MM_xfree(obj);
+ H5MM_xfree(robj);
+ return(0);
+
+error:
+ H5E_BEGIN_TRY {
+ H5Fclose(file);
+ H5MM_xfree(obj);
+ H5MM_xfree(robj);
+ } H5E_END_TRY;
+ return(1);
+} /* test_abs_skip_start_block_add_skipped() */
+
+
+/*-------------------------------------------------------------------------
* Function: run_tests
*
* Purpose: Test the fractal heap code, with different file access property
@@ -5078,8 +5409,10 @@ run_tests(hid_t fapl, H5HF_create_t *cparam)
HDfprintf(stderr, "Uncomment tests!\n");
#endif /* QAK */
- nerrors += test_abs_skip_start_block(fapl, cparam);
#ifndef QAK
+ nerrors += test_abs_skip_start_block(fapl, cparam);
+ nerrors += test_abs_skip_start_block_add_back(fapl, cparam);
+ nerrors += test_abs_skip_start_block_add_skipped(fapl, cparam);
#else /* QAK */
HDfprintf(stderr, "Uncomment tests!\n");
#endif /* QAK */