diff options
author | Albert Cheng <acheng@hdfgroup.org> | 2000-03-24 02:12:44 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 2000-03-24 02:12:44 (GMT) |
commit | e2c95c478aeb1fbf31b06f6bfcea4b750d414df6 (patch) | |
tree | 115fa55209fb1c04d0c60682050277bc0cc2aaef /src/H5HL.c | |
parent | f5111838893288dc6f52e19e62b417b9d9dd85cf (diff) | |
download | hdf5-e2c95c478aeb1fbf31b06f6bfcea4b750d414df6.zip hdf5-e2c95c478aeb1fbf31b06f6bfcea4b750d414df6.tar.gz hdf5-e2c95c478aeb1fbf31b06f6bfcea4b750d414df6.tar.bz2 |
[svn-r2057] Purpose:
Bug fix for parallel mode.
Description:
H5FD_mpio_tas_allsame was called for all cases, even when
MPIO is not used for access. That corrupted the internal
file handle structure.
Solution:
Define a macro, IS_H5FD_MPIO(f), for testing if f is opened with
MPIO access. Will call H5FD_mpio_tas_allsame only if this
condition is true.
Platform tested:
O2K, both -64 and -n32 modes.
Diffstat (limited to 'src/H5HL.c')
-rw-r--r-- | src/H5HL.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -380,7 +380,8 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap) if (H5F_addr_eq(heap->addr, hdr_end_addr)) { /* The header and data are contiguous */ #ifdef H5_HAVE_PARALLEL - H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ + 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, addr, (hsize_t)(H5HL_SIZEOF_HDR(f)+heap->disk_alloc), @@ -390,7 +391,8 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap) } } else { #ifdef H5_HAVE_PARALLEL - H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ + 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, addr, (hsize_t)H5HL_SIZEOF_HDR(f), H5P_DEFAULT, heap->chunk)<0) { @@ -398,7 +400,8 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap) "unable to write heap header to file"); } #ifdef H5_HAVE_PARALLEL - H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ + 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, heap->addr, (hsize_t)(heap->disk_alloc), H5P_DEFAULT, |