00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "ad_pfs.h"
00010
00011 void ADIOI_PFS_Flush(ADIO_File fd, int *error_code)
00012 {
00013 int err, np_total, np_comm;
00014 #ifndef PRINT_ERR_MSG
00015 static char myname[] = "ADIOI_PFS_FLUSH";
00016 #endif
00017
00018
00019
00020 err = fsync(fd->fd_sys);
00021 #ifdef PRINT_ERR_MSG
00022 *error_code = (err == 0) ? MPI_SUCCESS : MPI_ERR_UNKNOWN;
00023 #else
00024 if (err == -1) {
00025 *error_code = MPIR_Err_setmsg(MPI_ERR_IO, MPIR_ADIO_ERROR,
00026 myname, "I/O Error", "%s", strerror(errno));
00027 ADIOI_Error(fd, *error_code, myname);
00028 }
00029 else *error_code = MPI_SUCCESS;
00030 #endif
00031
00032
00033
00034
00035
00036
00037 MPI_Comm_size(MPI_COMM_WORLD, &np_total);
00038 MPI_Comm_size(fd->comm, &np_comm);
00039 if ((np_total == np_comm) && (!(fd->atomicity))) {
00040 err = _setiomode(fd->fd_sys, M_UNIX);
00041 err = _setiomode(fd->fd_sys, M_ASYNC);
00042 }
00043
00044 }