summaryrefslogtreecommitdiffstats
path: root/src/H5Dmpio.c
diff options
context:
space:
mode:
authorVailin Choi <vchoi@jam.ad.hdfgroup.org>2017-11-28 17:11:27 (GMT)
committerVailin Choi <vchoi@jam.ad.hdfgroup.org>2017-11-28 17:11:27 (GMT)
commit3d84163ad37960ff1ecdd5782af88b442832fd99 (patch)
tree99d6ea66069bef7d37ca3abbf823e731f374b3c3 /src/H5Dmpio.c
parente1dd55be8538ee0ebd1c46be3df4b306a3ac6f3f (diff)
downloadhdf5-3d84163ad37960ff1ecdd5782af88b442832fd99.zip
hdf5-3d84163ad37960ff1ecdd5782af88b442832fd99.tar.gz
hdf5-3d84163ad37960ff1ecdd5782af88b442832fd99.tar.bz2
Fix for HDFFV-9947 H5Sencode
Modifications to fix H5Sencode bug when num points selected is > 2^32.
Diffstat (limited to 'src/H5Dmpio.c')
-rw-r--r--src/H5Dmpio.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index 79572c0..94d763d 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -2859,6 +2859,7 @@ H5D__chunk_redistribute_shared_chunks(const H5D_io_info_t *io_info, const H5D_ty
int *send_displacements = NULL;
int scatter_recvcount_int;
int mpi_rank, mpi_size, mpi_code;
+ hid_t fapl_id = -1; /* File access property list for H5S_encode() */
herr_t ret_value = SUCCEED;
FUNC_ENTER_STATIC
@@ -2873,6 +2874,9 @@ H5D__chunk_redistribute_shared_chunks(const H5D_io_info_t *io_info, const H5D_ty
if ((mpi_size = H5F_mpi_get_size(io_info->dset->oloc.file)) < 0)
HGOTO_ERROR(H5E_IO, H5E_MPI, FAIL, "unable to obtain mpi size")
+ if((fapl_id = H5F_get_access_plist(io_info->dset->oloc.file, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get fapl")
+
if (*local_chunk_array_num_entries)
if (NULL == (send_requests = (MPI_Request *) H5MM_malloc(*local_chunk_array_num_entries * sizeof(MPI_Request))))
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "couldn't allocate send requests buffer")
@@ -2978,7 +2982,7 @@ H5D__chunk_redistribute_shared_chunks(const H5D_io_info_t *io_info, const H5D_ty
/* Determine size of serialized chunk file dataspace, plus the size of
* the data being written
*/
- if (H5S_encode(chunk_info->fspace, &mod_data_p, &mod_data_size) < 0)
+ if (H5S_encode(chunk_info->fspace, &mod_data_p, &mod_data_size, fapl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTENCODE, FAIL, "unable to get encoded dataspace size")
if ((iter_nelmts = H5S_GET_SELECT_NPOINTS(chunk_info->mspace)) < 0)
@@ -2991,7 +2995,7 @@ H5D__chunk_redistribute_shared_chunks(const H5D_io_info_t *io_info, const H5D_ty
/* Serialize the chunk's file dataspace into the buffer */
mod_data_p = mod_data[num_send_requests];
- if (H5S_encode(chunk_info->fspace, &mod_data_p, &mod_data_size) < 0)
+ if (H5S_encode(chunk_info->fspace, &mod_data_p, &mod_data_size, fapl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTENCODE, FAIL, "unable to encode dataspace")
/* Intialize iterator for memory selection */