[mpich] MPICH primary repository branch, master, updated. v3.1rc2-53-gb250d33
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via b250d338e66667a8a1071a5f73a4151fd59f83b2 (commit) from 6395fbaea13f9c1e92be521d15857562f5c84466 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/b250d338e66667a8a1071a5f73a4151fd5... commit b250d338e66667a8a1071a5f73a4151fd59f83b2 Author: Rob Latham <[email protected]> Date: Fri Dec 13 12:08:09 2013 -0600 deal with "infinitely stale" case Dave Goodell reported a situation where ROMIO would retry "forever" and suggested we give up after a large number of retries. Signed-off-by: "Dave Goodell (dgoodell)" <[email protected]> diff --git a/src/mpi/romio/adio/common/ad_fstype.c b/src/mpi/romio/adio/common/ad_fstype.c index 4bd1a11..145bda2 100644 --- a/src/mpi/romio/adio/common/ad_fstype.c +++ b/src/mpi/romio/adio/common/ad_fstype.c @@ -262,12 +262,17 @@ static void ADIO_FileSysType_fncall(const char *filename, int *fstype, int *erro #endif static char myname[] = "ADIO_RESOLVEFILETYPE_FNCALL"; +/* NFS can get stuck and end up returing ESTALE "forever" */ +#define MAX_ESTALE_RETRY 10000 + int retry_cnt; + *error_code = MPI_SUCCESS; #ifdef ROMIO_HAVE_STRUCT_STATVFS_WITH_F_BASETYPE + retry_cnt=0; do { err = statvfs(filename, &vfsbuf); - } while (err && (errno == ESTALE)); + } while (err && (errno == ESTALE) && retry_cnt++ < MAX_ESTALE_RETRY); if (err) { /* ENOENT may be returned in two cases: @@ -322,9 +327,10 @@ static void ADIO_FileSysType_fncall(const char *filename, int *fstype, int *erro #endif /* STATVFS APPROACH */ #ifdef HAVE_STRUCT_STATFS + retry_cnt = 0; do { err = statfs(filename, &fsbuf); - } while (err && (errno == ESTALE)); + } while (err && (errno == ESTALE) && retry_cnt++ < MAX_ESTALE_RETRY); if (err) { if(errno == ENOENT) { @@ -451,9 +457,10 @@ static void ADIO_FileSysType_fncall(const char *filename, int *fstype, int *erro #endif /* STATFS APPROACH */ #ifdef ROMIO_HAVE_STRUCT_STAT_WITH_ST_FSTYPE + retry_cnt = 0; do { err = stat(filename, &sbuf); - } while (err && (errno == ESTALE)); + } while (err && (errno == ESTALE) && retry_cnt++ < MAX_ESTALE_RETRY); if (err) { if(errno == ENOENT) { ----------------------------------------------------------------------- Summary of changes: src/mpi/romio/adio/common/ad_fstype.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org