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