summaryrefslogtreecommitdiffstats
path: root/src/H5O.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2002-05-10 17:11:06 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2002-05-10 17:11:06 (GMT)
commit9815305745d7317d7bd6cee494a42bc2a62001c6 (patch)
tree313372cb935ed20093a2fbc7405a9ebffa1ae9bc /src/H5O.c
parentdabf67548199453f923ea751d7978e7382377ef9 (diff)
downloadhdf5-9815305745d7317d7bd6cee494a42bc2a62001c6.zip
hdf5-9815305745d7317d7bd6cee494a42bc2a62001c6.tar.gz
hdf5-9815305745d7317d7bd6cee494a42bc2a62001c6.tar.bz2
[svn-r5390] Purpose:
Code cleanup Description: The parallel I/O file driver is optimized to only write metadata with one process (and broadcast the results to the other processes). This is currently enabled by a separate call to H5FD_mpio_tas_allsame() before each metadata write to the file. This can easily lead to problems where the prelude function call is omitted before the actual write code or, in a threaded environment, lead to race condititions where the value set is reset before being used. Solution: Since we only want to write metadata from one process, key off of the 'type' parameter (which has information about whether the data being written it metadata or raw data) to H5FD_mpio_write() as the method for determining whether to only write from one process or not. Platforms tested: IRIX64 6.5 (modi4)
Diffstat (limited to 'src/H5O.c')
-rw-r--r--src/H5O.c16
1 files changed, 0 insertions, 16 deletions
diff --git a/src/H5O.c b/src/H5O.c
index 3e038bc..1dd1d8a 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -27,10 +27,6 @@
#include "H5Oprivate.h"
#include "H5Pprivate.h"
-/* The MPIO driver for H5FD_mpio_tas_allsame() */
-#include "H5FDmpio.h"
-
-
#define PABLO_MASK H5O_mask
/* PRIVATE PROTOTYPES */
@@ -589,10 +585,6 @@ H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh)
combine=1;
} /* end if */
else {
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 will write*/
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_OHDR, addr, H5O_SIZEOF_HDR(f),
H5P_DATASET_XFER_DEFAULT, buf) < 0) {
HRETURN_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL,
@@ -675,10 +667,6 @@ H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh)
HDmemcpy(p+H5O_SIZEOF_HDR(f),oh->chunk[u].image,oh->chunk[u].size);
/* Write the combined prefix/chunk out */
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 write*/
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_OHDR, addr,
(H5O_SIZEOF_HDR(f)+oh->chunk[u].size),
H5P_DATASET_XFER_DEFAULT, p) < 0) {
@@ -690,10 +678,6 @@ H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh)
p = H5FL_BLK_FREE(chunk_image,p);
} /* end if */
else {
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 write*/
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_OHDR, oh->chunk[u].addr,
(oh->chunk[u].size),
H5P_DATASET_XFER_DEFAULT, oh->chunk[u].image) < 0) {