X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fwritemany.c;h=707ab8d4bacf74e018bebb66e62162909bffc9e3;hb=f0b4b681649a25199186e9aa415045716345222e;hp=ff9a21c566616fb40a896f03e00583870e9197ba;hpb=058912d856cb39095d2460133ef01ad889adf686;p=fs%2Flustre-release.git diff --git a/lustre/tests/writemany.c b/lustre/tests/writemany.c index ff9a21c..707ab8d 100644 --- a/lustre/tests/writemany.c +++ b/lustre/tests/writemany.c @@ -1,6 +1,39 @@ /* -*- 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. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). + * + * 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. + * + * GPL HEADER END */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + */ + #include #include #include @@ -42,13 +75,17 @@ struct kid_list_t { struct kid_list_t *head = NULL; -void push_kid(pid_t kid) +int push_kid(pid_t kid) { struct kid_list_t *new; new = (struct kid_list_t *)malloc(sizeof(struct kid_list_t)); + if (new == NULL) + return 1; + new->kid = kid; new->next = head; head = new; + return 0; } void kill_kids(void) @@ -141,6 +178,7 @@ int run_one_child(char *file, int thread, int seconds) maxrand *= 10; gettimeofday(&start, NULL); + cur = start; while(!rc) { if (usr1_received) @@ -182,8 +220,12 @@ int run_one_child(char *file, int thread, int seconds) } if (unlink(filename) < 0) { print_err("unlink", filename, &cur, errno); - rc = errno; - break; + if (errno == ENOENT) { + printf("Ignoring known bug 6082\n"); + } else { + rc = errno; + break; + } } } @@ -192,7 +234,8 @@ int run_one_child(char *file, int thread, int seconds) printf("%s: %7ld files, %4ld MB in %.2fs (%7.2f files/s, " "%5.2f MB/s): rc = %d\n", cmdname, nfiles, nbytes >> 20, diff, - (double)nfiles / diff, (double)nbytes/1024/1024 / diff, + diff == 0 ? (double)0 : (double)nfiles / diff, + diff == 0 ? (double)0 : (double)nbytes/1024/1024 / diff, rc); return rc; @@ -254,7 +297,11 @@ int main(int argc, char *argv[]) return (run_one_child(directory, i, duration)); } else { /* parent */ - push_kid(rc); + rc = push_kid(rc); + if (rc != 0) { + kill_kids(); + exit(3); + } } } /* parent process */