X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fmpi%2Fwrite_append_truncate.c;h=f2c6cb95344ccc8c16b57b65bc2d74c6c5afc24b;hb=f44fe5abbc74ca79790c100a30193ded1ef1e6c9;hp=bae9ba4438deb25d09d5f0e188551f956aa23233;hpb=20227aaa0d5d4622cb87c3b19761363543895116;p=fs%2Flustre-release.git diff --git a/lustre/tests/mpi/write_append_truncate.c b/lustre/tests/mpi/write_append_truncate.c index bae9ba4..f2c6cb9 100644 --- a/lustre/tests/mpi/write_append_truncate.c +++ b/lustre/tests/mpi/write_append_truncate.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -17,17 +15,15 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2012, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -161,7 +157,7 @@ int main(int argc, char *argv[]) switch(c) { case 'a': append_max = strtoul(optarg, &end, 0); - if (append_max == 0 || *end) { + if (append_max < 2 || *end) { fprintf(stderr, "%s: bad append option '%s'\n", prog, optarg); usage(prog); @@ -202,7 +198,7 @@ int main(int argc, char *argv[]) break; case 'w': write_max = strtoul(optarg, &end, 0); - if (write_max == 0 || *end) { + if (write_max < 2 || *end) { fprintf(stderr, "%s: bad write option '%s'\n", prog, optarg); usage(prog); @@ -303,7 +299,8 @@ int main(int argc, char *argv[]) if (rank == 0) { write_size = (rand() % (write_max - 1)) + 1; append_size = (rand() % (append_max - 1)) + 1; - trunc_size = (rand() % ((trunc_max?: append_size)-1))+1; + trunc_size = (append_size == 1) ? 1 : + (rand() % ((trunc_max?: append_size)-1))+1; trunc_offset = write_size + trunc_size; if (verbose || n % 1000 == 0) @@ -369,15 +366,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 +395,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 @@ -530,7 +531,7 @@ int main(int argc, char *argv[]) trunc_offset, trunc_offset); sprintf(command, "od -Ax -a %s", fnames[0]); - system(command); + ret = system(command); MPI_Abort(MPI_COMM_WORLD, 1); } }