summaryrefslogtreecommitdiffstats
path: root/src/H5FDcore.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2002-05-10 18:38:10 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2002-05-10 18:38:10 (GMT)
commit084b35362bfac78604b02654cdc2067488c00300 (patch)
treee67284d7304850ef0428155c54a1d3d48c06875f /src/H5FDcore.c
parent9815305745d7317d7bd6cee494a42bc2a62001c6 (diff)
downloadhdf5-084b35362bfac78604b02654cdc2067488c00300.zip
hdf5-084b35362bfac78604b02654cdc2067488c00300.tar.gz
hdf5-084b35362bfac78604b02654cdc2067488c00300.tar.bz2
[svn-r5393] Purpose:
New Feature Description: The VFL flush function is called immediately before a file is closed. This can cause duplicate syncronization actions to occur, if the VFL close function also performs them. Solution: Added 'closing' parameter to VFL 'flush' operation. This allows the VFL flush function to bypass operations that will be duplicated within the VFL close function. Additionally, use the 'closing' parameter to bypass calls to MPI_File_sync() when set. Since MPI_File_close() also syncronizes the file, this avoids the terrible performance hit taken when calling MPI_File_sync() as the file is closing. Platforms tested: IRIX64 6.5 (modi4)
Diffstat (limited to 'src/H5FDcore.c')
-rw-r--r--src/H5FDcore.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/H5FDcore.c b/src/H5FDcore.c
index 13a4a01..e97e01e 100644
--- a/src/H5FDcore.c
+++ b/src/H5FDcore.c
@@ -78,7 +78,7 @@ typedef struct H5FD_core_fapl_t {
static void *H5FD_core_fapl_get(H5FD_t *_file);
static H5FD_t *H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
-static herr_t H5FD_core_flush(H5FD_t *_file);
+static herr_t H5FD_core_flush(H5FD_t *_file, hbool_t closing);
static herr_t H5FD_core_close(H5FD_t *_file);
static int H5FD_core_cmp(const H5FD_t *_f1, const H5FD_t *_f2);
static haddr_t H5FD_core_get_eoa(H5FD_t *_file);
@@ -365,7 +365,7 @@ H5FD_core_open(const char *name, unsigned UNUSED flags, hid_t fapl_id,
*-------------------------------------------------------------------------
*/
static herr_t
-H5FD_core_flush(H5FD_t *_file)
+H5FD_core_flush(H5FD_t *_file, hbool_t UNUSED closing)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
@@ -425,7 +425,7 @@ H5FD_core_close(H5FD_t *_file)
FUNC_ENTER(H5FD_core_close, FAIL);
/* Flush */
- if (H5FD_core_flush(_file)<0)
+ if (H5FD_core_flush(_file,TRUE)<0)
HRETURN_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "unable to flush file");
/* Release resources */