Merge branch 'develop' into hdf5_1_10.sync

This commit is contained in:
M. Scot Breitenfeld 2018-05-23 17:15:13 -05:00
commit e8eb130ce6
3 changed files with 41 additions and 48 deletions

View File

@ -62,9 +62,6 @@ For more information see USING_CMake_Examples.txt in the install folder.
=========================================================================== ===========================================================================
Documentation for this release can be found at the following URL: Documentation for this release can be found at the following URL:
http://www.hdfgroup.org/HDF5/doc/. https://portal.hdfgroup.org/display/support
See the HDF5 home page for further details:
http://hdfgroup.org/HDF5/
Bugs should be reported to help@hdfgroup.org. Bugs should be reported to help@hdfgroup.org.

View File

@ -15,9 +15,9 @@ NOTE: Building applications with the dynamic/shared hdf5 libraries requires
The following two sections are helpful if you do not use CMake to build The following two sections are helpful if you do not use CMake to build
your applications. your applications.
======================================================================== ==============================================================================================
Using Visual Studio 2010 with HDF5 Libraries built with Visual Studio 2010 Using Visual Studio 2010 and above with HDF5 Libraries built with Visual Studio 2010 and above
======================================================================== ==============================================================================================
1. Set up path for external libraries and headers 1. Set up path for external libraries and headers
@ -79,13 +79,9 @@ Using Visual Studio 2008 with HDF5 Libraries built with Visual Studio 2008
3.1 FAQ 3.1 FAQ
Many other common questions and hints are located online and being updated Many other common questions and hints are located online and being updated
in the HDF5 FAQ. For Windows-specific questions, please see: in the HDF Knowledge Base, please see:
https://support.hdfgroup.org/HDF5/faq/windows.html https://portal.hdfgroup.org/display/knowledge/HDF+Knowledge+Base
For all other general questions, you can look in the general FAQ:
https://support.hdfgroup.org/HDF5/HDF5-FAQ.html
************************************************************************ ************************************************************************
Please send email to help@hdfgroup.org for further assistance. Please send email to help@hdfgroup.org for further assistance.

View File

@ -510,7 +510,7 @@ H5F__build_name(const char *prefix, const char *file_name, char **full_name/*out
/* Compose the full file name */ /* Compose the full file name */
HDsnprintf(*full_name, (prefix_len + fname_len + 2), "%s%s%s", prefix, HDsnprintf(*full_name, (prefix_len + fname_len + 2), "%s%s%s", prefix,
(H5_CHECK_DELIMITER(prefix[prefix_len - 1]) ? "" : H5_DIR_SEPS), file_name); ((prefix_len == 0 || H5_CHECK_DELIMITER(prefix[prefix_len - 1])) ? "" : H5_DIR_SEPS), file_name);
done: done:
FUNC_LEAVE_NOAPI(ret_value) FUNC_LEAVE_NOAPI(ret_value)
@ -1343,8 +1343,8 @@ H5F__dest(H5F_t *f, hbool_t flush)
* Return: Success: Non-NULL, pointer to new file object. * Return: Success: Non-NULL, pointer to new file object.
* Failure: NULL * Failure: NULL
* *
* Programmer: Quincey Koziol * Programmer: Quincey Koziol
* December 13, 2017 * December 13, 2017
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -1379,8 +1379,8 @@ done:
* Return: Success: Non-NULL, pointer to new file object. * Return: Success: Non-NULL, pointer to new file object.
* Failure: NULL * Failure: NULL
* *
* Programmer: Quincey Koziol * Programmer: Quincey Koziol
* December 13, 2017 * December 13, 2017
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -1881,8 +1881,8 @@ H5F__flush_phase2(H5F_t *f, hbool_t closing)
#ifdef H5_HAVE_PARALLEL #ifdef H5_HAVE_PARALLEL
if(H5F_HAS_FEATURE(f, H5FD_FEAT_HAS_MPI)) if(H5F_HAS_FEATURE(f, H5FD_FEAT_HAS_MPI))
/* Since we just returned from a call to H5AC_flush(), we just /* Since we just returned from a call to H5AC_flush(), we just
* passed through a barrier. Hence we can skip the barrier on * passed through a barrier. Hence we can skip the barrier on
* entry to the mpio file driver truncate call below, and the first * entry to the mpio file driver truncate call below, and the first
* barrier in the following call to flush the cache again. * barrier in the following call to flush the cache again.
*/ */
@ -1967,8 +1967,8 @@ H5F__flush_real(H5F_t *f)
* *
* Return: Non-negative on success / Negative on failure * Return: Non-negative on success / Negative on failure
* *
* Programmer: Quincey Koziol * Programmer: Quincey Koziol
* December 13, 2017 * December 13, 2017
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -2792,19 +2792,19 @@ H5F__set_libver_bounds(H5F_t *f, H5F_libver_t low, H5F_libver_t high)
* metadata entry class changes when the file format low / high * metadata entry class changes when the file format low / high
* bounds are changed and an unwritten entry of that class is * bounds are changed and an unwritten entry of that class is
* sitting in the metadata cache. * sitting in the metadata cache.
* *
* If that happens, it's possible that the entry's size could * If that happens, it's possible that the entry's size could
* become larger, potentially corrupting the file (if the larger * become larger, potentially corrupting the file (if the larger
* entry is fully written, overwriting data outside its allocated * entry is fully written, overwriting data outside its allocated
* space), or corrupting the entry (if the entry is truncated to * space), or corrupting the entry (if the entry is truncated to
* fit into the allocated space). * fit into the allocated space).
* *
* Although I'm not aware of any metadata with this behavior * Although I'm not aware of any metadata with this behavior
* currently, it would be very difficult to guard against and / or * currently, it would be very difficult to guard against and / or
* detect, but if we flush everything here, the format version * detect, but if we flush everything here, the format version
* for metadata entries in the cache will be finalized and these * for metadata entries in the cache will be finalized and these
* sorts of problems can be avoided. * sorts of problems can be avoided.
* *
* QAK - April, 2018 * QAK - April, 2018
*/ */
if(H5F__flush_real(f) < 0) if(H5F__flush_real(f) < 0)
@ -3635,7 +3635,7 @@ done:
herr_t herr_t
H5F__format_convert(H5F_t *f) H5F__format_convert(H5F_t *f)
{ {
hbool_t mark_dirty = FALSE; /* Whether to mark the file's superblock dirty */ hbool_t mark_dirty = FALSE; /* Whether to mark the file's superblock dirty */
herr_t ret_value = SUCCEED; /* Return value */ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE_VOL FUNC_ENTER_PACKAGE_VOL
@ -3646,39 +3646,39 @@ H5F__format_convert(H5F_t *f)
/* Check if the superblock should be downgraded */ /* Check if the superblock should be downgraded */
if(f->shared->sblock->super_vers > HDF5_SUPERBLOCK_VERSION_V18_LATEST) { if(f->shared->sblock->super_vers > HDF5_SUPERBLOCK_VERSION_V18_LATEST) {
f->shared->sblock->super_vers = HDF5_SUPERBLOCK_VERSION_V18_LATEST; f->shared->sblock->super_vers = HDF5_SUPERBLOCK_VERSION_V18_LATEST;
mark_dirty = TRUE; mark_dirty = TRUE;
} /* end if */ } /* end if */
/* Check for persistent freespace manager, which needs to be downgraded */ /* Check for persistent freespace manager, which needs to be downgraded */
if(!(f->shared->fs_strategy == H5F_FILE_SPACE_STRATEGY_DEF && if(!(f->shared->fs_strategy == H5F_FILE_SPACE_STRATEGY_DEF &&
f->shared->fs_persist == H5F_FREE_SPACE_PERSIST_DEF && f->shared->fs_persist == H5F_FREE_SPACE_PERSIST_DEF &&
f->shared->fs_threshold == H5F_FREE_SPACE_THRESHOLD_DEF && f->shared->fs_threshold == H5F_FREE_SPACE_THRESHOLD_DEF &&
f->shared->fs_page_size == H5F_FILE_SPACE_PAGE_SIZE_DEF)) { f->shared->fs_page_size == H5F_FILE_SPACE_PAGE_SIZE_DEF)) {
/* Check to remove free-space manager info message from superblock extension */ /* Check to remove free-space manager info message from superblock extension */
if(H5F_addr_defined(f->shared->sblock->ext_addr)) if(H5F_addr_defined(f->shared->sblock->ext_addr))
if(H5F__super_ext_remove_msg(f, H5O_FSINFO_ID) < 0) if(H5F__super_ext_remove_msg(f, H5O_FSINFO_ID) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "error in removing message from superblock extension") HGOTO_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "error in removing message from superblock extension")
/* Close freespace manager */ /* Close freespace manager */
if(H5MF_try_close(f) < 0) if(H5MF_try_close(f) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "unable to free free-space address") HGOTO_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "unable to free free-space address")
/* Set non-persistent freespace manager */ /* Set non-persistent freespace manager */
f->shared->fs_strategy = H5F_FILE_SPACE_STRATEGY_DEF; f->shared->fs_strategy = H5F_FILE_SPACE_STRATEGY_DEF;
f->shared->fs_persist = H5F_FREE_SPACE_PERSIST_DEF; f->shared->fs_persist = H5F_FREE_SPACE_PERSIST_DEF;
f->shared->fs_threshold = H5F_FREE_SPACE_THRESHOLD_DEF; f->shared->fs_threshold = H5F_FREE_SPACE_THRESHOLD_DEF;
f->shared->fs_page_size = H5F_FILE_SPACE_PAGE_SIZE_DEF; f->shared->fs_page_size = H5F_FILE_SPACE_PAGE_SIZE_DEF;
/* Indicate that the superblock should be marked dirty */ /* Indicate that the superblock should be marked dirty */
mark_dirty = TRUE; mark_dirty = TRUE;
} /* end if */ } /* end if */
/* Check if we should mark the superblock dirty */ /* Check if we should mark the superblock dirty */
if(mark_dirty) if(mark_dirty)
/* Mark superblock as dirty */ /* Mark superblock as dirty */
if(H5F_super_dirty(f) < 0) if(H5F_super_dirty(f) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTMARKDIRTY, FAIL, "unable to mark superblock as dirty") HGOTO_ERROR(H5E_FILE, H5E_CANTMARKDIRTY, FAIL, "unable to mark superblock as dirty")
done: done:
FUNC_LEAVE_NOAPI_VOL(ret_value) FUNC_LEAVE_NOAPI_VOL(ret_value)