summaryrefslogtreecommitdiffstats
path: root/src/H5F.c
diff options
context:
space:
mode:
authorBill Wendling <wendling@ncsa.uiuc.edu>2003-03-20 17:39:06 (GMT)
committerBill Wendling <wendling@ncsa.uiuc.edu>2003-03-20 17:39:06 (GMT)
commita90774e8cc0028b9935c6dfadb2a316337e4eea4 (patch)
tree2a922d79ef410a3f80e9cf4d905c29aaaf76f7c4 /src/H5F.c
parent9f7ef95fcd3eebe2f8edea204052c4f93776649b (diff)
downloadhdf5-a90774e8cc0028b9935c6dfadb2a316337e4eea4.zip
hdf5-a90774e8cc0028b9935c6dfadb2a316337e4eea4.tar.gz
hdf5-a90774e8cc0028b9935c6dfadb2a316337e4eea4.tar.bz2
[svn-r6514] Purpose:
Bug fix and Update Description: From Quincey's comments on the code I checked in last night: - In H5F_close call, the "private" processes should call the H5F_flush with the "CLEAR_ONLY" flag. - There's no need for a special case for FPHDF5 in the FD_real_alloc function since FPHDF5 doesn't define an alloc function. - The return type of H5Pset_fapl_fphdf5 should be herr_t instead of hid_t. I don't know how it got that way in the first place. - The variable names for MPI types and the structure typedefs should be switched: H5FP_request/H5FP_request_t to H5FP_request_t/H5FP_request and so on. - In the H5FP.c module, I was commiting the H5FP_request MPI datatype but using the wrong offset field... Platforms tested: Linux...will test on others, but these are mostly FPHDF5 changes. Misc. update:
Diffstat (limited to 'src/H5F.c')
-rw-r--r--src/H5F.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/H5F.c b/src/H5F.c
index c096c21..21db0ba 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -2979,6 +2979,10 @@ H5F_close(H5F_t *f)
/* Only flush at this point if the file will be closed */
if (closing) {
+ /* Dump debugging info */
+ H5AC_debug(f);
+ H5F_istore_stats(f, FALSE);
+
#ifdef H5_HAVE_FPHDF5
/*
* We only want the captain to perform the flush of the metadata
@@ -2988,19 +2992,24 @@ H5F_close(H5F_t *f)
H5FD_fphdf5_is_captain(f->shared->lf)) {
#endif /* H5_HAVE_FPHDF5 */
- /* Dump debugging info */
- H5AC_debug(f);
- H5F_istore_stats(f, FALSE);
-
/* Flush and destroy all caches */
if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache");
#ifdef H5_HAVE_FPHDF5
+ } else {
+ /*
+ * If this isn't the captain process, flush but only clear
+ * the flags.
+ */
+ if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
+ H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING | H5F_FLUSH_CLEAR_ONLY) < 0)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache");
+
}
- /* Wait for the captain to finish up... */
+ /* Let's all meet up now... */
if (H5FD_is_fphdf5_driver(f->shared->lf))
MPI_Barrier(H5FP_SAP_BARRIER_COMM);
#endif /* H5_HAVE_FPHDF5 */