2
0
mirror of https://github.com/HDFGroup/hdf5.git synced 2024-12-21 07:51:46 +08:00

Merging in latest from upstream (HDFFV/hdf5:refs/heads/hdf5_1_10)

* commit '6387f7099d22c66dab415c57f9fd547eb86e4ad5':
  Small corrections to DOPYING file.
  Add new file COPYING_LBNL_HDF5.
  Revert "Clear hdf5 1.10 entries from RELEASE.txt in the develop branch.  Entries"
  Add LBNL license file and modify COPYING file accordingly.
  Omnibus checkin for several relatively minor modifications:
This commit is contained in:
Allen Byrne 2017-04-03 09:23:33 -05:00
commit dd2749d1be
11 changed files with 997 additions and 95 deletions

17
COPYING
View File

@ -1,13 +1,12 @@
Copyright Notice and License Terms for
HDF5 (Hierarchical Data Format 5) Software Library and Utilities
-----------------------------------------------------------------------------
HDF5 (Hierarchical Data Format 5) Software Library and Utilities
Copyright 2006-2016 by The HDF Group.
Copyright (c) 2006, The HDF Group.
NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities
Copyright 1998-2006 by the Board of Trustees of the University of Illinois.
Copyright (c) 1998-2006, The Board of Trustees of the University of Illinois.
All rights reserved.
@ -47,13 +46,21 @@ advised of the possibility of such damage.
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
Limited portions of HDF5 were developed by Lawrence Berkeley National
Laboratory (LBNL). LBNL's Copyright Notice and Licensing Terms can be
found here: COPYING_LBNL_HDF5 file in this directory or at
https://support.hdfgroup.org/ftp/HDF5/releases/COPYING_LBNL_HDF5.
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
Contributors: National Center for Supercomputing Applications (NCSA) at
the University of Illinois, Fortner Software, Unidata Program Center (netCDF),
The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip),
and Digital Equipment Corporation (DEC).
-----------------------------------------------------------------------------
Portions of HDF5 were developed with support from the Lawrence Berkeley
National Laboratory (LBNL) and the United States Department of Energy
under Prime Contract No. DE-AC02-05CH11231.
@ -92,7 +99,7 @@ and/or accompanying materials:
HDF5 is available with the SZIP compression library but SZIP is not part
of HDF5 and has separate copyright and license terms. See “Szip Compression
in HDF Products” (www.hdfgroup.org/doc_resource/SZIP/) for further details.
in HDF Products” (https://support.hdfgroup.org/doc_resource/SZIP/) for further details.
-----------------------------------------------------------------------------

49
COPYING_LBNL_HDF5 Normal file
View File

@ -0,0 +1,49 @@
Copyright Notice and License Terms for
HDF5 (Hierarchical Data Format 5) Software Library and Utilities
-----------------------------------------------------------------------------
HDF5 (Hierarchical Data Format 5)
Copyright (c) 2016, The Regents of the University of California, through
Lawrence Berkeley National Laboratory (subject to receipt of any required
approvals from the U.S. Dept. of Energy).
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions, and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions, and the following disclaimer in the documentation
and/or materials provided with the distribution.
3. Neither the name of the University of California, Lawrence Berkeley
National Laboratory, U.S. Dept. of Energy nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
You are under no obligation whatsoever to provide any bug fixes, patches,
or upgrades to the features, functionality or performance of the source
code ("Enhancements") to anyone; however, if you choose to make your
Enhancements available either publicly, or directly to Lawrence Berkeley
National Laboratory, without imposing a separate written license agreement
for such Enhancements, then you hereby grant the following license:
a non-exclusive, royalty-free perpetual license to install, use, modify,
prepare derivative works, incorporate into other computer software,
distribute, and sublicense such enhancements or derivative works thereof,
in binary and source code form.

View File

@ -26,6 +26,7 @@
./.h5chkright.ini _DO_NOT_DISTRIBUTE_
./ACKNOWLEDGMENTS
./COPYING
./COPYING_LBNL_HDF5
./MANIFEST
./Makefile.dist
./Makefile.am

View File

@ -4,8 +4,8 @@ HDF5 version 1.10.2-snap0 currently under development
INTRODUCTION
This document describes the differences between HDF5-1.11.x and
HDF5 1.10.1, and contains information on the platforms tested and known problems in HDF5-1.11.x.
This document describes the differences between HDF5-1.10.0-patch1 and
HDF5 1.10.1, and contains information on the platforms tested and known problems in HDF5-1.10.1.
For more details check the HISTORY*.txt files in the HDF5 source.
@ -28,8 +28,8 @@ in 1.10.1?" document:
https://support.hdfgroup.org/HDF5/doc/ADGuide/WhatsNew1101.html
All new and modified APIs are listed in detail in the "HDF5 Software Changes
from Release to Release" document, in the section "Release 1.10.1 (current
release) versus Release 1.11.x
from Release to Release" document, in the section "Release 1.8.19 (current
release) versus Release 1.10.1
https://support.hdfgroup.org/HDF5/doc1.10/ADGuide/Changes.html
@ -42,7 +42,7 @@ CONTENTS
- New Features
- Support for new platforms and languages
- Bug Fixes since HDF5-1.10.1
- Bug Fixes since HDF5-1.10.0-patch1
- Supported Platforms
- Tested Configuration Features Summary
- More Tested Platforms
@ -54,7 +54,13 @@ New Features
Configuration:
-------------
-
- CMake minimum is now 3.2.2.
(ADB 2017/01/10)
- Tools folder is separated into source and test folders. This
allows autotools to skip the make command and just execute
the make check command.
(HDFFV-9719 ADB 2016/10/27)
Library:
--------
@ -160,7 +166,6 @@ New Features
High-Level APIs:
---------------
-
C Packet Table API
------------------
@ -177,12 +182,29 @@ Support for new platforms, languages and compilers.
=======================================
-
Bug Fixes since HDF5-1.10.1 release
Bug Fixes since HDF5-1.10.0-patch1 release
==================================
Library
-------
-
- Changed the plugins dlopen option from RTLD_NOW to RTLD_LAZY
(PR 201 ADB 2016/12/12)
- Fix error when copying dataset with attribute which is a compound datatype
consisting of a variable length string.
(HDFFV-7991 VC 2016/08/19, 2016/08/21, 2016/08/24)
- H5DOappend will not fail if a dataset has no append callback registered.
(HDFFV-9960 VC 2016/08/05, 2016/08/14)
- Fix the problem where the committed datatype's file location is different
from the file location of an attribute with that committed datatype.
(HDFFV-9940 VC 2016/07/03, 2016/07/06)
- (a) Throw an error instead of assertion when v1 btree level hits the 1 byte limit.
(b) Modifications to better handle error recovery when conversion by
h5format_convert fails.
(HDFFV-9434 VC 2016/05/29)
- Fix error when copying dataset with attribute which is a compound datatype
consisting of a variable length string.
@ -202,7 +224,18 @@ Bug Fixes since HDF5-1.10.1 release
Configuration
-------------
-
- Configuration will check for the strtoll and strtoull functions
before using alternatives
(PR 340 ADB 2017/03/17)
- CMake uses a Windows pdb directory variable if available and
will generate both static and shared pdb files.
(HDFFV-9875 ADB 2017/02/06)
- CMake now builds shared versions of tools.
(HDFFV-10123 ADB 2017/02/01)
Performance
-------------
-
@ -212,7 +245,11 @@ Bug Fixes since HDF5-1.10.1 release
Tools
-----
-
- h5diff correctly ignores strpad in comparing strings.
(HDFFV-10128 ADB 2017/03/03)
- h5repack now correctly parses the command line filter options.
(HDFFV-10046 ADB 2017/01/24)
High-Level APIs:
------

View File

@ -738,9 +738,10 @@ H5C_stats(H5C_t * cache_ptr,
(long long)(cache_ptr->index_scan_restarts));
HDfprintf(stdout,
"%s cache image creations/loads/size = %d / %d / %Hu\n",
"%s cache image creations/reads/loads/size = %d / %d /%d / %Hu\n",
cache_ptr->prefix,
cache_ptr->images_created,
cache_ptr->images_read,
cache_ptr->images_loaded,
cache_ptr->last_image_size);
@ -993,6 +994,7 @@ H5C_stats__reset(H5C_t H5_ATTR_UNUSED * cache_ptr)
cache_ptr->index_scan_restarts = 0;
cache_ptr->images_created = 0;
cache_ptr->images_read = 0;
cache_ptr->images_loaded = 0;
cache_ptr->last_image_size = (hsize_t)0;

View File

@ -122,7 +122,7 @@ static H5C_cache_entry_t *H5C__reconstruct_cache_entry(const H5F_t *f,
H5C_t *cache_ptr, const uint8_t **buf);
static herr_t H5C__write_cache_image_superblock_msg(H5F_t *f, hid_t dxpl_id,
hbool_t create);
static herr_t H5C__read_cache_image(H5F_t * f, hid_t dxpl_id, const H5C_t *cache_ptr);
static herr_t H5C__read_cache_image(H5F_t * f, hid_t dxpl_id, H5C_t *cache_ptr);
static herr_t H5C__write_cache_image(H5F_t *f, hid_t dxpl_id, const H5C_t *cache_ptr);
static herr_t H5C__construct_cache_image_buffer(H5F_t *f, H5C_t *cache_ptr);
static herr_t H5C__free_image_entries_array(H5C_t *cache_ptr);
@ -1035,7 +1035,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
H5C__read_cache_image(H5F_t *f, hid_t dxpl_id, const H5C_t *cache_ptr)
H5C__read_cache_image(H5F_t *f, hid_t dxpl_id, H5C_t *cache_ptr)
{
herr_t ret_value = SUCCEED; /* Return value */
@ -1053,31 +1053,53 @@ H5C__read_cache_image(H5F_t *f, hid_t dxpl_id, const H5C_t *cache_ptr)
H5AC_aux_t *aux_ptr = (H5AC_aux_t *)cache_ptr->aux_ptr;
int mpi_result;
if((NULL == aux_ptr) || (aux_ptr->mpi_rank == 0)) {
HDassert((NULL == aux_ptr) || (aux_ptr->magic == H5AC__H5AC_AUX_T_MAGIC));
if ( ( NULL == aux_ptr ) || ( aux_ptr->mpi_rank == 0 ) ) {
HDassert((NULL == aux_ptr) ||
(aux_ptr->magic == H5AC__H5AC_AUX_T_MAGIC));
#endif /* H5_HAVE_PARALLEL */
/* Read the buffer (if serial access, or rank 0 of parallel access) */
if(H5F_block_read(f, H5FD_MEM_SUPER, cache_ptr->image_addr, cache_ptr->image_len, dxpl_id, cache_ptr->image_buffer) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_READERROR, FAIL, "Can't read metadata cache image block")
if ( H5F_block_read(f, H5FD_MEM_SUPER, cache_ptr->image_addr,
cache_ptr->image_len, dxpl_id,
cache_ptr->image_buffer) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_READERROR, FAIL, \
"Can't read metadata cache image block")
H5C__UPDATE_STATS_FOR_CACHE_IMAGE_READ(cache_ptr)
#ifdef H5_HAVE_PARALLEL
if(aux_ptr) {
if ( aux_ptr ) {
/* Broadcast cache image */
if(MPI_SUCCESS != (mpi_result = MPI_Bcast(cache_ptr->image_buffer, (int)cache_ptr->image_len, MPI_BYTE, 0, aux_ptr->mpi_comm)))
if ( MPI_SUCCESS !=
(mpi_result = MPI_Bcast(cache_ptr->image_buffer,
(int)cache_ptr->image_len, MPI_BYTE,
0, aux_ptr->mpi_comm)) )
HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mpi_result)
} /* end if */
} /* end if */
else if(aux_ptr) {
else if ( aux_ptr ) {
/* Retrieve the contents of the metadata cache image from process 0 */
if(MPI_SUCCESS != (mpi_result = MPI_Bcast(cache_ptr->image_buffer, (int)cache_ptr->image_len, MPI_BYTE, 0, aux_ptr->mpi_comm)))
HMPI_GOTO_ERROR(FAIL, "can't receive cache image MPI_Bcast", mpi_result)
if ( MPI_SUCCESS !=
(mpi_result = MPI_Bcast(cache_ptr->image_buffer,
(int)cache_ptr->image_len, MPI_BYTE,
0, aux_ptr->mpi_comm)) )
HMPI_GOTO_ERROR(FAIL, "can't receive cache image MPI_Bcast", \
mpi_result)
} /* end else-if */
} /* end block */
#endif /* H5_HAVE_PARALLEL */
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__read_cache_image() */
@ -3203,26 +3225,31 @@ H5C__reconstruct_cache_contents(H5F_t *f, hid_t dxpl_id, H5C_t *cache_ptr)
i = -1;
entry_ptr = cache_ptr->LRU_head_ptr;
while(entry_ptr != NULL) {
HDassert(entry_ptr->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC);
HDassert(entry_ptr->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC);
HDassert(entry_ptr->type != NULL);
if(entry_ptr->prefetched) {
HDassert(i <= entry_ptr->lru_rank);
HDassert((entry_ptr->lru_rank <= 2) ||
(entry_ptr->lru_rank == i + 1) ||
(entry_ptr->lru_rank == i + 2));
if ( entry_ptr->prefetched ) {
if((entry_ptr->lru_rank <= 2) && (entry_ptr->lru_rank == i + 2))
lru_rank_holes++;
HDassert(entry_ptr->lru_rank != 0);
HDassert((entry_ptr->lru_rank == -1) ||
(entry_ptr->lru_rank > i));
i = entry_ptr->lru_rank;
} /* end if */
if ( ( entry_ptr->lru_rank > 1 ) &&
( entry_ptr->lru_rank > i + 1 ) )
entry_ptr = entry_ptr->next;
lru_rank_holes += entry_ptr->lru_rank - (i + 1);
i = entry_ptr->lru_rank;
} /* end if */
entry_ptr = entry_ptr->next;
} /* end while */
/* Holes of size 1 appear in the LRU ranking due to epoch
/* Holes in the sequences of LRU ranks can appear due to epoch
* markers. They are left in to allow re-insertion of the
* epoch markers on reconstruction of the cache -- thus
* the following sanity check will have to be revised when

View File

@ -686,6 +686,13 @@ if ( ( ( ( (head_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \
(cache_ptr)->images_created++; \
}
#define H5C__UPDATE_STATS_FOR_CACHE_IMAGE_READ(cache_ptr) \
{ \
/* make sure image len is still good */ \
HDassert((cache_ptr)->image_len > 0); \
(cache_ptr)->images_read++; \
}
#define H5C__UPDATE_STATS_FOR_CACHE_IMAGE_LOAD(cache_ptr) \
{ \
/* make sure image len is still good */ \
@ -931,6 +938,7 @@ if ( ( ( ( (head_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \
#define H5C__UPDATE_STATS_FOR_LRU_SCAN_RESTART(cache_ptr)
#define H5C__UPDATE_STATS_FOR_INDEX_SCAN_RESTART(cache_ptr)
#define H5C__UPDATE_STATS_FOR_CACHE_IMAGE_CREATE(cache_ptr)
#define H5C__UPDATE_STATS_FOR_CACHE_IMAGE_READ(cache_ptr)
#define H5C__UPDATE_STATS_FOR_CACHE_IMAGE_LOAD(cache_ptr)
#define H5C__UPDATE_STATS_FOR_PREFETCH(cache_ptr, dirty)
#define H5C__UPDATE_STATS_FOR_PREFETCH_HIT(cache_ptr)
@ -4549,6 +4557,18 @@ typedef struct H5C_tag_info_t {
* Further, since cache images are only created at file
* close, this field should only be set at that time.
*
* images_read: Integer field containing the number of cache images
* read from file. Note that reading an image is different
* from loading it -- reading the image means just that,
* while loading the image refers to decoding it and loading
* it into the metadata cache.
*
* In the serial case, image_read should always equal
* images_loaded. However, in the parallel case, the
* image should only be read by process 0. All other
* processes should receive the cache image via a broadcast
* from process 0.
*
* images_loaded: Integer field containing the number of cache images
* loaded since the last time statistics were reset.
*
@ -4864,6 +4884,7 @@ struct H5C_t {
/* Fields for tracking cache image operations */
int32_t images_created;
int32_t images_read;
int32_t images_loaded;
hsize_t last_image_size;

View File

@ -58,8 +58,18 @@
typedef struct {
H5F_t * f; /* File pointer for evicting entry */
hid_t dxpl_id; /* DXPL for evicting entry */
hbool_t evicted_entries_last_pass; /* Flag to indicate that an entry was evicted when iterating over cache */
hbool_t pinned_entries_need_evicted; /* Flag to indicate that a pinned entry was attempted to be evicted */
hbool_t evicted_entries_last_pass; /* Flag to indicate that an entry
* was evicted when iterating over
* cache
*/
hbool_t pinned_entries_need_evicted;/* Flag to indicate that a pinned
* entry was attempted to be evicted
*/
hbool_t skipped_pf_dirty_entries; /* Flag indicating that one or more
* entries marked prefetched_dirty
* were encountered and not
* evicted.
*/
} H5C_tag_iter_evict_ctx_t;
/* Typedef for tagged entry iterator callback context - expunge tag type metadata */
@ -470,7 +480,9 @@ H5C__evict_tagged_entries_cb(H5C_cache_entry_t *entry, void *_ctx)
if(H5C__flush_single_entry(ctx->f, ctx->dxpl_id, entry, H5C__FLUSH_INVALIDATE_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG | H5C__DEL_FROM_SLIST_ON_DESTROY_FLAG) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, H5_ITER_ERROR, "Entry eviction failed.")
ctx->evicted_entries_last_pass = TRUE;
} /* end else */
} else {
ctx->skipped_pf_dirty_entries = TRUE;
}
done:
FUNC_LEAVE_NOAPI(ret_value)
@ -516,6 +528,7 @@ H5C_evict_tagged_entries(H5F_t * f, hid_t dxpl_id, haddr_t tag, hbool_t match_gl
/* Reset pinned/evicted tracking flags */
ctx.pinned_entries_need_evicted = FALSE;
ctx.evicted_entries_last_pass = FALSE;
ctx.skipped_pf_dirty_entries = FALSE;
/* Iterate through entries in the cache */
if(H5C__iter_tagged_entries(cache, tag, match_global, H5C__evict_tagged_entries_cb, &ctx) < 0)
@ -524,8 +537,32 @@ H5C_evict_tagged_entries(H5F_t * f, hid_t dxpl_id, haddr_t tag, hbool_t match_gl
/* Keep doing this until we have stopped evicted entries */
} while(TRUE == ctx.evicted_entries_last_pass);
/* Fail if we have finished evicting entries and pinned entries still need evicted */
if(ctx.pinned_entries_need_evicted)
/* In most cases, fail if we have finished evicting entries and pinned
* entries still need evicted
*
* However, things can get strange if the file was opened R/O and
* the file contains a cache image and the cache image contains dirty
* entries.
*
* Since the file was opened read only, dirty entries in the cache
* image were marked as clean when they were inserted into the metadata
* cache. This is necessary, as if they are marked dirty, the metadata
* cache will attempt to write them on file close, which is frowned
* upon when the file is opened R/O.
*
* On the other hand, such entries (marked prefetched_dirty) must not
* be evicted, as should the cache be asked to re-load them, the cache
* will attempt to read them from the file, and at best load an outdated
* version.
*
* To avoid this, H5C__evict_tagged_entries_cb has been modified to
* skip such entries. However, by doing so, it may prevent pinned
* entries from becoming unpinned.
*
* Thus we must ignore ctx.pinned_entries_need_evicted if
* ctx.skipped_pf_dirty_entries is TRUE.
*/
if((!ctx.skipped_pf_dirty_entries) && (ctx.pinned_entries_need_evicted))
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Pinned entries still need evicted?!")
done:

View File

@ -35,7 +35,7 @@ static void create_datasets(hid_t file_id, int min_dset, int max_dset);
static void delete_datasets(hid_t file_id, int min_dset, int max_dset);
static void open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected,
hbool_t read_only, hbool_t set_mdci_fapl, hbool_t config_fsm,
const char *hdf_file_name, unsigned cache_image_flags,
hbool_t set_eoc, const char *hdf_file_name, unsigned cache_image_flags,
hid_t *file_id_ptr, H5F_t **file_ptr_ptr, H5C_t **cache_ptr_ptr);
static void attempt_swmr_open_hdf5_file(hbool_t create_file,
hbool_t set_mdci_fapl, const char *hdf_file_name);
@ -62,6 +62,7 @@ static unsigned cache_image_api_error_check_3(void);
static unsigned cache_image_api_error_check_4(void);
static unsigned get_free_sections_test(void);
static unsigned evict_on_close_test(void);
/****************************************************************************/
@ -535,7 +536,7 @@ delete_datasets(hid_t file_id, int min_dset, int max_dset)
static void
open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected,
hbool_t read_only, hbool_t set_mdci_fapl, hbool_t config_fsm,
const char *hdf_file_name, unsigned cache_image_flags,
hbool_t set_eoc, const char *hdf_file_name, unsigned cache_image_flags,
hid_t *file_id_ptr, H5F_t ** file_ptr_ptr, H5C_t ** cache_ptr_ptr)
{
const char * fcn_name = "open_hdf5_file()";
@ -601,7 +602,8 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected,
/* call H5Pset_libver_bounds() on the fapl_id */
if ( pass ) {
if ( H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0 ) {
if ( H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST,
H5F_LIBVER_LATEST) < 0 ) {
pass = FALSE;
failure_mssg = "H5Pset_libver_bounds() failed.\n";
@ -667,7 +669,8 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected,
}
if ( ( pass ) && ( config_fsm ) ) {
if(H5Pset_file_space_strategy(fcpl_id, H5F_FSPACE_STRATEGY_PAGE, TRUE, (hsize_t)1) < 0) {
if(H5Pset_file_space_strategy(fcpl_id, H5F_FSPACE_STRATEGY_PAGE,
TRUE, (hsize_t)1) < 0) {
pass = FALSE;
failure_mssg = "H5Pset_file_space_strategy() failed.";
}
@ -675,6 +678,18 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected,
if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
/* set evict on close if indicated */
if ( ( pass ) && ( set_eoc ) ) {
if ( H5Pset_evict_on_close(fapl_id, TRUE) < 0 ) {
pass = FALSE;
failure_mssg = "H5Pset_evict_on_close() failed.";
}
}
if ( show_progress ) HDfprintf(stdout, "%s: cp = %d.\n", fcn_name, cp++);
/* open the file */
if ( pass ) {
@ -682,10 +697,12 @@ open_hdf5_file(hbool_t create_file, hbool_t mdci_sbem_expected,
if ( fcpl_id != -1 )
file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC, fcpl_id, fapl_id);
file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC,
fcpl_id, fapl_id);
else
file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
file_id = H5Fcreate(hdf_file_name, H5F_ACC_TRUNC,
H5P_DEFAULT, fapl_id);
} else {
@ -1362,6 +1379,7 @@ check_cache_image_ctl_flow_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -1415,6 +1433,7 @@ check_cache_image_ctl_flow_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -1476,6 +1495,7 @@ check_cache_image_ctl_flow_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -1637,6 +1657,7 @@ check_cache_image_ctl_flow_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -1679,6 +1700,7 @@ check_cache_image_ctl_flow_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -1718,6 +1740,7 @@ check_cache_image_ctl_flow_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -1894,6 +1917,7 @@ check_cache_image_ctl_flow_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -1935,6 +1959,7 @@ check_cache_image_ctl_flow_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -1988,6 +2013,7 @@ check_cache_image_ctl_flow_3(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2041,6 +2067,7 @@ check_cache_image_ctl_flow_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2091,6 +2118,7 @@ check_cache_image_ctl_flow_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2260,6 +2288,7 @@ check_cache_image_ctl_flow_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2301,6 +2330,7 @@ check_cache_image_ctl_flow_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -2343,6 +2373,7 @@ check_cache_image_ctl_flow_4(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2385,6 +2416,7 @@ check_cache_image_ctl_flow_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2424,6 +2456,7 @@ check_cache_image_ctl_flow_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2589,6 +2622,7 @@ check_cache_image_ctl_flow_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -2648,6 +2682,7 @@ check_cache_image_ctl_flow_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -2700,6 +2735,7 @@ check_cache_image_ctl_flow_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -2867,6 +2903,7 @@ check_cache_image_ctl_flow_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -2915,6 +2952,7 @@ check_cache_image_ctl_flow_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__GEN_MDCI_SBE_MESG,
/* file_id_ptr */ &file_id,
@ -2957,6 +2995,7 @@ check_cache_image_ctl_flow_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3149,6 +3188,7 @@ cache_image_smoke_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -3215,6 +3255,7 @@ cache_image_smoke_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3280,6 +3321,7 @@ cache_image_smoke_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3346,6 +3388,7 @@ cache_image_smoke_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -3388,6 +3431,7 @@ cache_image_smoke_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3567,6 +3611,7 @@ cache_image_smoke_check_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -3630,6 +3675,7 @@ cache_image_smoke_check_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3675,6 +3721,7 @@ cache_image_smoke_check_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3865,6 +3912,7 @@ cache_image_smoke_check_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -3927,6 +3975,7 @@ cache_image_smoke_check_3(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -3992,6 +4041,7 @@ cache_image_smoke_check_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -4055,6 +4105,7 @@ cache_image_smoke_check_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -4248,6 +4299,7 @@ cache_image_smoke_check_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -4312,6 +4364,7 @@ cache_image_smoke_check_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -4379,6 +4432,7 @@ cache_image_smoke_check_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -4442,6 +4496,7 @@ cache_image_smoke_check_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -4493,7 +4548,6 @@ cache_image_smoke_check_4(void)
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 13) Delete the file */
@ -4653,6 +4707,7 @@ cache_image_smoke_check_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -4742,6 +4797,7 @@ cache_image_smoke_check_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -4842,6 +4898,7 @@ cache_image_smoke_check_5(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -4893,6 +4950,7 @@ cache_image_smoke_check_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -4953,6 +5011,7 @@ cache_image_smoke_check_5(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -5161,6 +5220,7 @@ cache_image_smoke_check_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -5225,6 +5285,7 @@ cache_image_smoke_check_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -5303,6 +5364,7 @@ cache_image_smoke_check_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -5362,6 +5424,7 @@ cache_image_smoke_check_6(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -5559,6 +5622,7 @@ cache_image_api_error_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -5619,6 +5683,7 @@ cache_image_api_error_check_1(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -5681,6 +5746,7 @@ cache_image_api_error_check_1(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -5744,6 +5810,7 @@ cache_image_api_error_check_1(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -5931,6 +5998,7 @@ cache_image_api_error_check_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -5991,6 +6059,7 @@ cache_image_api_error_check_2(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -6053,6 +6122,7 @@ cache_image_api_error_check_2(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ 0,
/* file_id_ptr */ &file_id,
@ -6116,6 +6186,7 @@ cache_image_api_error_check_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -6177,6 +6248,7 @@ cache_image_api_error_check_2(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -6337,6 +6409,7 @@ cache_image_api_error_check_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -6422,6 +6495,7 @@ cache_image_api_error_check_3(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -6743,6 +6817,7 @@ cache_image_api_error_check_4(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -6997,6 +7072,7 @@ cache_image_api_error_check_4(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -7209,6 +7285,7 @@ get_free_sections_test(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -7274,6 +7351,7 @@ get_free_sections_test(void)
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -7398,6 +7476,7 @@ get_free_sections_test(void)
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
@ -7564,6 +7643,379 @@ get_free_sections_test(void)
} /* get_free_sections_test() */
/*-------------------------------------------------------------------------
* Function: evict_on_close_test()
*
* Purpose: If a file containing a cache image which in turn
* contains dirty entries is opened R/O, the metadata
* cache must refuse to evict the dirty entries, as
* it will not be able to reload them from file. This
* is a bit tricky, as the dirty entries must marked as
* clean in the metadata cache so that the MDC will not
* attempt to flush then on file close.
*
* The objective of this test is to verify that the
* metadata will not evict dirty entries in the above
* context when the file is opened with the evict on close
* FAPL entry.
*
* Do this by creating a HDF5 file with a cache image
* containing dirty metadata.
*
* Then close the file, re-open it R/O, and scan its
* contents twice. If evict on close succeeds in evicting
* the dirty metadata, the second scan will fail, as valid
* versions of the dirty metadata will not be available.
*
* To make the test more useful, enable persistant free
* space managers.
*
* The test is set up as follows:
*
* 1) Create a HDF5 file without a cache image requested
* and persistant free space managers enabled.
*
* 2) Create some data sets and verify them.
*
* 3) Close the file.
*
* 4) Open the file R/W, and with cache image requested.
*
* 5) Verify the datasets created in 2) above. This will
* force their (clean) metadata into the metadata cache,
* and hence into the cache image.
*
* 6) Create some more datasets.
*
* 7) Close the file.
*
* 8) Open the file R/O and with evict on close enabled.
*
* 9) Verify all datasets twice.
*
* 10) Close the file.
*
* 11) Open the file R/W and with evict on close enabled.
*
* 12) Verify all datasets twice.
*
* 13) Close the file.
*
* 14) Discard the file.
*
* Return: void
*
* Programmer: John Mainzer
* 3/23/17
*
*-------------------------------------------------------------------------
*/
static unsigned
evict_on_close_test(void)
{
const char * fcn_name = "evict_on_close_test()";
char filename[512];
hbool_t show_progress = FALSE;
hbool_t verbose = FALSE;
hid_t file_id = -1;
H5F_t *file_ptr = NULL;
H5C_t *cache_ptr = NULL;
int cp = 0;
TESTING("Cache image / evict on close interaction");
pass = TRUE;
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* setup the file name */
if ( pass ) {
if ( h5_fixname(FILENAMES[0], H5P_DEFAULT, filename, sizeof(filename))
== NULL ) {
pass = FALSE;
failure_mssg = "h5_fixname() failed.\n";
}
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 1) Create a HDF5 file without a cache image requested
* and persistant free space managers enabled.
*/
if ( pass ) {
open_hdf5_file(/* create_file */ TRUE,
/* mdci_sbem_expected */ FALSE,
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ TRUE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
/* file_ptr_ptr */ &file_ptr,
/* cache_ptr_ptr */ &cache_ptr);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 2) Create some data sets and verify them. */
if ( pass ) {
create_datasets(file_id, 1, 10);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
if ( pass ) {
verify_datasets(file_id, 1, 10);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 3) Close the file. */
if ( pass ) {
if ( H5Fclose(file_id) < 0 ) {
pass = FALSE;
failure_mssg = "H5Fclose() failed (1).\n";
}
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 4) Open the file R/W, and with cache image requested. */
if ( pass ) {
open_hdf5_file(/* create_file */ FALSE,
/* mdci_sbem_expected */ FALSE,
/* read_only */ FALSE,
/* set_mdci_fapl */ TRUE,
/* config_fsm */ FALSE,
/* set_eoc */ FALSE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
/* file_ptr_ptr */ &file_ptr,
/* cache_ptr_ptr */ &cache_ptr);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 5) Verify the datasets created in 2) above. This will
* force their (clean) metadata into the metadata cache,
* and hence into the cache image.
*/
if ( pass ) {
verify_datasets(file_id, 1, 10);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 6) Create some more datasets and verify them */
if ( pass ) {
create_datasets(file_id, 11, 20);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
if ( pass ) {
verify_datasets(file_id, 11, 20);
}
if ( verbose ) {
HDassert(cache_ptr);
HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC);
HDfprintf(stdout, "index size / index dirty size = %lld / %lld\n",
(long long)(cache_ptr->index_size),
(long long)(cache_ptr->dirty_index_size));
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 7) Close the file. */
if ( pass ) {
if ( H5Fclose(file_id) < 0 ) {
pass = FALSE;
failure_mssg = "H5Fclose() failed (2).\n";
}
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 8) Open the file R/O and with evict on close enabled. */
if ( pass ) {
open_hdf5_file(/* create_file */ FALSE,
/* mdci_sbem_expected */ TRUE,
/* read_only */ TRUE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ TRUE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
/* file_ptr_ptr */ &file_ptr,
/* cache_ptr_ptr */ &cache_ptr);
}
if ( show_progress )
HDfprintf(stdout, "%s*: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 9) Verify all datasets twice */
if ( pass ) {
verify_datasets(file_id, 1, 20);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
if ( pass ) {
verify_datasets(file_id, 1, 20);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 10) Close the file. */
if ( pass ) {
if ( H5Fclose(file_id) < 0 ) {
pass = FALSE;
failure_mssg = "H5Fclose() failed (3).\n";
}
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 11) Open the file R/w and with evict on close enabled. */
if ( pass ) {
open_hdf5_file(/* create_file */ FALSE,
/* mdci_sbem_expected */ TRUE,
/* read_only */ FALSE,
/* set_mdci_fapl */ FALSE,
/* config_fsm */ FALSE,
/* set_eoc */ TRUE,
/* hdf_file_name */ filename,
/* cache_image_flags */ H5C_CI__ALL_FLAGS,
/* file_id_ptr */ &file_id,
/* file_ptr_ptr */ &file_ptr,
/* cache_ptr_ptr */ &cache_ptr);
}
if ( show_progress )
HDfprintf(stdout, "%s*: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 12) Verify all datasets twice */
if ( pass ) {
verify_datasets(file_id, 1, 20);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
if ( pass ) {
verify_datasets(file_id, 1, 20);
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 13) Close the file. */
if ( pass ) {
if ( H5Fclose(file_id) < 0 ) {
pass = FALSE;
failure_mssg = "H5Fclose() failed (3).\n";
}
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 14) Discard the file. */
if ( pass ) {
if ( HDremove(filename) < 0 ) {
pass = FALSE;
failure_mssg = "HDremove() failed.\n";
}
}
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
if ( pass ) { PASSED(); } else { H5_FAILED(); }
if ( ! pass )
HDfprintf(stdout, "%s: failure_mssg = \"%s\".\n",
FUNC, failure_mssg);
return !pass;
} /* evict_on_close_test() */
/*-------------------------------------------------------------------------
* Function: main
@ -7614,6 +8066,7 @@ main(void)
nerrs += cache_image_api_error_check_4();
nerrs += get_free_sections_test();
nerrs += evict_on_close_test();
return(nerrs > 0);

View File

@ -52,6 +52,10 @@ static unsigned test_raw_data_handling(hid_t orig_fapl, const char *env_h5_drvr)
static unsigned test_lru_processing(hid_t orig_fapl, const char *env_h5_drvr);
static unsigned test_min_threshold(hid_t orig_fapl, const char *env_h5_drvr);
static unsigned test_stats_collection(hid_t orig_fapl, const char *env_h5_drvr);
#ifdef H5_HAVE_PARALLEL
static unsigned verify_page_buffering_disabled(hid_t orig_fapl,
const char *env_h5_drvr);
#endif /* H5_HAVE_PARALLEL */
const char *FILENAME[] = {
"filepaged",
@ -2005,6 +2009,121 @@ error:
return 1;
} /* test_stats_collection */
/*-------------------------------------------------------------------------
* Function: verify_page_buffering_disabled()
*
* Purpose: This function should only be called in parallel
* builds.
*
* At present, page buffering should be disabled in parallel
* builds. Verify this.
*
* Return: 0 if test is sucessful
* 1 if test fails
*
* Programmer: John Mainzer
* 03/21/17
*
* Changes: None.
*
*-------------------------------------------------------------------------
*/
#ifdef H5_HAVE_PARALLEL
static unsigned
verify_page_buffering_disabled(hid_t orig_fapl, const char *env_h5_drvr)
{
char filename[FILENAME_LEN]; /* Filename to use */
hid_t file_id = -1; /* File ID */
hid_t fcpl = -1;
hid_t fapl = -1;
TESTING("Page Buffering Disabled");
h5_fixname(FILENAME[0], orig_fapl, filename, sizeof(filename));
/* first, try to create a file with page buffering enabled */
if((fapl = H5Pcopy(orig_fapl)) < 0)
TEST_ERROR
if(set_multi_split(env_h5_drvr, fapl, 4096) != 0)
TEST_ERROR;
if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
FAIL_STACK_ERROR;
if(H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0)
FAIL_STACK_ERROR;
if(H5Pset_file_space_page_size(fcpl, 4096) < 0)
FAIL_STACK_ERROR;
if(H5Pset_page_buffer_size(fapl, 4096*8, 0, 0) < 0)
FAIL_STACK_ERROR;
/* try to create the file -- should fail */
H5E_BEGIN_TRY {
file_id = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl);
} H5E_END_TRY;
if(file_id >= 0)
TEST_ERROR;
/* now, create a file, close it, and then try to open it with page
* buffering enabled.
*/
if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0)
FAIL_STACK_ERROR;
if(H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_PAGE, 0, (hsize_t)1) < 0)
FAIL_STACK_ERROR;
if(H5Pset_file_space_page_size(fcpl, 4096) < 0)
FAIL_STACK_ERROR;
/* create the file */
if((file_id = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, H5P_DEFAULT)) < 0)
FAIL_STACK_ERROR;
/* close the file */
if(H5Fclose(file_id) < 0)
FAIL_STACK_ERROR;
/* try to open the file using the fapl prepared above which enables
* page buffering. Should fail.
*/
H5E_BEGIN_TRY {
file_id = H5Fopen(filename, H5F_ACC_RDWR, fapl);
} H5E_END_TRY;
if(file_id >= 0)
TEST_ERROR;
if(H5Pclose(fcpl) < 0)
FAIL_STACK_ERROR;
if(H5Pclose(fapl) < 0)
FAIL_STACK_ERROR;
PASSED()
return 0;
error:
H5E_BEGIN_TRY {
H5Pclose(fapl);
H5Pclose(fcpl);
H5Fclose(file_id);
} H5E_END_TRY;
return 1;
} /* verify_page_buffering_disabled() */
#endif /* H5_HAVE_PARALLEL */
/*-------------------------------------------------------------------------
* Function: main()
@ -2026,8 +2145,6 @@ main(void)
unsigned nerrors = 0; /* Cumulative error count */
const char *env_h5_drvr = NULL; /* File Driver value from environment */
#ifndef H5_HAVE_PARALLEL
h5_reset();
/* Get the VFD to use */
@ -2052,12 +2169,21 @@ main(void)
PUTS_ERROR("Can't get VFD-dependent fapl")
} /* end if */
#ifdef H5_HAVE_PARALLEL
HDputs("Page Buffering is disabled for parallel.");
nerrors += verify_page_buffering_disabled(fapl, env_h5_drvr);
#else /* H5_HAVE_PARALLEL */
nerrors += test_args(fapl, env_h5_drvr);
nerrors += test_raw_data_handling(fapl, env_h5_drvr);
nerrors += test_lru_processing(fapl, env_h5_drvr);
nerrors += test_min_threshold(fapl, env_h5_drvr);
nerrors += test_stats_collection(fapl, env_h5_drvr);
#endif /* H5_HAVE_PARALLEL */
h5_clean_files(FILENAME, fapl);
if(nerrors)
@ -2065,11 +2191,6 @@ main(void)
HDputs("All Page Buffering tests passed.");
#else
SKIPPED()
HDputs("Page Buffering is disabled for parallel.");
#endif
HDexit(EXIT_SUCCESS);
error:

View File

@ -46,7 +46,9 @@ const char *FILENAMES[] = {
/* local utility function declarations */
static void create_data_sets(hid_t file_id, int min_dset, int max_dset);
#if 0 /* keep pending full parallel cache image */
static void delete_data_sets(hid_t file_id, int min_dset, int max_dset);
#endif
static void open_hdf5_file(const hbool_t create_file,
const hbool_t mdci_sbem_expected,
@ -796,7 +798,12 @@ create_data_sets(hid_t file_id, int min_dset, int max_dset)
*
*-------------------------------------------------------------------------
*/
#if 0
/* this code will be needed to test full support of cache image
* in parallel -- keep it around against that day.
*
* -- JRM
*/
static void
delete_data_sets(hid_t file_id, int min_dset, int max_dset)
{
@ -843,6 +850,7 @@ delete_data_sets(hid_t file_id, int min_dset, int max_dset)
return;
} /* delete_data_sets() */
#endif
/*-------------------------------------------------------------------------
@ -2756,12 +2764,22 @@ usage(void)
"The \"setup\" parameter indicates that t_cache_image is being \n",
"invokde for this purpose.\n",
"\n",
"usage: t_cache_image [setup]\n",
"Similarly, only a serial process can add a cache image to an\n",
"existing file.\n",
"\n",
"Here again, one process forks a serial version of the test program\n",
"with the \"ici\" parameter.\n"
"\n",
"usage: t_cache_image [setup|ici m n]\n",
"\n",
"where:\n",
"\n",
" setup parameter forces creation of test file\n",
"\n",
" ici parameter forces insertion of a cache image into the \n",
" m th test file, created by a parallel computation with .\n",
" n processes\n",
"\n",
"Returns 0 on success, 1 on failure.\n",
"\n",
NULL,
@ -3141,11 +3159,6 @@ verify_cache_image_RO(int file_name_id, int md_write_strat, int mpi_rank)
/* 1) Open the test file created at the beginning of this test.
*
* Verify that the file contains a cache image.
*
* Verify that only process 0 reads the cache image.
*
* Verify that all other processes receive the cache
* image block from process 0.
*/
if ( pass ) {
@ -3172,36 +3185,57 @@ verify_cache_image_RO(int file_name_id, int md_write_strat, int mpi_rank)
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 2) Verify that the file contains the expected data.
*
* Verify that only process 0 reads the cache image.
*
* Verify that all other processes receive the cache
* image block from process 0.
*/
if ( pass ) {
verify_data_sets(file_id, 0, MAX_NUM_DSETS - 1);
}
/* Verify that only process 0 reads the cache image. */
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( ( ( mpi_rank == 0 ) && ( cache_ptr->images_read != 1 ) ) ||
( ( mpi_rank > 0 ) && ( cache_ptr->images_read != 0 ) ) ) {
pass = FALSE;
failure_mssg = "unexpected images_read.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* Verify that all other processes receive the cache image block
* from process 0.
*
* Since we have alread verified that only process 0 has read the
* image, it is sufficient to verify that the image was loaded on
* all processes.
*/
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 2) Verify that the file contains the expected data. */
if ( pass ) {
verify_data_sets(file_id, 0, MAX_NUM_DSETS - 1);
}
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( cache_ptr->images_loaded == 0 ) {
if ( cache_ptr->images_loaded != 1 ) {
pass = FALSE;
failure_mssg = "metadata cache image block not loaded(1).";
failure_mssg = "Image not loaded?.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 3) Close the file. */
@ -3317,12 +3351,13 @@ verify_cache_image_RO(int file_name_id, int md_write_strat, int mpi_rank)
*
* Verify that the file contains a cache image.
*
* 2) Verify that the file contains the expected data.
*
* Verify that only process 0 reads the cache image.
*
* Verify that all other processes receive the cache
* image block from process 0.
*
* 2) Verify that the file contains the expected data.
*
* 3) Close the file.
*
@ -3434,36 +3469,56 @@ verify_cache_image_RW(int file_name_id, int md_write_strat, int mpi_rank)
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 2) Verify that the file contains the expected data.
*
* Verify that only process 0 reads the cache image.
*
* Verify that all other processes receive the cache
* image block from process 0.
*/
if ( pass ) {
verify_data_sets(file_id, 0, MAX_NUM_DSETS - 1);
}
/* Verify that only process 0 reads the cache image. */
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( ( ( mpi_rank == 0 ) && ( cache_ptr->images_read != 1 ) ) ||
( ( mpi_rank > 0 ) && ( cache_ptr->images_read != 0 ) ) ) {
pass = FALSE;
failure_mssg = "unexpected images_read.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* Verify that all other processes receive the cache image block
* from process 0.
*
* Since we have alread verified that only process 0 has read the
* image, it is sufficient to verify that the image was loaded on
* all processes.
*/
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 2) Verify that the file contains the expected data. */
if ( pass ) {
verify_data_sets(file_id, 0, MAX_NUM_DSETS - 1);
}
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( cache_ptr->images_loaded == 0 ) {
if ( cache_ptr->images_loaded != 1 ) {
pass = FALSE;
failure_mssg = "metadata cache image block not loaded(2).";
failure_mssg = "Image not loaded?.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( show_progress )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 3) Close the file. */
@ -3754,7 +3809,13 @@ smoke_check_1(MPI_Comm mpi_comm, MPI_Info mpi_info, int mpi_rank, int mpi_size)
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 7) Verify the datasets in the file backwards */
/* 7) Verify the datasets in the file backwards
*
* Verify that only process 0 reads the cache image.
*
* Verify that all other processes receive the cache
* image block from process 0.
*/
i = num_dsets - 1;
while ( ( pass ) && ( i >= 0 ) ) {
@ -3763,6 +3824,46 @@ smoke_check_1(MPI_Comm mpi_comm, MPI_Info mpi_info, int mpi_rank, int mpi_size)
i--;
}
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* Verify that only process 0 reads the cache image. */
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( ( ( mpi_rank == 0 ) && ( cache_ptr->images_read != 1 ) ) ||
( ( mpi_rank > 0 ) && ( cache_ptr->images_read != 0 ) ) ) {
pass = FALSE;
failure_mssg = "unexpected images_read.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* Verify that all other processes receive the cache image block
* from process 0.
*
* Since we have alread verified that only process 0 has read the
* image, it is sufficient to verify that the image was loaded on
* all processes.
*/
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( cache_ptr->images_loaded != 1 ) {
pass = FALSE;
failure_mssg = "Image not loaded?.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 8) Close the file */
@ -3776,6 +3877,9 @@ smoke_check_1(MPI_Comm mpi_comm, MPI_Info mpi_info, int mpi_rank, int mpi_size)
}
}
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 9) Open the file */
@ -3804,7 +3908,13 @@ smoke_check_1(MPI_Comm mpi_comm, MPI_Info mpi_info, int mpi_rank, int mpi_size)
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 10) Verify the datasets in the file */
/* 10) Verify the datasets in the file
*
* Verify that only process 0 reads the cache image.
*
* Verify that all other processes receive the cache
* image block from process 0.
*/
i = 0;
while ( ( pass ) && ( i < num_dsets ) ) {
@ -3816,6 +3926,43 @@ smoke_check_1(MPI_Comm mpi_comm, MPI_Info mpi_info, int mpi_rank, int mpi_size)
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* Verify that only process 0 reads the cache image. */
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( ( ( mpi_rank == 0 ) && ( cache_ptr->images_read != 1 ) ) ||
( ( mpi_rank > 0 ) && ( cache_ptr->images_read != 0 ) ) ) {
pass = FALSE;
failure_mssg = "unexpected images_read.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* Verify that all other processes receive the cache image block
* from process 0.
*
* Since we have alread verified that only process 0 has read the
* image, it is sufficient to verify that the image was loaded on
* all processes.
*/
#if H5C_COLLECT_CACHE_STATS
if ( pass ) {
if ( cache_ptr->images_loaded != 1 ) {
pass = FALSE;
failure_mssg = "Image not loaded?.";
}
}
#endif /* H5C_COLLECT_CACHE_STATS */
if ( ( mpi_rank == 0 ) && ( show_progress ) )
HDfprintf(stdout, "%s: cp = %d, pass = %d.\n", fcn_name, cp++, pass);
/* 11) Delete the datasets in the file */