summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2016-03-03 04:24:48 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2016-03-03 04:24:48 (GMT)
commit611ff7258937a90cc63ff4084f6eed421a0ba320 (patch)
tree68771520f4d9d63ef657b5d3a081eab9b266196b
parent8cd0b0aff8551345c84f75ea3c504a97cd87778b (diff)
downloadhdf5-611ff7258937a90cc63ff4084f6eed421a0ba320.zip
hdf5-611ff7258937a90cc63ff4084f6eed421a0ba320.tar.gz
hdf5-611ff7258937a90cc63ff4084f6eed421a0ba320.tar.bz2
[svn-r29251] Restored some missing edge chunk optimization code that
was not merged. Tested on: 64-bit Ubuntu 15.10 w/ gcc 5.2.1 autotools serial
-rw-r--r--src/H5Dchunk.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/H5Dchunk.c b/src/H5Dchunk.c
index 612b419..f48b059 100644
--- a/src/H5Dchunk.c
+++ b/src/H5Dchunk.c
@@ -4007,7 +4007,7 @@ H5D__chunk_allocate(const H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
HGOTO_ERROR(H5E_DATASET, H5E_CANTCONVERT, FAIL, "can't refill fill value buffer")
/* Check if there are filters which need to be applied to the chunk */
- if(!nunfilt_edge_chunk_dims) {
+ if((pline->nused > 0) && !nunfilt_edge_chunk_dims) {
size_t nbytes = orig_chunk_size;
/* Push the chunk through the filters */
@@ -4054,6 +4054,9 @@ H5D__chunk_allocate(const H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
/* collect all chunk addresses to be written to
write collectively at the end */
/* allocate/resize address array if no more space left */
+ /* Note that if we add support for parallel filters we must
+ * also store an array of chunk sizes and pass it to the
+ * apporpriate collective write function */
if(0 == chunk_info.num_io % 1024)
if(NULL == (chunk_info.addr = (haddr_t *)H5MM_realloc(chunk_info.addr, (chunk_info.num_io + 1024) * sizeof(haddr_t))))
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "memory allocation failed for chunk addresses")