diff options
author | Vailin Choi <vchoi@hdfgroup.org> | 2011-03-07 16:37:49 (GMT) |
---|---|---|
committer | Vailin Choi <vchoi@hdfgroup.org> | 2011-03-07 16:37:49 (GMT) |
commit | 79757db4c2ba2181ab88ba23f392790782802645 (patch) | |
tree | 93075de94c95b19ee2ccc2fda9814273dd2a7791 /src | |
parent | 727b687ae6c80c9854cb53814fa1c12f27c2994c (diff) | |
download | hdf5-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.c | 4 | ||||
-rw-r--r-- | src/H5Dbtree2.c | 14 | ||||
-rw-r--r-- | src/H5Dint.c | 1 | ||||
-rw-r--r-- | src/H5Dpkg.h | 1 |
4 files changed, 18 insertions, 2 deletions
@@ -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 */ |