From ad80fe7ea97649a831087b52f1a81546000f7c7d Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Thu, 5 Oct 2006 19:27:05 -0500 Subject: [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. --- testpar/testphdf5.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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); -- cgit v0.12