From 7418dd0d056ef994d4f84037e98da1f9e86de1d5 Mon Sep 17 00:00:00 2001 From: Eric Mei Date: Fri, 15 Oct 2010 14:26:18 -0600 Subject: [PATCH] b=22168 write-append-truncate: retry write when receives EINTR. r=jian.yu r=vitaly.fertman --- lustre/tests/mpi/write_append_truncate.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lustre/tests/mpi/write_append_truncate.c b/lustre/tests/mpi/write_append_truncate.c index 7b14d72..5df1202 100644 --- a/lustre/tests/mpi/write_append_truncate.c +++ b/lustre/tests/mpi/write_append_truncate.c @@ -369,15 +369,17 @@ int main(int argc, char *argv[]) done = 0; do { ret = write(fd, write_buf+done,write_size-done); - if (verbose > 1 || ret <= 0) { - rprintf(rank, n, ret <= 0, + if (verbose > 1 || ret < 0) { + rprintf(rank, n, + ret < 0 && errno != EINTR, "write %d/%d @ %d: %s\n", ret + done, write_size, done, strerror(errno)); - if (ret <= 0) + if (ret < 0 && errno != EINTR) break; } - done += ret; + if (ret > 0) + done += ret; } while (done != write_size); } @@ -396,17 +398,19 @@ int main(int argc, char *argv[]) ret = write(fd, append_buf + done, append_size - done); if (ret < 0) { - rprintf(rank, n, ret < 0, + rprintf(rank, n, errno != EINTR, "append %u/%u: %s\n", ret + done, append_size, strerror(errno)); - break; + if (errno != EINTR) + break; } else if (verbose > 1 || ret != append_size) { rprintf(rank, n, ret != append_size, "append %u/%u\n", ret + done, append_size); } - done += ret; + if (ret > 0) + done += ret; } while (done != append_size); } else if (rank == trunc_rank) { /* XXX: truncating the same file descriptor as the -- 1.8.3.1