summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVailin Choi <vchoi@hdfgroup.org>2011-03-07 16:37:49 (GMT)
committerVailin Choi <vchoi@hdfgroup.org>2011-03-07 16:37:49 (GMT)
commit79757db4c2ba2181ab88ba23f392790782802645 (patch)
tree93075de94c95b19ee2ccc2fda9814273dd2a7791 /src
parent727b687ae6c80c9854cb53814fa1c12f27c2994c (diff)
downloadhdf5-79757db4c2ba2181ab88ba23f392790782802645.zip
hdf5-79757db4c2ba2181ab88ba23f392790782802645.tar.gz
hdf5-79757db4c2ba2181ab88ba23f392790782802645.tar.bz2
[svn-r20196] This checkin consists of the following:
A) - Changes to add the new tool "h5watch" to High Level - Changes to add three new High Level public routines for retrieving elements appended to a dataset B) A patch from Mike M. to fix the H5Dflush/refresh problem: src/H5Dpkg.h src/H5Dint.c src/H5D.c C) Fix for an assertion failure in H5FS_sect_link_size() in H5FSsection.c src/H5Dbtree2.c h5committested; tested also on linew, duty, fred.
Diffstat (limited to 'src')
-rw-r--r--src/H5D.c4
-rw-r--r--src/H5Dbtree2.c14
-rw-r--r--src/H5Dint.c1
-rw-r--r--src/H5Dpkg.h1
4 files changed, 18 insertions, 2 deletions
diff --git a/src/H5D.c b/src/H5D.c
index c0966af..6e86e32 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -1127,6 +1127,10 @@ H5Dflush(hid_t dset_id)
if(NULL == (dset = (H5D_t *)H5I_object_verify(dset_id, H5I_DATASET)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset")
+ /* Flush any dataset information still cached in memory */
+ if (H5D_flush_real(dset, H5AC_dxpl_id) < 0)
+ HDONE_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to flush cached dataset info")
+
/* Call private function to flush dataset object */
if (H5O_flush_metadata(&dset->oloc, H5AC_dxpl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTFLUSH, FAIL, "unable to flush dataset")
diff --git a/src/H5Dbtree2.c b/src/H5Dbtree2.c
index 0cdf465..a28a33b 100644
--- a/src/H5Dbtree2.c
+++ b/src/H5Dbtree2.c
@@ -1516,6 +1516,13 @@ done:
*
* Programmer: Vailin Choi; June 2010
*
+ * Modifications:
+ * Vailin Choi; March 2011
+ * Initialize size of an unfiltered chunk.
+ * This is a fix for for the assertion failure in:
+ * [src/H5FSsection.c:968: H5FS_sect_link_size: Assertion `bin < sinfo->nbins' failed.]
+ * which is uncovered by test_unlink_chunked_dataset() in test/unlink.c
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -1546,7 +1553,12 @@ H5D_bt2_idx_delete(const H5D_chk_idx_info_t *idx_info)
remove_udata.f = idx_info->f;
remove_udata.dxpl_id = idx_info->dxpl_id;
- remove_op = idx_info->pline->nused > 0 ? H5D_bt2_filt_remove_cb : H5D_bt2_remove_cb;
+ if(idx_info->pline->nused > 0) /* filtered */
+ remove_op = H5D_bt2_filt_remove_cb;
+ else { /* non-filtered */
+ remove_op = H5D_bt2_remove_cb;
+ remove_udata.unfilt_size = idx_info->layout->size;
+ }
/* Delete the v2 B-tree */
/*(space in the file for each object is freed in the 'remove' callback) */
diff --git a/src/H5Dint.c b/src/H5Dint.c
index e8dc976..f3e0b3c 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -70,7 +70,6 @@ static herr_t H5D_swmr_teardown(const H5D_t *dataset, hid_t dxpl_id);
static herr_t H5D_update_oh_info(H5F_t *file, hid_t dxpl_id, H5D_t *dset,
hid_t dapl_id);
static herr_t H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id);
-static herr_t H5D_flush_real(H5D_t *dataset, hid_t dxpl_id);
/*********************/
diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h
index daf8ca8..02eb950 100644
--- a/src/H5Dpkg.h
+++ b/src/H5Dpkg.h
@@ -604,6 +604,7 @@ H5_DLL herr_t H5D_check_filters(H5D_t *dataset);
H5_DLL herr_t H5D_set_extent(H5D_t *dataset, const hsize_t *size, hid_t dxpl_id);
H5_DLL herr_t H5D_get_dxpl_cache(hid_t dxpl_id, H5D_dxpl_cache_t **cache);
H5_DLL herr_t H5D_flush_sieve_buf(H5D_t *dataset, hid_t dxpl_id);
+H5_DLL herr_t H5D_flush_real(H5D_t *dataset, hid_t dxpl_id);
H5_DLL herr_t H5D_mark(H5D_t *dataset, hid_t dxpl_id, unsigned flags);
/* Functions that perform direct serial I/O operations */