diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2009-08-24 18:13:20 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2009-08-24 18:13:20 (GMT) |
commit | deaa1adff889cf6edca3fb555f99270ffeac99ff (patch) | |
tree | e9e0cda1b9045bf7fc6aeb53133f25e0a2b02a88 /src/H5FDcore.c | |
parent | e3f4e81b5f98c28df2705974625ba2f97286897c (diff) | |
download | hdf5-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/H5FDcore.c')
-rw-r--r-- | src/H5FDcore.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/H5FDcore.c b/src/H5FDcore.c index 1e30ace..a08abdd 100644 --- a/src/H5FDcore.c +++ b/src/H5FDcore.c @@ -484,33 +484,33 @@ done: * Programmer: Robb Matzke * Thursday, July 29, 1999 * - * Modifications: - * Robb Matzke, 1999-10-19 - * The contents of memory are written to the backing store if - * one is open. *------------------------------------------------------------------------- */ static herr_t H5FD_core_close(H5FD_t *_file) { H5FD_core_t *file = (H5FD_core_t*)_file; - herr_t ret_value=SUCCEED; /* Return value */ + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(H5FD_core_close, FAIL) + /* Flush any changed buffers */ + if(H5FD_core_flush(_file, (hid_t)-1, TRUE) < 0) + HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "unable to flush file") + /* Release resources */ - if (file->fd>=0) + if(file->fd >= 0) HDclose(file->fd); - if (file->name) + if(file->name) H5MM_xfree(file->name); - if (file->mem) + if(file->mem) H5MM_xfree(file->mem); HDmemset(file, 0, sizeof(H5FD_core_t)); H5MM_xfree(file); done: FUNC_LEAVE_NOAPI(ret_value) -} +} /* end H5FD_core_close() */ /*------------------------------------------------------------------------- @@ -973,7 +973,7 @@ H5FD_core_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing) new_eof += file->increment; /* Extend the file to make sure it's large enough */ - if(!H5F_addr_eq((haddr_t)new_eof, file->eof)) { + if(!H5F_addr_eq(file->eof, (haddr_t)new_eof)) { unsigned char *x; /* Pointer to new buffer for file data */ /* (Re)allocate memory for the file buffer */ |