Author: kraftche Date: 2011-01-07 12:33:20 -0600 (Fri, 07 Jan 2011) New Revision: 4424 Modified: MOAB/trunk/src/io/ReadHDF5.cpp Log: verify that filesystem is GPFS before prepending bglockless: to filenames Modified: MOAB/trunk/src/io/ReadHDF5.cpp =================================================================== --- MOAB/trunk/src/io/ReadHDF5.cpp 2011-01-06 21:36:08 UTC (rev 4423) +++ MOAB/trunk/src/io/ReadHDF5.cpp 2011-01-07 18:33:20 UTC (rev 4424) @@ -50,6 +50,12 @@ #include <limits> #include <functional> +#ifdef BLUEGENE +# include <sys/vfs.h> + // Magic number for GPFS file system (ASCII for 'G' 'P' 'F' 'S') +# define BG_LOCKLESS_GPFS 0x47504653 +#endif + #include "IODebugTrack.hpp" #include "ReadHDF5Dataset.hpp" #include "ReadHDF5VarLen.hpp" @@ -289,9 +295,15 @@ // lockless file IO on IBM BlueGene std::string pfilename(filename); #ifdef BLUEGENE - if (0 != pfilename.find("bglockless:")) - pfilename = std::string("bglockless:") + pfilename; - dbgOut.printf( 1, "Enabling lockless IO for BlueGene (filename: \"%s\")\n", pfilename.c_str() ); + if (0 != pfilename.find("bglockless:")) { + // check for GPFS file system + struct statfs fsdata; + statfs( filename, &fsdata ); + if (fsdata.f_type == BG_LOCKLESS_GPFS) { + pfilename = std::string("bglockless:") + pfilename; + dbgOut.printf( 1, "Enabling lockless IO for BlueGene (filename: \"%s\")\n", pfilename.c_str() ); + } + } #endif #ifndef HDF5_PARALLEL
participants (1)
-
kraftche@cae.wisc.edu