diff options
author | Bill Wendling <wendling@ncsa.uiuc.edu> | 2003-03-20 17:39:06 (GMT) |
---|---|---|
committer | Bill Wendling <wendling@ncsa.uiuc.edu> | 2003-03-20 17:39:06 (GMT) |
commit | a90774e8cc0028b9935c6dfadb2a316337e4eea4 (patch) | |
tree | 2a922d79ef410a3f80e9cf4d905c29aaaf76f7c4 /src/H5F.c | |
parent | 9f7ef95fcd3eebe2f8edea204052c4f93776649b (diff) | |
download | hdf5-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.c | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -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 */ |