diff options
Diffstat (limited to 'test/fheap.c')
-rw-r--r-- | test/fheap.c | 523 |
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 */ |