[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1rc2-53-gb250d33

mysql vizuser noreply at mpich.org
Fri Dec 13 12:25:35 CST 2013


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/b250d338e66667a8a1071a5f73a4151fd59f83b2

commit b250d338e66667a8a1071a5f73a4151fd59f83b2
Author: Rob Latham <robl at mcs.anl.gov>
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)" <dgoodell at cisco.com>

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


More information about the commits mailing list