diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2002-05-10 17:11:06 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2002-05-10 17:11:06 (GMT) |
commit | 9815305745d7317d7bd6cee494a42bc2a62001c6 (patch) | |
tree | 313372cb935ed20093a2fbc7405a9ebffa1ae9bc /src/H5HL.c | |
parent | dabf67548199453f923ea751d7978e7382377ef9 (diff) | |
download | hdf5-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/H5HL.c')
-rw-r--r-- | src/H5HL.c | 14 |
1 files changed, 0 insertions, 14 deletions
@@ -30,8 +30,6 @@ #include "H5MMprivate.h" /*core memory management */ #include "H5Pprivate.h" /*property lists */ -#include "H5FDmpio.h" /*for H5FD_mpio_tas_allsame() */ - #define H5HL_FREE_NULL 1 /*end of free list on disk */ #define PABLO_MASK H5HL_mask @@ -394,10 +392,6 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap) hdr_end_addr = addr + (hsize_t)H5HL_SIZEOF_HDR(f); if (H5F_addr_eq(heap->addr, hdr_end_addr)) { /* The header and data are contiguous */ -#ifdef H5_HAVE_PARALLEL - if (IS_H5FD_MPIO(f)) - H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ -#endif /* H5_HAVE_PARALLEL */ if (H5F_block_write(f, H5FD_MEM_LHEAP, addr, (H5HL_SIZEOF_HDR(f)+heap->disk_alloc), H5P_DATASET_XFER_DEFAULT, heap->chunk) < 0) { @@ -405,19 +399,11 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap) "unable to write heap header and data to file"); } } else { -#ifdef H5_HAVE_PARALLEL - if (IS_H5FD_MPIO(f)) - H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ -#endif /* H5_HAVE_PARALLEL */ if (H5F_block_write(f, H5FD_MEM_LHEAP, addr, H5HL_SIZEOF_HDR(f), H5P_DATASET_XFER_DEFAULT, heap->chunk)<0) { HRETURN_ERROR(H5E_HEAP, H5E_WRITEERROR, FAIL, "unable to write heap header to file"); } -#ifdef H5_HAVE_PARALLEL - if (IS_H5FD_MPIO(f)) - H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ -#endif /* H5_HAVE_PARALLEL */ if (H5F_block_write(f, H5FD_MEM_LHEAP, heap->addr, heap->disk_alloc, H5P_DATASET_XFER_DEFAULT, heap->chunk + H5HL_SIZEOF_HDR(f)) < 0) { |