summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Henderson <jhenderson@hdfgroup.org>2017-02-08 17:40:57 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2017-02-08 17:40:57 (GMT)
commit5610256c7202ae4c0001d439db3c295b2e1d6a1c (patch)
tree6c4db83f66f2761bac10474591f89223b5d1eff2 /src
parentce5e3030502f2ed0f09aad12168635f635444d70 (diff)
downloadhdf5-5610256c7202ae4c0001d439db3c295b2e1d6a1c.zip
hdf5-5610256c7202ae4c0001d439db3c295b2e1d6a1c.tar.gz
hdf5-5610256c7202ae4c0001d439db3c295b2e1d6a1c.tar.bz2
Trigger error if library tries to break to independent I/O with filters
in the pipeline
Diffstat (limited to 'src')
-rw-r--r--src/H5Dio.c7
-rw-r--r--src/H5err.txt1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/H5Dio.c b/src/H5Dio.c
index 6a4e6ec..2122cb0 100644
--- a/src/H5Dio.c
+++ b/src/H5Dio.c
@@ -1154,6 +1154,13 @@ H5D__ioinfo_adjust(H5D_io_info_t *io_info, const H5D_t *dset, hid_t dxpl_id,
io_info->io_ops.single_write = H5D__mpio_select_write;
} /* end if */
else {
+ /* Check if there are any filters in the pipeline. If there are,
+ * we cannot break to independent I/O if this is a write operation;
+ * otherwise there will be metadata inconsistencies in the file.
+ */
+ if (io_info->op_type == H5D_IO_OP_WRITE && io_info->dset->shared->dcpl_cache.pline.nused > 0)
+ HGOTO_ERROR(H5E_IO, H5E_NO_INDEPENDENT, FAIL, "can't perform independent write with filters in pipeline")
+
/* If we won't be doing collective I/O, but the user asked for
* collective I/O, change the request to use independent I/O, but
* mark it so that we remember to revert the change.
diff --git a/src/H5err.txt b/src/H5err.txt
index 9aa2e6b..48069a5 100644
--- a/src/H5err.txt
+++ b/src/H5err.txt
@@ -245,6 +245,7 @@ MINOR, MPI, H5E_MPI, Some MPI function failed
MINOR, MPI, H5E_MPIERRSTR, MPI Error String
MINOR, MPI, H5E_CANTRECV, Can't receive data
MINOR, MPI, H5E_CANTGATHER, Can't gather data
+MINOR, MPI, H5E_NO_INDEPENDENT, Can't perform independent IO
# Heap errors
MINOR, HEAP, H5E_CANTRESTORE, Can't restore condition