diff options
author | Albert Cheng <acheng@hdfgroup.org> | 2006-10-06 00:27:05 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 2006-10-06 00:27:05 (GMT) |
commit | ad80fe7ea97649a831087b52f1a81546000f7c7d (patch) | |
tree | 250b4bb0b07c443481fc2af68418a7d0c35320b8 | |
parent | 831be1cdff55df0e00163d0069171bbdde2b1d25 (diff) | |
download | hdf5-ad80fe7ea97649a831087b52f1a81546000f7c7d.zip hdf5-ad80fe7ea97649a831087b52f1a81546000f7c7d.tar.gz hdf5-ad80fe7ea97649a831087b52f1a81546000f7c7d.tar.bz2 |
[svn-r12725] Purpose:
Bug Fix (Bug 544)
Description:
SGI Altix's MPI_File_get_size overflowed at 2GB and more.
Put in a temporary patch to use stat() instead to make Cobalt
passing on this test (bigdset). A better fix (like detect if
MPI_File_get_size does not work before using this is preferred.)
Tested:
Cobalt and Heping.
-rw-r--r-- | testpar/testphdf5.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c index 4b0d5b3..e35bfed 100644 --- a/testpar/testphdf5.c +++ b/testpar/testphdf5.c @@ -310,10 +310,15 @@ create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type, /* * Check the size of a file using MPI routines + * Temporary hack: SGI Altix MPI_File_get_size() does not work correctly + * for size >= 2GB. Use stat for now. + * If stat() does not work for other systems, need to make it conditional + * compile for Altix only. */ MPI_Offset h5_mpi_get_file_size(const char *filename, MPI_Comm comm, MPI_Info info) { +#if 0 MPI_File fh; /* MPI file handle */ MPI_Offset size=0; /* File size to return */ @@ -325,6 +330,23 @@ h5_mpi_get_file_size(const char *filename, MPI_Comm comm, MPI_Info info) if (MPI_SUCCESS != MPI_File_close(&fh)) size=0; +#else + MPI_Offset size=0; /* File size to return */ +#ifdef H5_HAVE_STAT64 + /* use stat64 if available */ + struct stat64 mystat; +#else + struct stat mystat; +#endif + +#ifdef H5_HAVE_STAT64 + stat(filename, &mystat); +#else + stat(filename, &mystat); +#endif + + size = mystat.st_size; +#endif done: return(size); |