From fed83e1b73d0b31cf8a5dd8b542e2d0d4cf352d0 Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Tue, 23 Dec 2003 21:14:27 +0000 Subject: [PATCH] Fix partition state read to deal with possible EINTR and errors better. --- src/slurmctld/partition_mgr.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/slurmctld/partition_mgr.c b/src/slurmctld/partition_mgr.c index 9ffff62ea87..e0cb0bc7699 100644 --- a/src/slurmctld/partition_mgr.c +++ b/src/slurmctld/partition_mgr.c @@ -360,14 +360,16 @@ int load_all_part_state(void) } else { data_allocated = BUF_SIZE; data = xmalloc(data_allocated); - while ((data_read = - read(state_fd, &data[data_size], - BUF_SIZE)) == BUF_SIZE) { - data_size += data_read; - data_allocated += BUF_SIZE; + while (1) { + data_read = read(state_fd, &data[data_size], BUF_SIZE); + if ((data_read == -1) && (errno == EINTR)) + continue; + if (data_read == 0) /* eof */ + break; + data_size += data_read; + data_allocated += data_read; xrealloc(data, data_allocated); } - data_size += data_read; close(state_fd); if (data_read < 0) error("Error reading file %s: %m", state_file); -- GitLab