Index: trunk/psModules/src/config/pmConfig.c
===================================================================
--- trunk/psModules/src/config/pmConfig.c	(revision 20254)
+++ trunk/psModules/src/config/pmConfig.c	(revision 20260)
@@ -1721,18 +1721,22 @@
     PS_ASSERT_PTR_NON_NULL(filename, false);
 
-    if (access(filename, R_OK) == 0) {
-        // file already exists
-        if (trunc) {
-            if(truncate(filename, 0) != 0) {
-                psError(PS_ERR_IO, true, "Failed to truncate file, %s\n", filename);
-                return false;
-            }
-        }
-    } else {
+    // re-try access up to 5 times (1.25sec) to reduce NFS lurches
+    for (int i = 0; i < 5; i++) {
+	if (access(filename, R_OK) == 0) {
+	    // file already exists
+	    if (trunc) {
+		if(truncate(filename, 0) != 0) {
+		    psError(PS_ERR_IO, true, "Failed to truncate file, %s\n", filename);
+		    return false;
+		}
+	    }
+	    return true;
+	} 
+
         // file does not exist
         if (create) {
             int fd = open(filename, O_WRONLY|O_CREAT, 0666);
             if (fd == 0) {
-                psError(PS_ERR_IO, true, "Failed to close file, %s\n", filename);
+                psError(PS_ERR_IO, true, "Failed to open & create file, %s\n", filename);
                 return false;
             }
@@ -1741,13 +1745,12 @@
                 return false;
             }
-        } else {
-            // if the file does not exist and create isn't set, then we
-            // should puke
-            psError(PS_ERR_IO, true, "Unable to access file %s", filename);
-            return false;
-        }
-    }
-
-    return true;
-}
-
+	    return true;
+        }
+	usleep (250000);
+    }
+
+    // We've tried 5 times to access the file; give up and report a problem.  If the file does
+    // not exist and create isn't set, then we should puke
+    psError(PS_ERR_IO, true, "Unable to access file %s", filename);
+    return false;
+}
