mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-01 16:28:09 +08:00
Merging in latest from upstream (HDFFV/hdf5:refs/heads/develop)
* commit '1fe3d5113aeedc4b67dae6b83984d1246c7a2701': Skip test in test/fheap.c when: a) multi/split drivers and b) persisting free-space or using paged aggregation strategy because the library will fail file creation (temporary) for the above conditions. Changes made based on RFC review comments Test the changes in a branch via daily testing.
This commit is contained in:
commit
f5317e17a8
@ -549,9 +549,11 @@
|
||||
#define H5F_FILE_SPACE_PAGE_SIZE_DEF 4096
|
||||
/* For paged aggregation: minimum value for file space page size */
|
||||
#define H5F_FILE_SPACE_PAGE_SIZE_MIN 512
|
||||
/* For paged aggregation: maxiumum value for file space page size: 1 gigabyte */
|
||||
#define H5F_FILE_SPACE_PAGE_SIZE_MAX 1024*1024*1024
|
||||
|
||||
/* For paged aggregation: drop free-space with size <= this threshold for small meta section */
|
||||
#define H5F_FILE_SPACE_PGEND_META_THRES 10
|
||||
#define H5F_FILE_SPACE_PGEND_META_THRES 0
|
||||
|
||||
/* Default for threshold for alignment (can be set via H5Pset_alignment()) */
|
||||
#define H5F_ALIGN_DEF 1
|
||||
|
@ -1519,7 +1519,7 @@ H5MF_try_shrink(H5F_t *f, H5FD_mem_t alloc_type, hid_t dxpl_id, haddr_t addr,
|
||||
H5AC_ring_t fsm_ring = H5AC_RING_INV; /* Ring of fsm */
|
||||
H5F_mem_page_t fs_type; /* Free space type */
|
||||
hbool_t reset_ring = FALSE; /* Whether the ring was set */
|
||||
htri_t ret_value = FAIL; /* Return value */
|
||||
htri_t ret_value = FALSE; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI_TAG(dxpl_id, H5AC__FREESPACE_TAG, FAIL)
|
||||
#ifdef H5MF_ALLOC_DEBUG
|
||||
|
@ -130,27 +130,27 @@ H5FS_section_class_t H5MF_FSPACE_SECT_CLS_SIMPLE[1] = {{
|
||||
/* Class info for "small" free space sections */
|
||||
H5FS_section_class_t H5MF_FSPACE_SECT_CLS_SMALL[1] = {{
|
||||
/* Class variables */
|
||||
H5MF_FSPACE_SECT_SMALL, /* Section type */
|
||||
0, /* Extra serialized size */
|
||||
H5FS_CLS_MERGE_SYM | H5FS_CLS_ADJUST_OK, /* Class flags */
|
||||
NULL, /* Class private info */
|
||||
H5MF_FSPACE_SECT_SMALL, /* Section type */
|
||||
0, /* Extra serialized size */
|
||||
H5FS_CLS_MERGE_SYM | H5FS_CLS_ADJUST_OK, /* Class flags */
|
||||
NULL, /* Class private info */
|
||||
|
||||
/* Class methods */
|
||||
NULL, /* Initialize section class */
|
||||
NULL, /* Terminate section class */
|
||||
NULL, /* Initialize section class */
|
||||
NULL, /* Terminate section class */
|
||||
|
||||
/* Object methods */
|
||||
H5MF_sect_small_add, /* Add section */
|
||||
NULL, /* Serialize section */
|
||||
H5MF_sect_small_add, /* Add section */
|
||||
NULL, /* Serialize section */
|
||||
H5MF_sect_deserialize, /* Deserialize section */
|
||||
H5MF_sect_small_can_merge, /* Can sections merge? */
|
||||
H5MF_sect_small_merge, /* Merge sections */
|
||||
H5MF_sect_small_can_shrink, /* Can section shrink container?*/
|
||||
H5MF_sect_small_shrink, /* Shrink container w/section */
|
||||
H5MF_sect_free, /* Free section */
|
||||
H5MF_sect_valid, /* Check validity of section */
|
||||
H5MF_sect_split, /* Split section node for alignment */
|
||||
NULL, /* Dump debugging for section */
|
||||
H5MF_sect_small_can_merge, /* Can sections merge? */
|
||||
H5MF_sect_small_merge, /* Merge sections */
|
||||
NULL, /* Can section shrink container?*/
|
||||
NULL, /* Shrink container w/section */
|
||||
H5MF_sect_free, /* Free section */
|
||||
H5MF_sect_valid, /* Check validity of section */
|
||||
H5MF_sect_split, /* Split section node for alignment */
|
||||
NULL, /* Dump debugging for section */
|
||||
}};
|
||||
|
||||
/* Class info for "large" free space sections */
|
||||
@ -674,7 +674,7 @@ HDfprintf(stderr, "%s: Entering, section {%a, %Hu}\n", FUNC, (*sect)->sect_info.
|
||||
HDfprintf(stderr, "%s: section is dropped\n", FUNC);
|
||||
#endif /* H5MF_ALLOC_DEBUG_MORE */
|
||||
} /* end if */
|
||||
/* Adjust the section if it is not at page end but its size + pgend threshold is at page end */
|
||||
/* Adjust the section if it is not at page end but its size + prem is at page end */
|
||||
else
|
||||
if(prem <= H5F_PGEND_META_THRES(udata->f)) {
|
||||
(*sect)->sect_info.size += prem;
|
||||
|
@ -1472,6 +1472,9 @@ H5Pset_file_space_page_size(hid_t plist_id, hsize_t fsp_size)
|
||||
if(fsp_size < H5F_FILE_SPACE_PAGE_SIZE_MIN)
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "cannot set file space page size to less than 512")
|
||||
|
||||
if(fsp_size > H5F_FILE_SPACE_PAGE_SIZE_MAX)
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "cannot set file space page size to more than 1GB")
|
||||
|
||||
/* Set the value*/
|
||||
if(H5P_set(plist, H5F_CRT_FILE_SPACE_PAGE_SIZE_NAME, &fsp_size) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set file space page size")
|
||||
|
16
test/fheap.c
16
test/fheap.c
@ -16377,6 +16377,16 @@ main(void)
|
||||
unsigned nerrors = 0; /* Cumulative error count */
|
||||
unsigned num_pb_fs = 1; /* The number of settings to test for page buffering and file space handling */
|
||||
int ExpressMode; /* Express testing level */
|
||||
const char *envval; /* Environment variable */
|
||||
hbool_t contig_addr_vfd; /* Whether VFD used has a contigous address space */
|
||||
|
||||
/* Don't run this test using certain file drivers */
|
||||
envval = HDgetenv("HDF5_DRIVER");
|
||||
if(envval == NULL)
|
||||
envval = "nomatch";
|
||||
|
||||
/* Current VFD that does not support contigous address space */
|
||||
contig_addr_vfd = (hbool_t)(HDstrcmp(envval, "split") && HDstrcmp(envval, "multi"));
|
||||
|
||||
/* Reset library */
|
||||
h5_reset();
|
||||
@ -16428,6 +16438,12 @@ main(void)
|
||||
shared_wobj_g[u] = (unsigned char)u;
|
||||
|
||||
for(v = 0; v < num_pb_fs; v++) {
|
||||
/* Skip test when:
|
||||
a) multi/split drivers and
|
||||
b) persisting free-space or using paged aggregation strategy
|
||||
because the library will fail file creation (temporary) for the above conditions */
|
||||
if(!contig_addr_vfd && v)
|
||||
break;
|
||||
|
||||
if((fcpl = H5Pcopy(def_fcpl)) < 0)
|
||||
TEST_ERROR
|
||||
|
17
test/tfile.c
17
test/tfile.c
@ -109,6 +109,7 @@
|
||||
#define TEST_THRESHOLD10 10 /* Free space section threshold */
|
||||
#define FSP_SIZE_DEF 4096 /* File space page size default */
|
||||
#define FSP_SIZE512 512 /* File space page size */
|
||||
#define FSP_SIZE1G 1024*1024*1024 /* File space page size */
|
||||
|
||||
/* Declaration for test_libver_macros2() */
|
||||
#define FILE6 "tfile6.h5" /* Test file */
|
||||
@ -3581,6 +3582,9 @@ test_filespace_info(const char *env_h5_drvr)
|
||||
* Setting value less than 512 will return an error;
|
||||
* --setting file space page size to 0
|
||||
* --setting file space page size to 511
|
||||
*
|
||||
* File space page size has a maximum size of 1 gigabyte.
|
||||
* Setting value greater than 1 gigabyte will return an error.
|
||||
*/
|
||||
/* Create file creation property list template */
|
||||
fcpl = H5Pcreate(H5P_FILE_CREATE);
|
||||
@ -3598,6 +3602,12 @@ test_filespace_info(const char *env_h5_drvr)
|
||||
} H5E_END_TRY;
|
||||
VERIFY(ret, FAIL, "H5Pset_file_space_page_size");
|
||||
|
||||
/* Setting to 1GB+1: should fail */
|
||||
H5E_BEGIN_TRY {
|
||||
ret = H5Pset_file_space_page_size(fcpl, FSP_SIZE1G+1);
|
||||
} H5E_END_TRY;
|
||||
VERIFY(ret, FAIL, "H5Pset_file_space_page_size");
|
||||
|
||||
/* Setting to 512: should succeed */
|
||||
ret = H5Pset_file_space_page_size(fcpl, FSP_SIZE512);
|
||||
CHECK(ret, FAIL, "H5Pset_file_space_page_size");
|
||||
@ -3605,6 +3615,13 @@ test_filespace_info(const char *env_h5_drvr)
|
||||
CHECK(ret, FAIL, "H5Pget_file_space_page_size");
|
||||
VERIFY(fsp_size, FSP_SIZE512, "H5Pget_file_space_page_size");
|
||||
|
||||
/* Setting to 1GB: should succeed */
|
||||
ret = H5Pset_file_space_page_size(fcpl, FSP_SIZE1G);
|
||||
CHECK(ret, FAIL, "H5Pset_file_space_page_size");
|
||||
ret = H5Pget_file_space_page_size(fcpl, &fsp_size);
|
||||
CHECK(ret, FAIL, "H5Pget_file_space_page_size");
|
||||
VERIFY(fsp_size, FSP_SIZE1G, "H5Pget_file_space_page_size");
|
||||
|
||||
/* Close property list */
|
||||
H5Pclose(fcpl);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user