summaryrefslogtreecommitdiffstats
path: root/src/H5Fsuper.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Fsuper.c')
-rw-r--r--src/H5Fsuper.c60
1 files changed, 4 insertions, 56 deletions
diff --git a/src/H5Fsuper.c b/src/H5Fsuper.c
index 7685384..5334c51 100644
--- a/src/H5Fsuper.c
+++ b/src/H5Fsuper.c
@@ -80,15 +80,6 @@ static const unsigned HDF5_superblock_ver_bounds[] = {
HDF5_SUPERBLOCK_VERSION_LATEST /* H5F_LIBVER_LATEST */
};
-/* Format version bounds for fsinfo message */
-/* This message exists starting library release v1.10 */
-static const unsigned H5O_fsinfo_ver_bounds[] = {
- H5O_INVALID_VERSION, /* H5F_LIBVER_EARLIEST */
- H5O_INVALID_VERSION, /* H5F_LIBVER_V18 */
- H5O_FSINFO_VERSION_1, /* H5F_LIBVER_V110 */
- H5O_FSINFO_VERSION_LATEST /* H5F_LIBVER_LATEST */
-};
-
/*-------------------------------------------------------------------------
* Function: H5F__super_ext_create
@@ -790,15 +781,13 @@ H5F__super_read(H5F_t *f, H5P_genplist_t *fa_plist, hbool_t initial_read)
if(NULL == H5O_msg_read(&ext_loc, H5O_FSINFO_ID, &fsinfo))
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, FAIL, "unable to get free-space manager info message")
- /* Update changed values */
-
/* Version bounds check */
- if(H5O_fsinfo_ver_bounds[H5F_HIGH_BOUND(f)] == H5O_INVALID_VERSION ||
- fsinfo.version > H5O_fsinfo_ver_bounds[H5F_HIGH_BOUND(f)])
+ if(H5O_fsinfo_check_version(H5F_HIGH_BOUND(f), &fsinfo) < 0)
HGOTO_ERROR(H5E_FILE, H5E_BADRANGE, FAIL, "File space info message's version out of bounds")
+
+ /* Update changed values */
if(f->shared->fs_version != fsinfo.version)
f->shared->fs_version = fsinfo.version;
-
if(f->shared->fs_strategy != fsinfo.strategy) {
f->shared->fs_strategy = fsinfo.strategy;
@@ -1400,7 +1389,7 @@ H5F__super_init(H5F_t *f)
fsinfo.mapped = FALSE;
/* Set the version for the fsinfo message */
- if(H5O__fsinfo_set_version(f, &fsinfo) < 0)
+ if(H5O_fsinfo_set_version(H5F_LOW_BOUND(f), H5F_HIGH_BOUND(f), &fsinfo) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "can't set version of fsinfo")
f->shared->fs_version = fsinfo.version;
@@ -1830,44 +1819,3 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5F__super_ext_remove_msg() */
-
-/*-------------------------------------------------------------------------
- * Function: H5O__fsinfo_set_version
- *
- * Purpose: Set the version to encode the fsinfo message with.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Vailin Choi; June 2019
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5O__fsinfo_set_version(H5F_t *f, H5O_fsinfo_t *fsinfo)
-{
- unsigned version; /* Message version */
- herr_t ret_value = SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(FAIL)
-
- /* Sanity check */
- HDassert(f);
- HDassert(fsinfo);
-
- version = H5O_FSINFO_VERSION_1;
-
- /* Upgrade to the version indicated by the file's low bound if higher */
- if(H5O_fsinfo_ver_bounds[H5F_LOW_BOUND(f)] != H5O_INVALID_VERSION)
- version = MAX(version, H5O_fsinfo_ver_bounds[H5F_LOW_BOUND(f)]);
-
- /* Version bounds check */
- if(H5O_fsinfo_ver_bounds[H5F_HIGH_BOUND(f)] == H5O_INVALID_VERSION ||
- version > H5O_fsinfo_ver_bounds[H5F_HIGH_BOUND(f)])
- HGOTO_ERROR(H5E_DATASET, H5E_BADRANGE, FAIL, "File space info message's version out of bounds")
-
- /* Set the message version */
- fsinfo->version = version;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5O__fsinfo_set_version() */