Whamcloud - gitweb
LU-14462 gss: fix support for namespace in lgss_keyring
[fs/lustre-release.git] / lustre / tests / mpi / lp_utils.c
index ae7bd77..8bcb555 100644 (file)
@@ -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.
  *
  * 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) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
 #include <time.h>
 #include <sys/time.h>
 #include <sys/types.h>
-#include <asm/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <fcntl.h>
 #include <errno.h>
-#include "lustre/lustre_user.h"
 #include "lp_utils.h"
 
 #define MAX_PROCESSES 8
 
-int verbose = 0;
-int debug = 0;
+int verbose;
+int debug;
 
 char hostname[1024];
 
 struct timeval t1, t2;
 
-char *timestamp() {
-        static char datestring[80];
-        time_t timestamp;
+char *timestamp()
+{
+       static char datestring[80];
+       time_t timestamp;
 
-        fflush(stdout);
-        timestamp = time(NULL);
-        strftime(datestring, 80, "%T", localtime(&timestamp));
+       fflush(stdout);
+       timestamp = time(NULL);
+       strftime(datestring, 80, "%T", localtime(&timestamp));
 
-        return datestring;
+       return datestring;
 }
 
-inline void begin(char *str) {
-        if (verbose > 0 && rank == 0) {
-                gettimeofday(&t1, NULL);
-                printf("%s:\tBeginning %s\n", timestamp(), str);
-                fflush(stdout);
-        }
+void begin(char *str)
+{
+       if (verbose > 0 && rank == 0) {
+               gettimeofday(&t1, NULL);
+               printf("%s:\tBeginning %s\n", timestamp(), str);
+               fflush(stdout);
+       }
 }
 
-inline void end(char *str) {
-        float elapsed;
-
-        MPI_Barrier(MPI_COMM_WORLD);
-        if (verbose > 0 && rank == 0) {
-                gettimeofday(&t2, NULL);
-                elapsed = (t2.tv_sec + ((float)t2.tv_usec/1000000))
-                          - (t1.tv_sec + ((float)t1.tv_usec/1000000));
-                if (elapsed >= 60) {
-                        printf("%s:\tFinished %-15s(%.2f min)\n",
-                               timestamp(), str, elapsed / 60);
-                } else {
-                        printf("%s:\tFinished %-15s(%.3f sec)\n",
-                              timestamp(), str, elapsed);
+void end(char *str)
+{
+       float elapsed;
 
-                }
-                fflush(stdout);
-        }
+       MPI_Barrier(MPI_COMM_WORLD);
+       if (verbose > 0 && rank == 0) {
+               gettimeofday(&t2, NULL);
+               elapsed = (t2.tv_sec + ((float)t2.tv_usec / 1000000)) -
+                       (t1.tv_sec + ((float)t1.tv_usec / 1000000));
+               if (elapsed >= 60) {
+                       printf("%s:\tFinished %-15s(%.2f min)\n", timestamp(),
+                              str, elapsed / 60);
+               } else {
+                       printf("%s:\tFinished %-15s(%.3f sec)\n",
+                              timestamp(), str, elapsed);
+               }
+               fflush(stdout);
+       }
 }
 
 void dump_diff(char *orig_buf, char *buf, int size, long _off)
 {
-        int i, diff, off;
-        char *p, *end;
+       int i, diff, off;
+       char *p, *end;
 
-        printf("commpared buf size %d, at offset %lu\n\n", size, _off);
+       printf("commpared buf size %d, at offset %lu\n\n", size, _off);
 
-        if (orig_buf) {
-                printf("original buf:\n");
-                p = orig_buf;
-                end = orig_buf + size;
-                i = 1;
-                while (p < end) {
-                        printf(" %8lx", *(long *)p);
-                        p += sizeof(long);
-                        if (i++%8 == 0)
-                                printf("\n");
-                }
-                if (i%8) printf("\n\n");
-                else printf("\n");
-        }
+       if (orig_buf) {
+               printf("original buf:\n");
+               p = orig_buf;
+               end = orig_buf + size;
+               i = 1;
+               while (p < end) {
+                       printf(" %8lx", *(long *)p);
+                       p += sizeof(long);
+                       if (i++ % 8 == 0)
+                               printf("\n");
+               }
+               if (i % 8)
+                       printf("\n\n");
+               else
+                       printf("\n");
+       }
 
-        if (buf) {
-                printf("different data: diff_data(orig_data)\n");
-                diff = 0;
-                off = 0;
-                i = 1;
-                p = buf;
-                end = buf + size;
-                while (p < end) {
-                        if (memcmp(p, orig_buf + off, sizeof(long)) != 0) {
-                                printf("\toff: %5d,\tdata: %8lx (%8lx)\n", off,
-                                       *(unsigned long *)p,
-                                       *(unsigned long *)(orig_buf + off));
-                                diff++;
-                        }
-                        off += sizeof(long);
-                        p += sizeof(long);
-                }
-                printf("\n %d total differents found\n\n", diff);
-        }
+       if (buf) {
+               printf("different data: diff_data(orig_data)\n");
+               diff = 0;
+               off = 0;
+               i = 1;
+               p = buf;
+               end = buf + size;
+               while (p < end) {
+                       if (memcmp(p, orig_buf + off, sizeof(long)) != 0) {
+                               printf("\toff: %5d,\tdata: %8lx (%8lx)\n", off,
+                                      *(unsigned long *)p,
+                                      *(unsigned long *)(orig_buf + off));
+                               diff++;
+                       }
+                       off += sizeof(long);
+                       p += sizeof(long);
+               }
+               printf("\n %d total differents found\n\n", diff);
+       }
 }
 
 void lp_gethostname(void)
 {
-        if (gethostname(hostname, 1024) == -1) {
-                fprintf(stderr, "gethostname: (%d)%s", errno, strerror(errno));
-                MPI_Abort(MPI_COMM_WORLD, 2);
-        }
+       if (gethostname(hostname, 1024) == -1) {
+               fprintf(stderr, "gethostname: (%d)%s", errno, strerror(errno));
+               MPI_Abort(MPI_COMM_WORLD, 2);
+       }
 }
 
-/* This function does not FAIL if the requested "name" does not exit.
+/*
+ * This function does not FAIL if the requested "name" does not exit.
  * This is just to clean up any files or directories left over from
  * previous runs
  */
 void remove_file_or_dir(char *name)
 {
-        struct stat statbuf;
-        char errmsg[MAX_FILENAME_LEN + 20];
+       struct stat statbuf;
 
-        if (stat(name, &statbuf) != -1) {
-                if (S_ISREG(statbuf.st_mode)) {
-                        printf("stale file found\n");
-                        if (unlink(name) == -1) {
-                                sprintf(errmsg, "unlink of %s", name);
-                                FAIL(errmsg);
-                        }
-                }
-                if (S_ISDIR(statbuf.st_mode)) {
-                        printf("stale directory found\n");
-                        if (rmdir(name) == -1) {
-                                sprintf(errmsg, "rmdir of %s", name);
-                                FAIL(errmsg);
-                        }
-                }
-        }
+       if (stat(name, &statbuf) != -1) {
+               if (S_ISREG(statbuf.st_mode)) {
+                       printf("stale file found\n");
+                       if (unlink(name) == -1)
+                               FAILF("unlink of %s", name);
+               }
+               if (S_ISDIR(statbuf.st_mode)) {
+                       printf("stale directory found\n");
+                       if (rmdir(name) == -1)
+                               FAILF("rmdir of %s", name);
+               }
+       }
 }
 
 void create_file(char *name, long filesize, int fill)
 {
-        static char filename[MAX_FILENAME_LEN];
-        char errmsg[MAX_FILENAME_LEN + 20];
-        char buf[1024 * 8];
-        char c = 'A' + size;
-        int fd, rc;
-        short zero = 0;
-        long left = filesize;
+       static char filename[MAX_FILENAME_LEN];
+       char buf[1024 * 8];
+       char c = 'A' + size;
+       int fd, rc;
+       short zero = 0;
+       long left = filesize;
 
-        /* Process 0 creates the test file(s) */
-        if (rank == 0) {
-                sprintf(filename, "%s/%s", testdir, name);
-                remove_file_or_dir(filename);
-                if ((fd = creat(filename, FILEMODE)) == -1) {
-                        sprintf(errmsg, "create of file %s", filename);
-                        FAIL(errmsg);
-                }
-                if (filesize > 0) {
-                        if (lseek(fd, filesize - 1, SEEK_SET) == -1) {
-                                close(fd);
-                                sprintf(errmsg, "lseek of file %s", filename);
-                                FAIL(errmsg);
-                        }
-                        if (write(fd, &zero, 1) == -1) {
-                                close(fd);
-                                sprintf(errmsg, "write of file %s", filename);
-                                FAIL(errmsg);
-                        }
-                }
-                if (filesize > 0 && fill) {
-                        if (lseek(fd, 0, SEEK_SET) == -1) {
-                                close(fd);
-                                sprintf(errmsg, "lseek of file %s", filename);
-                                FAIL(errmsg);
-                        }
-                        memset(buf, c, 1024);
-                        while (left > 0) {
-                                if ((rc = write(fd, buf,
-                                                left > (1024 * 8) ? (1024 * 8) : left))
-                                    == -1) {
-                                        close(fd);
-                                        sprintf(errmsg, "write of file %s", filename);
-                                        FAIL(errmsg);
-                                }
-                                left -= rc;
-                        }
-                }
-                if (close(fd) == -1) {
-                        sprintf(errmsg, "close of file %s", filename);
-                        FAIL(errmsg);
-                }
-        }
+       /* Process 0 creates the test file(s) */
+       if (rank == 0) {
+               sprintf(filename, "%s/%s", testdir, name);
+               remove_file_or_dir(filename);
+               fd = creat(filename, FILEMODE);
+               if (fd < 0)
+                       FAILF("create of file %s", filename);
+
+               if (filesize > 0) {
+                       if (lseek(fd, filesize - 1, SEEK_SET) == -1) {
+                               close(fd);
+                               FAILF("lseek of file %s", filename);
+                       }
+                       if (write(fd, &zero, 1) == -1) {
+                               close(fd);
+                               FAILF("write of file %s", filename);
+                       }
+               }
+               if (filesize > 0 && fill) {
+                       if (lseek(fd, 0, SEEK_SET) == -1) {
+                               close(fd);
+                               FAILF("lseek of file %s", filename);
+                       }
+                       memset(buf, c, 1024);
+                       while (left > 0) {
+                               rc = write(fd, buf, MAX(left, 8192));
+                               if (rc < 0) {
+                                       close(fd);
+                                       FAILF("write of file %s", filename);
+                               }
+                               left -= rc;
+                       }
+               }
+               if (close(fd) == -1)
+                       FAILF("close of file %s", filename);
+       }
 }
 
 void check_stat(char *filename, struct stat *state, struct stat *old_state)
 {
-        char errmsg[MAX_FILENAME_LEN+20];
-
-        if (stat(filename, state) == -1) {
-                sprintf(errmsg, "stat of file %s", filename);
-                FAIL(errmsg);
-        }
+       if (stat(filename, state) == -1)
+               FAILF("stat of file %s", filename);
 
-        if (memcmp(state, old_state, sizeof(struct stat)) != 0) {
-                errno = 0;
-                sprintf(errmsg, LP_STAT_FMT, LP_STAT_ARGS);
-                FAIL(errmsg);
-        }
+       if (memcmp(state, old_state, sizeof(struct stat)) != 0) {
+               errno = 0;
+               FAILF(LP_STAT_FMT, LP_STAT_ARGS);
+       }
 }
 
 void remove_file(char *name)
 {
-        char filename[MAX_FILENAME_LEN];
-        char errmsg[MAX_FILENAME_LEN + 20];
+       char filename[MAX_FILENAME_LEN];
 
-        /* Process 0 remove the file(s) */
-        if (rank == 0) {
-                sprintf(filename, "%s/%s", testdir, name);
-                if (unlink(filename) == -1) {
-                        sprintf(errmsg, "unlink of file %s", filename);
-                        FAIL(errmsg);
-                }
-        }
+       /* Process 0 remove the file(s) */
+       if (rank == 0) {
+               sprintf(filename, "%s/%s", testdir, name);
+               if (unlink(filename) == -1)
+                       FAILF("unlink of file %s", filename);
+       }
 }
 
 void fill_stride(char *buf, int buf_size, long long rank, long long _off)
 {
-        char *p = buf;
-        long long off, data[2];
-        int cp, left = buf_size;
+       char *p = buf;
+       long long off, data[2];
+       int cp, left = buf_size;
 
-        data[0] = rank;
-        off = _off;
-        while (left > 0) {
-                data[1] = off;
-                cp = left > sizeof(data) ? sizeof(data) : left;
-                memcpy(p, data, cp);
-                off += cp;
-                p += cp;
-                left -= cp;
-        }
+       data[0] = rank;
+       off = _off;
+       while (left > 0) {
+               data[1] = off;
+               cp = left > sizeof(data) ? sizeof(data) : left;
+               memcpy(p, data, cp);
+               off += cp;
+               p += cp;
+               left -= cp;
+       }
 }