mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-25 17:00:45 +08:00
Re-enable collective metadata reads after disabling for chunk lookup (#1173)
This commit is contained in:
parent
a0445d806c
commit
b736d442ae
@ -1039,6 +1039,13 @@ Bug Fixes since HDF5-1.12.0 release
|
||||
===================================
|
||||
Library
|
||||
-------
|
||||
- Fixed an issue with collective metadata reads being permanently disabled
|
||||
after a dataset chunk lookup operation. This would usually cause a
|
||||
mismatched MPI_Bcast and MPI_ERR_TRUNCATE issue in the library for
|
||||
simple cases of H5Dcreate() -> H5Dwrite() -> H5Dcreate().
|
||||
|
||||
(JTH - 2021/11/08, HDFFV-11090)
|
||||
|
||||
- Fixed cross platform incompatibility of references within variable length
|
||||
types
|
||||
|
||||
|
@ -3166,11 +3166,14 @@ H5D__chunk_hash_val(const H5D_shared_t *shared, const hsize_t *scaled)
|
||||
herr_t
|
||||
H5D__chunk_lookup(const H5D_t *dset, const hsize_t *scaled, H5D_chunk_ud_t *udata)
|
||||
{
|
||||
H5D_rdcc_ent_t * ent = NULL; /* Cache entry */
|
||||
H5O_storage_chunk_t *sc = &(dset->shared->layout.storage.u.chunk);
|
||||
unsigned idx = 0; /* Index of chunk in cache, if present */
|
||||
hbool_t found = FALSE; /* In cache? */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
H5D_rdcc_ent_t * ent = NULL; /* Cache entry */
|
||||
H5O_storage_chunk_t *sc = &(dset->shared->layout.storage.u.chunk);
|
||||
unsigned idx = 0; /* Index of chunk in cache, if present */
|
||||
hbool_t found = FALSE; /* In cache? */
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
hbool_t reenable_coll_md_reads = FALSE;
|
||||
#endif
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
@ -3241,8 +3244,13 @@ H5D__chunk_lookup(const H5D_t *dset, const hsize_t *scaled, H5D_chunk_ud_t *udat
|
||||
* highly unlikely that users would read the same chunks from all
|
||||
* processes.
|
||||
*/
|
||||
if (H5F_HAS_FEATURE(idx_info.f, H5FD_FEAT_HAS_MPI))
|
||||
H5CX_set_coll_metadata_read(FALSE);
|
||||
if (H5F_HAS_FEATURE(idx_info.f, H5FD_FEAT_HAS_MPI)) {
|
||||
hbool_t do_coll_md_reads = H5CX_get_coll_metadata_read();
|
||||
if (do_coll_md_reads) {
|
||||
H5CX_set_coll_metadata_read(FALSE);
|
||||
reenable_coll_md_reads = TRUE;
|
||||
}
|
||||
}
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
/* Go get the chunk information */
|
||||
@ -3285,6 +3293,12 @@ H5D__chunk_lookup(const H5D_t *dset, const hsize_t *scaled, H5D_chunk_ud_t *udat
|
||||
} /* end else */
|
||||
|
||||
done:
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
/* Re-enable collective metadata reads if we disabled them */
|
||||
if (reenable_coll_md_reads)
|
||||
H5CX_set_coll_metadata_read(TRUE);
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5D__chunk_lookup() */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user