summaryrefslogtreecommitdiffstats
path: root/src/H5Dint.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2009-08-21 04:54:31 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2009-08-21 04:54:31 (GMT)
commitd591ac4bf79dde02ceea8d16dbe9e601da99757a (patch)
tree8e65dd2aa24bc80c7a058425b8227e4acd1cbc19 /src/H5Dint.c
parent055d727f3f6c1f135c262037cfe7bc1e65eef61d (diff)
downloadhdf5-d591ac4bf79dde02ceea8d16dbe9e601da99757a.zip
hdf5-d591ac4bf79dde02ceea8d16dbe9e601da99757a.tar.gz
hdf5-d591ac4bf79dde02ceea8d16dbe9e601da99757a.tar.bz2
[svn-r17403] Description:
Eliminate 'closing' flag to dataset flush routine, since all cached dataset information has already been flushed when a file is closed and the datasets themselves will be closed (and the dataset caches destroyed). Skip calling more flush routines when the file is closing, in preparation for eventual separation of the 'flush' concept from the 'shutdown the cache' concept. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode Mac OS X/32 10.5.8 (amazon) in debug mode Mac OS X/32 10.5.8 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode
Diffstat (limited to 'src/H5Dint.c')
-rw-r--r--src/H5Dint.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/H5Dint.c b/src/H5Dint.c
index 8789289..7395fba 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -48,7 +48,6 @@
typedef struct {
const H5F_t *f; /* Pointer to file being flushed */
hid_t dxpl_id; /* DXPL for I/O operations */
- hbool_t closing; /* Whether the file is closing */
} H5D_flush_ud_t;
@@ -66,7 +65,7 @@ static herr_t H5D_init_space(H5F_t *file, const H5D_t *dset, const H5S_t *space)
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, hbool_t closing);
+static herr_t H5D_flush_real(H5D_t *dataset, hid_t dxpl_id);
/*********************/
@@ -1361,7 +1360,7 @@ H5D_close(H5D_t *dataset)
dataset->shared->fo_count--;
if(dataset->shared->fo_count == 0) {
/* Flush the dataset's information */
- if(H5D_flush_real(dataset, H5AC_dxpl_id, FALSE) < 0)
+ if(H5D_flush_real(dataset, H5AC_dxpl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "unable to flush cached dataset info")
/* Free the data sieve buffer, if it's been allocated */
@@ -2234,7 +2233,7 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5D_flush_real(H5D_t *dataset, hid_t dxpl_id, hbool_t closing)
+H5D_flush_real(H5D_t *dataset, hid_t dxpl_id)
{
H5O_t *oh = NULL; /* Pointer to dataset's object header */
herr_t ret_value = SUCCEED; /* Return value */
@@ -2278,7 +2277,7 @@ H5D_flush_real(H5D_t *dataset, hid_t dxpl_id, hbool_t closing)
/* Flush cached raw data for each kind of dataset layout */
if(dataset->shared->layout.ops->flush &&
- (dataset->shared->layout.ops->flush)(dataset, dxpl_id, closing) < 0)
+ (dataset->shared->layout.ops->flush)(dataset, dxpl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTFLUSH, FAIL, "unable to flush raw data")
done:
@@ -2319,7 +2318,7 @@ H5D_flush_cb(void *_dataset, hid_t UNUSED id, void *_udata)
/* Check for dataset in same file */
if(udata->f == dataset->oloc.file) {
/* Flush the dataset's information */
- if(H5D_flush_real(dataset, udata->dxpl_id, udata->closing) < 0)
+ if(H5D_flush_real(dataset, udata->dxpl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, H5_ITER_ERROR, "unable to flush cached dataset info")
} /* end if */
@@ -2342,7 +2341,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5D_flush(const H5F_t *f, hid_t dxpl_id, hbool_t closing)
+H5D_flush(const H5F_t *f, hid_t dxpl_id)
{
H5D_flush_ud_t udata; /* User data for callback */
herr_t ret_value = SUCCEED; /* Return value */
@@ -2355,7 +2354,6 @@ H5D_flush(const H5F_t *f, hid_t dxpl_id, hbool_t closing)
/* Set user data for callback */
udata.f = f;
udata.dxpl_id = dxpl_id;
- udata.closing = closing;
/* Iterate over all the open datasets */
H5I_search(H5I_DATASET, H5D_flush_cb, &udata, FALSE);