From f96e6668688027d7aa1cf89f858b1313fc848db4 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Mon, 17 Aug 2009 21:59:23 +0000
Subject: [PATCH] tweak logic to log every fsync/close error

---
 src/slurmctld/state_save.c | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/slurmctld/state_save.c b/src/slurmctld/state_save.c
index 4ba689ca9d4..a6c893b7b83 100644
--- a/src/slurmctld/state_save.c
+++ b/src/slurmctld/state_save.c
@@ -61,23 +61,27 @@ static bool run_save_thread = true;
  * RET 0 on success or -1 on error */
 extern int fsync_and_close(int fd, char *file_type)
 {
-	int rc = 0;
-	int retval;
+	int rc = 0, retval, pos;
 
-	while ((retval = fsync(fd)) && (errno == EINTR))
-		;
-	if (retval != 0) {
-		rc = retval;
-		error("fsync() error writing %s state save file: %m", 
-		      file_type);
+	for (retval = 1, pos = 1; retval && pos < 4; pos++) {
+		retval = fsync(fd);
+		if (retval && (errno != EINTR)) {
+			error("fsync() error writing %s state save file: %m", 
+			      file_type);
+		}
 	}
-
-	while ((retval = close(fd)) && (errno == EINTR))
-		;
-	if (retval != 0) {
+	if (retval)
 		rc = retval;
-		error("close () error on %s state save file: %m", file_type);
+
+	for (retval = 1, pos = 1; retval && pos < 4; pos++) {
+		retval = close(fd);
+		if (retval && (errno != EINTR)) {
+			error("close () error on %s state save file: %m", 
+			      file_type);
+		}
 	}
+	if (retval)
+		rc = retval;
 
 	return rc;
 }
-- 
GitLab