Whamcloud - gitweb
Branch: HEAD
[fs/lustre-release.git] / lustre / tests / createdestroy.c
index 34e855a..bc145e4 100644 (file)
@@ -1,3 +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 <stdlib.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -42,8 +78,7 @@ static int be_verbose(int verbose, struct timeval *next_time,
                 gettimeofday(&now, NULL);
 
         /* A positive verbosity means to print every X iterations */
-        if (verbose > 0 &&
-            (next_num == NULL || num >= *next_num || num >= num_total)) {
+        if (verbose > 0 && (num >= *next_num || num >= num_total)) {
                 *next_num += verbose;
                 if (next_time) {
                         next_time->tv_sec = now.tv_sec - verbose;
@@ -56,8 +91,7 @@ static int be_verbose(int verbose, struct timeval *next_time,
         if (verbose < 0 && next_time != NULL && difftime(&now, next_time) >= 0){
                 next_time->tv_sec = now.tv_sec - verbose;
                 next_time->tv_usec = now.tv_usec;
-                if (next_num)
-                        *next_num = num;
+                *next_num = num;
                 return 1;
         }
 
@@ -95,44 +129,44 @@ static int get_verbose(char *func, const char *arg)
 int main(int argc, char *argv[])
 {
         char filename[1024];
-       int verbose = 0;
+        int verbose = 0;
         unsigned long count, i;
-       int threads = 0;
-       char *end;
-       int rc = 0;
+        int threads = 0;
+        char *end;
+        int rc = 0;
 
         if (argc < 3 || argc > 5) {
                 fprintf(stderr,
-                       "usage: %s <filename> <count> [verbose [threads]]\n",
-                       argv[0]);
+                        "usage: %s <filename> <count> [verbose [threads]]\n",
+                        argv[0]);
                 exit(1);
         }
 
         count = strtoul(argv[2], &end, 0);
-       if (*end) {
+        if (*end) {
                 fprintf(stderr, "%s: error: bad iteration count '%s'\n",
                         argv[0], argv[1]);
-               exit(2);
-       }
-       if (argc == 4) {
-               verbose = get_verbose(argv[0], argv[3]);
-               if (verbose == BAD_VERBOSE)
-                       exit(2);
-       }
-       if (argc == 5) {
-               threads = strtoul(argv[4], &end, 0);
-               if (*end) {
-                       fprintf(stderr, "%s: error: bad thread count '%s'\n",
-                               argv[0], argv[1]);
-                       exit(2);
-               }
-       }
+                exit(2);
+        }
+        if (argc == 4) {
+                verbose = get_verbose(argv[0], argv[3]);
+                if (verbose == BAD_VERBOSE)
+                        exit(2);
+        }
+        if (argc == 5) {
+                threads = strtoul(argv[4], &end, 0);
+                if (*end) {
+                        fprintf(stderr, "%s: error: bad thread count '%s'\n",
+                                argv[0], argv[1]);
+                        exit(2);
+                }
+        }
 
         for (i = 1; i <= threads; i++) {
                 rc = fork();
                 if (rc < 0) {
                         fprintf(stderr, "%s: error: #%ld - %s\n",
-                               cmdname(argv[0]), i, strerror(rc = errno));
+                                cmdname(argv[0]), i, strerror(rc = errno));
                         break;
                 } else if (rc == 0) {
                         thread = i;
@@ -143,7 +177,7 @@ int main(int argc, char *argv[])
                 rc = 0;
         }
 
-        if (threads && thread == 0) {  /* parent process */
+        if (threads && thread == 0) {   /* parent process */
                 int live_threads = threads;
 
                 while (live_threads > 0) {
@@ -178,47 +212,47 @@ int main(int argc, char *argv[])
                                 live_threads--;
                         }
                 }
-       } else {
+        } else {
                 struct timeval start, end, next_time;
-               unsigned long next_count;
-               double diff;
-
-               gettimeofday(&start, NULL);
-               next_time.tv_sec = start.tv_sec - verbose;
-               next_time.tv_usec = start.tv_usec;
-
-               for (i = 0, next_count = verbose; i < count; i++) {
-                       if (threads)
-                               sprintf(filename, "%s-%d-%ld",
-                                       argv[1], thread, i);
-                       else
-                               sprintf(filename, "%s-%ld", argv[1], i);
-
-                       rc = mknod(filename, S_IFREG, 0);
-                       if (rc < 0) {
-                               fprintf(stderr, "%s: error: mknod(%s): %s\n",
-                                       cmdname(argv[0]), filename,
-                                       strerror(errno));
-                               rc = errno;
-                               break;
-                       }
-                       if (unlink(filename) < 0) {
-                               fprintf(stderr, "%s: error: unlink(%s): %s\n",
-                                       cmdname(argv[0]), filename,
-                                       strerror(errno));
-                               rc = errno;
-                               break;
-                       }
-                       if (be_verbose(verbose, &next_time,i,&next_count,count))
-                               printf("%s: number %ld\n", cmdname(argv[0]), i);
-               }
-
-               gettimeofday(&end, NULL);
+                unsigned long next_count;
+                double diff;
+
+                gettimeofday(&start, NULL);
+                next_time.tv_sec = start.tv_sec - verbose;
+                next_time.tv_usec = start.tv_usec;
+
+                for (i = 0, next_count = verbose; i < count; i++) {
+                        if (threads)
+                                sprintf(filename, "%s-%d-%ld",
+                                        argv[1], thread, i);
+                        else
+                                sprintf(filename, "%s-%ld", argv[1], i);
+
+                        rc = mknod(filename, S_IFREG, 0);
+                        if (rc < 0) {
+                                fprintf(stderr, "%s: error: mknod(%s): %s\n",
+                                        cmdname(argv[0]), filename,
+                                        strerror(errno));
+                                rc = errno;
+                                break;
+                        }
+                        if (unlink(filename) < 0) {
+                                fprintf(stderr, "%s: error: unlink(%s): %s\n",
+                                        cmdname(argv[0]), filename,
+                                        strerror(errno));
+                                rc = errno;
+                                break;
+                        }
+                        if (be_verbose(verbose, &next_time,i,&next_count,count))
+                                printf("%s: number %ld\n", cmdname(argv[0]), i);
+                }
+
+                gettimeofday(&end, NULL);
                 diff = difftime(&end, &start);
 
-               printf("%s: %ldx2 files in %.4gs (%.4g ops/s): rc = %d: %s",
-                      cmdname(argv[0]), i, diff, (double)i * 2 / diff,
-                      rc, ctime(&end.tv_sec));
-       }
+                printf("%s: %ldx2 files in %.4gs (%.4g ops/s): rc = %d: %s",
+                       cmdname(argv[0]), i, diff, (double)i * 2 / diff,
+                       rc, ctime(&end.tv_sec));
+        }
         return rc;
 }