summaryrefslogtreecommitdiffstats
path: root/src/H5Faccum.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2009-08-24 18:13:20 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2009-08-24 18:13:20 (GMT)
commitdeaa1adff889cf6edca3fb555f99270ffeac99ff (patch)
treee9e0cda1b9045bf7fc6aeb53133f25e0a2b02a88 /src/H5Faccum.c
parente3f4e81b5f98c28df2705974625ba2f97286897c (diff)
downloadhdf5-deaa1adff889cf6edca3fb555f99270ffeac99ff.zip
hdf5-deaa1adff889cf6edca3fb555f99270ffeac99ff.tar.gz
hdf5-deaa1adff889cf6edca3fb555f99270ffeac99ff.tar.bz2
[svn-r17414] Description:
Flush the core VFD's buffer before closing the file, also flush the metadata accumulator before reseting it. Write the driver info message out in the superblock flush routine more directly, instead of using wrapper routine, since the wrapper routine won't work when the superblock is being shutdown. Tested on: FreeBSD/32 6.3 (duty) in debug mode, w/check-vfd FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode, w/check-vfd Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode, w/check-vfd Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x, w/C++ & FORTRAN, in production mode, w/check-vfd Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode, w/check-vfd Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode, w/check-vfd Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode, w/check-vfd Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode, w/check-vfd Mac OS X/32 10.5.8 (amazon) in debug mode, w/check-vfd Mac OS X/32 10.5.8 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode, w/check-vfd
Diffstat (limited to 'src/H5Faccum.c')
-rw-r--r--src/H5Faccum.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/H5Faccum.c b/src/H5Faccum.c
index d4e142b..d8b9820 100644
--- a/src/H5Faccum.c
+++ b/src/H5Faccum.c
@@ -722,13 +722,19 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5F_accum_reset(H5F_t *f)
+H5F_accum_reset(H5F_t *f, hid_t dxpl_id)
{
- FUNC_ENTER_NOAPI_NOFUNC(H5F_accum_reset)
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI(H5F_accum_reset, FAIL)
HDassert(f);
HDassert(f->shared);
+ /* Flush any dirty data in accumulator */
+ if(H5F_accum_flush(f, dxpl_id) < 0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "can't flush metadata accumulator")
+
/* Check if we need to reset the metadata accumulator information */
if(f->shared->feature_flags & H5FD_FEAT_ACCUMULATE_METADATA) {
/* Sanity check */
@@ -744,7 +750,7 @@ H5F_accum_reset(H5F_t *f)
f->shared->accum.dirty = FALSE;
} /* end if */
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5F_accum_reset() */
-