]> granicus.if.org Git - zfs/commitdiff
Retire legacy test infrastructure
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 16 Aug 2017 00:26:38 +0000 (17:26 -0700)
committerGitHub <noreply@github.com>
Wed, 16 Aug 2017 00:26:38 +0000 (17:26 -0700)
* Removed zpios kmod, utility, headers and man page.

* Removed unused scripts zpios-profile/*, zpios-test/*,
  zpool-config/*, smb.sh, zpios-sanity.sh, zpios-survey.sh,
  zpios.sh, and zpool-create.sh.

* Removed zfs-script-config.sh.in.  When building 'make' generates
  a common.sh with in-tree path information from the common.sh.in
  template.  This file and sourced by the test scripts and used
  for in-tree testing, it is not included in the packages.  When
  building packages 'make install' uses the same template to
  create a new common.sh which is appropriate for the packaging.

* Removed unused functions/variables from scripts/common.sh.in.
  Only minimal path information and configuration environment
  variables remain.

* Removed unused scripts from scripts/ directory.

* Remaining shell scripts in the scripts directory updated to
  cleanly pass shellcheck and added to checked scripts.

* Renamed tests/test-runner/cmd/ to tests/test-runner/bin/ to
  match install location name.

* Removed last traces of the --enable-debug-dmu-tx configure
  options which was retired some time ago.

Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #6509

88 files changed:
.gitignore
COPYRIGHT
Makefile.am
cmd/Makefile.am
cmd/zpios/.gitignore [deleted file]
cmd/zpios/Makefile.am [deleted file]
cmd/zpios/zpios.h [deleted file]
cmd/zpios/zpios_main.c [deleted file]
cmd/zpios/zpios_util.c [deleted file]
configure.ac
include/Makefile.am
include/zpios-ctl.h [deleted file]
include/zpios-internal.h [deleted file]
man/man1/Makefile.am
man/man1/zhack.1
man/man1/zpios.1 [deleted file]
module/Makefile.in
module/icp/illumos-crypto.c
module/zpios/Makefile.in [deleted file]
module/zpios/pios.c [deleted file]
rpm/generic/zfs-kmod.spec.in
rpm/redhat/zfs-kmod.spec.in
scripts/Makefile.am
scripts/common.sh.in
scripts/dkms.mkconf
scripts/dkms.postbuild
scripts/smb.sh [deleted file]
scripts/zfs-helpers.sh
scripts/zfs-tests.sh
scripts/zfs.sh
scripts/zimport.sh
scripts/zloop.sh
scripts/zpios-profile/Makefile.am [deleted file]
scripts/zpios-profile/zpios-profile-disk.sh [deleted file]
scripts/zpios-profile/zpios-profile-pids.sh [deleted file]
scripts/zpios-profile/zpios-profile-post.sh [deleted file]
scripts/zpios-profile/zpios-profile-pre.sh [deleted file]
scripts/zpios-profile/zpios-profile.sh [deleted file]
scripts/zpios-sanity.sh [deleted file]
scripts/zpios-survey.sh [deleted file]
scripts/zpios-test/16th-8192rc-4rs-1cs-4off.sh [deleted file]
scripts/zpios-test/1th-16rc-4rs-1cs-4off.sh [deleted file]
scripts/zpios-test/1x256th-65536rc-4rs-1cs-4off.sh [deleted file]
scripts/zpios-test/256th-65536rc-4rs-1cs-4off.sh [deleted file]
scripts/zpios-test/4th-1024rc-4rs-1cs-4off.sh [deleted file]
scripts/zpios-test/Makefile.am [deleted file]
scripts/zpios-test/large-thread-survey.sh [deleted symlink]
scripts/zpios-test/large.sh [deleted symlink]
scripts/zpios-test/lustre.sh [deleted file]
scripts/zpios-test/medium.sh [deleted symlink]
scripts/zpios-test/small.sh [deleted symlink]
scripts/zpios-test/tiny.sh [deleted symlink]
scripts/zpios.sh [deleted file]
scripts/zpool-config/Makefile.am [deleted file]
scripts/zpool-config/dm0-raid0.sh [deleted file]
scripts/zpool-config/file-raid0.sh [deleted file]
scripts/zpool-config/file-raid10.sh [deleted file]
scripts/zpool-config/file-raidz.sh [deleted file]
scripts/zpool-config/file-raidz2.sh [deleted file]
scripts/zpool-config/hda-raid0.sh [deleted file]
scripts/zpool-config/lo-faulty-raid0.sh [deleted file]
scripts/zpool-config/lo-faulty-raid10.sh [deleted file]
scripts/zpool-config/lo-faulty-raidz.sh [deleted file]
scripts/zpool-config/lo-faulty-raidz2.sh [deleted file]
scripts/zpool-config/lo-faulty-raidz3.sh [deleted file]
scripts/zpool-config/lo-raid0.sh [deleted file]
scripts/zpool-config/lo-raid10.sh [deleted file]
scripts/zpool-config/lo-raidz.sh [deleted file]
scripts/zpool-config/lo-raidz2.sh [deleted file]
scripts/zpool-config/md0-raid10.sh [deleted file]
scripts/zpool-config/md0-raid5.sh [deleted file]
scripts/zpool-config/ram0-raid0.sh [deleted file]
scripts/zpool-config/scsi_debug-noraid.sh [deleted file]
scripts/zpool-config/scsi_debug-raid0.sh [deleted file]
scripts/zpool-config/scsi_debug-raid10.sh [deleted file]
scripts/zpool-config/scsi_debug-raidz.sh [deleted file]
scripts/zpool-config/scsi_debug-raidz2.sh [deleted file]
scripts/zpool-config/scsi_debug-raidz3.sh [deleted file]
scripts/zpool-config/sda-raid0.sh [deleted file]
scripts/zpool-config/zpool-raid0.sh [deleted file]
scripts/zpool-config/zpool-raid10.sh [deleted file]
scripts/zpool-config/zpool-raidz.sh [deleted file]
scripts/zpool-create.sh [deleted file]
tests/test-runner/Makefile.am
tests/test-runner/bin/Makefile.am [moved from tests/test-runner/cmd/Makefile.am with 100% similarity]
tests/test-runner/bin/test-runner.py [moved from tests/test-runner/cmd/test-runner.py with 100% similarity]
tests/zfs-tests/include/commands.cfg
zfs-script-config.sh.in [deleted file]

index 318a4343414d21461e8d3dbbf30ce7528f75b2b8..29437b58c8fc8bd21946d3824898127a1a1a5d28 100644 (file)
@@ -39,8 +39,6 @@ Makefile.in
 /zfs_config.h.in
 /zfs.release
 /stamp-h1
-/.script-config
-/zfs-script-config.sh
 /aclocal.m4
 /autom4te.cache
 
index 759a48439bfa72f760d1150082c223baa90680da..6d01ffaa752ba9346d941923ebdc74b9d72f2e46 100644 (file)
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -10,10 +10,6 @@ and attributed properly.  These exceptions include, but are not limited
 to, the vdev_disk.c and zvol.c implementation which are licensed under
 the CDDL.
 
-The zpios test code is originally derived from the Lustre pios test code
-which is licensed under the GPLv2.  As such the heavily modified zpios
-kernel test code also remains licensed under the GPLv2.
-
 The latest stable and development versions of this port can be downloaded
 from the official ZFS on Linux site located at:
 
index 814998675cd9992369581eff26023ce30cdec3de..e6e19d6a23eaed43204c4e127ef89300e1daf2bc 100644 (file)
@@ -29,9 +29,8 @@ distclean-local::
                -o -name .pc -o -name .hg -o -name .git \) -prune -o \
                \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
                -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-               -o -name '.*.rej' -o -name '.script-config' -o -size 0 \
-               -o -name '*%' -o -name '.*.cmd' -o -name 'core' \
-               -o -name 'Makefile' -o -name 'Module.symvers' \
+               -o -name '.*.rej' -o -size 0 -o -name '*%' -o -name '.*.cmd' \
+               -o -name 'core' -o -name 'Makefile' -o -name 'Module.symvers' \
                -o -name '*.order' -o -name '*.markers' \) \
                -type f -print | xargs $(RM)
 
@@ -52,11 +51,8 @@ cstyle:
 
 shellcheck:
        @if type shellcheck > /dev/null 2>&1; then \
-               shellcheck --exclude=SC1090 --format=gcc scripts/paxcheck.sh \
-                       scripts/zloop.sh \
-                       scripts/zfs-tests.sh \
-                       scripts/zfs.sh \
-                       scripts/commitcheck.sh \
+               shellcheck --exclude=SC1090 --format=gcc \
+                       $$(find scripts/*.sh -type f) \
                        $$(find cmd/zed/zed.d/*.sh -type f) \
                        $$(find cmd/zpool/zpool.d/* -executable); \
        fi
index f7d7db68cef0bb77b3a311d8c6c0729abbc496e8..9dd7b8b4f07d75bb7a18e0bb6e3a7a3a84969c4c 100644 (file)
@@ -1,3 +1,3 @@
-SUBDIRS  = zfs zpool zdb zhack zinject zstreamdump ztest zpios
+SUBDIRS  = zfs zpool zdb zhack zinject zstreamdump ztest
 SUBDIRS += mount_zfs fsck_zfs zvol_id vdev_id arcstat dbufstat zed
 SUBDIRS += arc_summary raidz_test zgenhostid
diff --git a/cmd/zpios/.gitignore b/cmd/zpios/.gitignore
deleted file mode 100644 (file)
index b83e1d0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/zpios
diff --git a/cmd/zpios/Makefile.am b/cmd/zpios/Makefile.am
deleted file mode 100644 (file)
index 9dabb65..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-include $(top_srcdir)/config/Rules.am
-
-DEFAULT_INCLUDES += \
-       -I$(top_srcdir)/include
-
-sbin_PROGRAMS = zpios
-
-zpios_SOURCES = \
-       zpios_main.c \
-       zpios_util.c \
-       zpios.h
diff --git a/cmd/zpios/zpios.h b/cmd/zpios/zpios.h
deleted file mode 100644 (file)
index e670354..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *  ZPIOS is a heavily modified version of the original PIOS test code.
- *  It is designed to have the test code running in the Linux kernel
- *  against ZFS while still being flexibly controlled from user space.
- *
- *  Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  LLNL-CODE-403049
- *
- *  Original PIOS Test Code
- *  Copyright (C) 2004 Cluster File Systems, Inc.
- *  Written by Peter Braam <braam@clusterfs.com>
- *             Atul Vidwansa <atul@clusterfs.com>
- *             Milind Dumbare <milind@clusterfs.com>
- *
- *  This file is part of ZFS on Linux.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  ZPIOS is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  ZPIOS 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
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with ZPIOS.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Copyright (c) 2015, Intel Corporation.
- */
-
-#ifndef _ZPIOS_H
-#define        _ZPIOS_H
-
-#include <zpios-ctl.h>
-
-#define        VERSION_SIZE            64
-
-/* Regular expressions */
-#define        REGEX_NUMBERS           "^[0-9]+$"
-#define        REGEX_NUMBERS_COMMA     "^([0-9]+,)*[0-9]+$"
-#define        REGEX_SIZE              "^[0-9]+[kKmMgGtT]?$"
-#define        REGEX_SIZE_COMMA        "^([0-9]+[kKmMgGtT]?,)*[0-9]+[kKmMgGtT]?$"
-
-/* Flags for low, high, incr */
-#define        FLAG_SET                0x01
-#define        FLAG_LOW                0x02
-#define        FLAG_HIGH               0x04
-#define        FLAG_INCR               0x08
-
-#define        TRUE                    1
-#define        FALSE                   0
-
-#define        KB                      (1024)
-#define        MB                      (KB * 1024)
-#define        GB                      (MB * 1024)
-#define        TB                      (GB * 1024)
-
-#define        KMGT_SIZE               16
-
-/*
- * All offsets, sizes and counts can be passed to the application in
- * multiple ways.
- * 1. a value (stored in val[0], val_count will be 1)
- * 2. a comma separated list of values (stored in val[], using val_count)
- * 3. a range and block sizes, low, high, factor (val_count must be 0)
- */
-typedef struct pios_range_repeat {
-       uint64_t val[32];               /* Comma sep array, or low, high, inc */
-       uint64_t val_count;             /* Num of values */
-       uint64_t val_low;
-       uint64_t val_high;
-       uint64_t val_inc_perc;
-       uint64_t next_val;              /* For multiple runs in get_next() */
-} range_repeat_t;
-
-typedef struct cmd_args {
-       range_repeat_t T;               /* Thread count */
-       range_repeat_t N;               /* Region count */
-       range_repeat_t O;               /* Offset count */
-       range_repeat_t C;               /* Chunksize */
-       range_repeat_t S;               /* Regionsize */
-       range_repeat_t B;               /* Blocksize */
-
-       const char *pool;               /* Pool */
-       const char *name;               /* Name */
-       uint32_t flags;                 /* Flags */
-       uint32_t block_size;            /* ZFS block size */
-       uint32_t io_type;               /* DMUIO only */
-       uint32_t verbose;               /* Verbose */
-       uint32_t human_readable;        /* Human readable output */
-
-       uint64_t regionnoise;           /* Region noise */
-       uint64_t chunknoise;            /* Chunk noise */
-       uint64_t thread_delay;          /* Thread delay */
-
-       char pre[ZPIOS_PATH_SIZE];      /* Pre-exec hook */
-       char post[ZPIOS_PATH_SIZE];     /* Post-exec hook */
-       char log[ZPIOS_PATH_SIZE];      /* Requested log dir */
-
-       /* Control */
-       int current_id;
-       uint64_t current_T;
-       uint64_t current_N;
-       uint64_t current_C;
-       uint64_t current_S;
-       uint64_t current_O;
-       uint64_t current_B;
-
-       uint32_t rc;
-} cmd_args_t;
-
-int set_count(char *pattern1, char *pattern2, range_repeat_t *range,
-    char *optarg, uint32_t *flags, char *arg);
-int set_lhi(char *pattern, range_repeat_t *range, char *optarg,
-    int flag, uint32_t *flag_thread, char *arg);
-int set_noise(uint64_t *noise, char *optarg, char *arg);
-int set_load_params(cmd_args_t *args, char *optarg);
-int check_mutual_exclusive_command_lines(uint32_t flag, char *arg);
-void print_stats_header(cmd_args_t *args);
-void print_stats(cmd_args_t *args, zpios_cmd_t *cmd);
-
-#endif /* _ZPIOS_H */
diff --git a/cmd/zpios/zpios_main.c b/cmd/zpios/zpios_main.c
deleted file mode 100644 (file)
index 01f2ce1..0000000
+++ /dev/null
@@ -1,680 +0,0 @@
-/*
- *  ZPIOS is a heavily modified version of the original PIOS test code.
- *  It is designed to have the test code running in the Linux kernel
- *  against ZFS while still being flexibly controlled from user space.
- *
- *  Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  LLNL-CODE-403049
- *
- *  Original PIOS Test Code
- *  Copyright (C) 2004 Cluster File Systems, Inc.
- *  Written by Peter Braam <braam@clusterfs.com>
- *             Atul Vidwansa <atul@clusterfs.com>
- *             Milind Dumbare <milind@clusterfs.com>
- *
- *  This file is part of ZFS on Linux.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  ZPIOS is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  ZPIOS 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
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with ZPIOS.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Copyright (c) 2015, Intel Corporation.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <getopt.h>
-#include <assert.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include "zpios.h"
-
-static const char short_opt[] =
-       "t:l:h:e:n:i:j:k:o:m:q:r:c:a:b:g:s:A:B:C:"
-       "S:L:p:M:xP:R:G:I:N:T:VzOfHv?";
-static const struct option long_opt[] = {
-       {"threadcount",         required_argument,      0,      't' },
-       {"threadcount_low",     required_argument,      0,      'l' },
-       {"threadcount_high",    required_argument,      0,      'h' },
-       {"threadcount_incr",    required_argument,      0,      'e' },
-       {"regioncount",         required_argument,      0,      'n' },
-       {"regioncount_low",     required_argument,      0,      'i' },
-       {"regioncount_high",    required_argument,      0,      'j' },
-       {"regioncount_incr",    required_argument,      0,      'k' },
-       {"offset",              required_argument,      0,      'o' },
-       {"offset_low",          required_argument,      0,      'm' },
-       {"offset_high",         required_argument,      0,      'q' },
-       {"offset_incr",         required_argument,      0,      'r' },
-       {"chunksize",           required_argument,      0,      'c' },
-       {"chunksize_low",       required_argument,      0,      'a' },
-       {"chunksize_high",      required_argument,      0,      'b' },
-       {"chunksize_incr",      required_argument,      0,      'g' },
-       {"regionsize",          required_argument,      0,      's' },
-       {"regionsize_low",      required_argument,      0,      'A' },
-       {"regionsize_high",     required_argument,      0,      'B' },
-       {"regionsize_incr",     required_argument,      0,      'C' },
-       {"blocksize",           required_argument,      0,      'S' },
-       {"load",                required_argument,      0,      'L' },
-       {"pool",                required_argument,      0,      'p' },
-       {"name",                required_argument,      0,      'M' },
-       {"cleanup",             no_argument,            0,      'x' },
-       {"prerun",              required_argument,      0,      'P' },
-       {"postrun",             required_argument,      0,      'R' },
-       {"log",                 required_argument,      0,      'G' },
-       {"regionnoise",         required_argument,      0,      'I' },
-       {"chunknoise",          required_argument,      0,      'N' },
-       {"threaddelay",         required_argument,      0,      'T' },
-       {"verify",              no_argument,            0,      'V' },
-       {"zerocopy",            no_argument,            0,      'z' },
-       {"nowait",              no_argument,            0,      'O' },
-       {"noprefetch",          no_argument,            0,      'f' },
-       {"human-readable",      no_argument,            0,      'H' },
-       {"verbose",             no_argument,            0,      'v' },
-       {"help",                no_argument,            0,      '?' },
-       { 0,                    0,                      0,      0 },
-};
-
-static int zpiosctl_fd;                                /* Control file descriptor */
-static char zpios_version[VERSION_SIZE];       /* Kernel version string */
-static char *zpios_buffer = NULL;              /* Scratch space area */
-static int zpios_buffer_size = 0;              /* Scratch space size */
-
-static int
-usage(void)
-{
-       fprintf(stderr, "Usage: zpios\n");
-       fprintf(stderr,
-           "   --threadcount       -t    =values\n"
-           "   --threadcount_low   -l    =value\n"
-           "   --threadcount_high  -h    =value\n"
-           "   --threadcount_incr  -e    =value\n"
-           "   --regioncount       -n    =values\n"
-           "   --regioncount_low   -i    =value\n"
-           "   --regioncount_high  -j    =value\n"
-           "   --regioncount_incr  -k    =value\n"
-           "   --offset            -o    =values\n"
-           "   --offset_low        -m    =value\n"
-           "   --offset_high       -q    =value\n"
-           "   --offset_incr       -r    =value\n"
-           "   --chunksize         -c    =values\n"
-           "   --chunksize_low     -a    =value\n"
-           "   --chunksize_high    -b    =value\n"
-           "   --chunksize_incr    -g    =value\n"
-           "   --regionsize        -s    =values\n"
-           "   --regionsize_low    -A    =value\n"
-           "   --regionsize_high   -B    =value\n"
-           "   --regionsize_incr   -C    =value\n"
-           "   --blocksize         -S    =values\n"
-           "   --load              -L    =dmuio|ssf|fpp\n"
-           "   --pool              -p    =pool name\n"
-           "   --name              -M    =test name\n"
-           "   --cleanup           -x\n"
-           "   --prerun            -P    =pre-command\n"
-           "   --postrun           -R    =post-command\n"
-           "   --log               -G    =log directory\n"
-           "   --regionnoise       -I    =shift\n"
-           "   --chunknoise        -N    =bytes\n"
-           "   --threaddelay       -T    =jiffies\n"
-           "   --verify            -V\n"
-           "   --zerocopy          -z\n"
-           "   --nowait            -O\n"
-           "   --noprefetch        -f\n"
-           "   --human-readable    -H\n"
-           "   --verbose           -v    =increase verbosity\n"
-           "   --help              -?    =this help\n\n");
-
-       return (0);
-}
-
-static void args_fini(cmd_args_t *args)
-{
-       assert(args != NULL);
-       free(args);
-}
-
-/* block size is 128K to 16M, power of 2 */
-#define        MIN_BLKSIZE     (128ULL << 10)
-#define        MAX_BLKSIZE     (16ULL << 20)
-#define        POW_OF_TWO(x)   (((x) & ((x) - 1)) == 0)
-
-static cmd_args_t *
-args_init(int argc, char **argv)
-{
-       cmd_args_t *args;
-       uint32_t fl_th = 0;
-       uint32_t fl_rc = 0;
-       uint32_t fl_of = 0;
-       uint32_t fl_rs = 0;
-       uint32_t fl_cs = 0;
-       uint32_t fl_bs = 0;
-       int c, rc, i;
-
-       if (argc == 1) {
-               usage();
-               return ((cmd_args_t *)NULL);
-       }
-
-       /* Configure and populate the args structures */
-       args = malloc(sizeof (*args));
-       if (args == NULL)
-               return (NULL);
-
-       memset(args, 0, sizeof (*args));
-
-       /* provide a default block size of 128K */
-       args->B.next_val = 0;
-       args->B.val[0] = MIN_BLKSIZE;
-       args->B.val_count = 1;
-
-       while ((c = getopt_long(argc, argv, short_opt, long_opt, NULL)) != -1) {
-               rc = 0;
-
-               switch (c) {
-               case 't': /* --thread count */
-                       rc = set_count(REGEX_NUMBERS, REGEX_NUMBERS_COMMA,
-                           &args->T, optarg, &fl_th, "threadcount");
-                       break;
-               case 'l': /* --threadcount_low */
-                       rc = set_lhi(REGEX_NUMBERS, &args->T, optarg,
-                           FLAG_LOW, &fl_th, "threadcount_low");
-                       break;
-               case 'h': /* --threadcount_high */
-                       rc = set_lhi(REGEX_NUMBERS, &args->T, optarg,
-                           FLAG_HIGH, &fl_th, "threadcount_high");
-                       break;
-               case 'e': /* --threadcount_inc */
-                       rc = set_lhi(REGEX_NUMBERS, &args->T, optarg,
-                           FLAG_INCR, &fl_th, "threadcount_incr");
-                       break;
-               case 'n': /* --regioncount */
-                       rc = set_count(REGEX_NUMBERS, REGEX_NUMBERS_COMMA,
-                           &args->N, optarg, &fl_rc, "regioncount");
-                       break;
-               case 'i': /* --regioncount_low */
-                       rc = set_lhi(REGEX_NUMBERS, &args->N, optarg,
-                           FLAG_LOW, &fl_rc, "regioncount_low");
-                       break;
-               case 'j': /* --regioncount_high */
-                       rc = set_lhi(REGEX_NUMBERS, &args->N, optarg,
-                           FLAG_HIGH, &fl_rc, "regioncount_high");
-                       break;
-               case 'k': /* --regioncount_inc */
-                       rc = set_lhi(REGEX_NUMBERS, &args->N, optarg,
-                           FLAG_INCR, &fl_rc, "regioncount_incr");
-                       break;
-               case 'o': /* --offset */
-                       rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA,
-                           &args->O, optarg, &fl_of, "offset");
-                       break;
-               case 'm': /* --offset_low */
-                       rc = set_lhi(REGEX_SIZE, &args->O, optarg,
-                           FLAG_LOW, &fl_of, "offset_low");
-                       break;
-               case 'q': /* --offset_high */
-                       rc = set_lhi(REGEX_SIZE, &args->O, optarg,
-                           FLAG_HIGH, &fl_of, "offset_high");
-                       break;
-               case 'r': /* --offset_inc */
-                       rc = set_lhi(REGEX_NUMBERS, &args->O, optarg,
-                           FLAG_INCR, &fl_of, "offset_incr");
-                       break;
-               case 'c': /* --chunksize */
-                       rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA,
-                           &args->C, optarg, &fl_cs, "chunksize");
-                       break;
-               case 'a': /* --chunksize_low */
-                       rc = set_lhi(REGEX_SIZE, &args->C, optarg,
-                           FLAG_LOW, &fl_cs, "chunksize_low");
-                       break;
-               case 'b': /* --chunksize_high */
-                       rc = set_lhi(REGEX_SIZE, &args->C, optarg,
-                           FLAG_HIGH, &fl_cs, "chunksize_high");
-                       break;
-               case 'g': /* --chunksize_inc */
-                       rc = set_lhi(REGEX_NUMBERS, &args->C, optarg,
-                           FLAG_INCR, &fl_cs, "chunksize_incr");
-                       break;
-               case 's': /* --regionsize */
-                       rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA,
-                           &args->S, optarg, &fl_rs, "regionsize");
-                       break;
-               case 'A': /* --regionsize_low */
-                       rc = set_lhi(REGEX_SIZE, &args->S, optarg,
-                           FLAG_LOW, &fl_rs, "regionsize_low");
-                       break;
-               case 'B': /* --regionsize_high */
-                       rc = set_lhi(REGEX_SIZE, &args->S, optarg,
-                           FLAG_HIGH, &fl_rs, "regionsize_high");
-                       break;
-               case 'C': /* --regionsize_inc */
-                       rc = set_lhi(REGEX_NUMBERS, &args->S, optarg,
-                           FLAG_INCR, &fl_rs, "regionsize_incr");
-                       break;
-               case 'S': /* --blocksize */
-                       rc = set_count(REGEX_SIZE, REGEX_SIZE_COMMA,
-                           &args->B, optarg, &fl_bs, "blocksize");
-                       break;
-               case 'L': /* --load */
-                       rc = set_load_params(args, optarg);
-                       break;
-               case 'p': /* --pool */
-                       args->pool = optarg;
-                       break;
-               case 'M':
-                       args->name = optarg;
-                       break;
-               case 'x': /* --cleanup */
-                       args->flags |= DMU_REMOVE;
-                       break;
-               case 'P': /* --prerun */
-                       strncpy(args->pre, optarg, ZPIOS_PATH_SIZE - 1);
-                       break;
-               case 'R': /* --postrun */
-                       strncpy(args->post, optarg, ZPIOS_PATH_SIZE - 1);
-                       break;
-               case 'G': /* --log */
-                       strncpy(args->log, optarg, ZPIOS_PATH_SIZE - 1);
-                       break;
-               case 'I': /* --regionnoise */
-                       rc = set_noise(&args->regionnoise, optarg,
-                           "regionnoise");
-                       break;
-               case 'N': /* --chunknoise */
-                       rc = set_noise(&args->chunknoise, optarg, "chunknoise");
-                       break;
-               case 'T': /* --threaddelay */
-                       rc = set_noise(&args->thread_delay, optarg,
-                           "threaddelay");
-                       break;
-               case 'V': /* --verify */
-                       args->flags |= DMU_VERIFY;
-                       break;
-               case 'z': /* --zerocopy */
-                       args->flags |= (DMU_WRITE_ZC | DMU_READ_ZC);
-                       break;
-               case 'O': /* --nowait */
-                       args->flags |= DMU_WRITE_NOWAIT;
-                       break;
-               case 'f': /* --noprefetch */
-                       args->flags |= DMU_READ_NOPF;
-                       break;
-               case 'H': /* --human-readable */
-                       args->human_readable = 1;
-                       break;
-               case 'v': /* --verbose */
-                       args->verbose++;
-                       break;
-               case '?':
-                       rc = 1;
-                       break;
-               default:
-                       fprintf(stderr, "Unknown option '%s'\n",
-                           argv[optind - 1]);
-                       rc = EINVAL;
-                       break;
-               }
-
-               if (rc) {
-                       usage();
-                       args_fini(args);
-                       return (NULL);
-               }
-       }
-
-       check_mutual_exclusive_command_lines(fl_th, "threadcount");
-       check_mutual_exclusive_command_lines(fl_rc, "regioncount");
-       check_mutual_exclusive_command_lines(fl_of, "offset");
-       check_mutual_exclusive_command_lines(fl_rs, "regionsize");
-       check_mutual_exclusive_command_lines(fl_cs, "chunksize");
-
-       if (args->pool == NULL) {
-               fprintf(stderr, "Error: Pool not specified\n");
-               usage();
-               args_fini(args);
-               return (NULL);
-       }
-
-       if ((args->flags & (DMU_WRITE_ZC | DMU_READ_ZC)) &&
-           (args->flags & DMU_VERIFY)) {
-               fprintf(stderr, "Error, --zerocopy incompatible --verify, "
-                   "used for performance analysis only\n");
-               usage();
-               args_fini(args);
-               return (NULL);
-       }
-
-       /* validate block size(s) */
-       for (i = 0; i < args->B.val_count; i++) {
-               int bs = args->B.val[i];
-
-               if (bs < MIN_BLKSIZE || bs > MAX_BLKSIZE || !POW_OF_TWO(bs)) {
-                       fprintf(stderr, "Error: invalid block size %d\n", bs);
-                       args_fini(args);
-                       return (NULL);
-               }
-       }
-
-       return (args);
-}
-
-static int
-dev_clear(void)
-{
-       zpios_cfg_t cfg;
-       int rc;
-
-       memset(&cfg, 0, sizeof (cfg));
-       cfg.cfg_magic = ZPIOS_CFG_MAGIC;
-       cfg.cfg_cmd   = ZPIOS_CFG_BUFFER_CLEAR;
-       cfg.cfg_arg1  = 0;
-
-       rc = ioctl(zpiosctl_fd, ZPIOS_CFG, &cfg);
-       if (rc)
-               fprintf(stderr, "Ioctl() error %lu / %d: %d\n",
-                   (unsigned long) ZPIOS_CFG, cfg.cfg_cmd, errno);
-
-       (void) lseek(zpiosctl_fd, 0, SEEK_SET);
-
-       return (rc);
-}
-
-/* Passing a size of zero simply results in querying the current size */
-static int
-dev_size(int size)
-{
-       zpios_cfg_t cfg;
-       int rc;
-
-       memset(&cfg, 0, sizeof (cfg));
-       cfg.cfg_magic = ZPIOS_CFG_MAGIC;
-       cfg.cfg_cmd   = ZPIOS_CFG_BUFFER_SIZE;
-       cfg.cfg_arg1  = size;
-
-       rc = ioctl(zpiosctl_fd, ZPIOS_CFG, &cfg);
-       if (rc) {
-               fprintf(stderr, "Ioctl() error %lu / %d: %d\n",
-                   (unsigned long) ZPIOS_CFG, cfg.cfg_cmd, errno);
-               return (rc);
-       }
-
-       return (cfg.cfg_rc1);
-}
-
-static void
-dev_fini(void)
-{
-       if (zpios_buffer)
-               free(zpios_buffer);
-
-       if (zpiosctl_fd != -1) {
-               if (close(zpiosctl_fd) == -1) {
-                       fprintf(stderr, "Unable to close %s: %d\n",
-                           ZPIOS_DEV, errno);
-               }
-       }
-}
-
-static int
-dev_init(void)
-{
-       int rc;
-
-       zpiosctl_fd = open(ZPIOS_DEV, O_RDONLY);
-       if (zpiosctl_fd == -1) {
-               fprintf(stderr, "Unable to open %s: %d\n"
-                   "Is the zpios module loaded?\n", ZPIOS_DEV, errno);
-               rc = errno;
-               goto error;
-       }
-
-       if ((rc = dev_clear()))
-               goto error;
-
-       if ((rc = dev_size(0)) < 0)
-               goto error;
-
-       zpios_buffer_size = rc;
-       zpios_buffer = (char *)malloc(zpios_buffer_size);
-       if (zpios_buffer == NULL) {
-               rc = ENOMEM;
-               goto error;
-       }
-
-       memset(zpios_buffer, 0, zpios_buffer_size);
-       return (0);
-error:
-       if (zpiosctl_fd != -1) {
-               if (close(zpiosctl_fd) == -1) {
-                       fprintf(stderr, "Unable to close %s: %d\n",
-                           ZPIOS_DEV, errno);
-               }
-       }
-
-       return (rc);
-}
-
-static int
-get_next(uint64_t *val, range_repeat_t *range)
-{
-       /* if low, incr, high is given */
-       if (range->val_count == 0) {
-               *val = (range->val_low) +
-                   (range->val_low * range->next_val / 100);
-
-               if (*val > range->val_high)
-                       return (0); /* No more values, limit exceeded */
-
-               if (!range->next_val)
-                       range->next_val = range->val_inc_perc;
-               else
-                       range->next_val = range->next_val + range->val_inc_perc;
-
-               return (1); /* more values to come */
-
-       /* if only one val is given */
-       } else if (range->val_count == 1) {
-               if (range->next_val)
-                       return (0); /* No more values, we only have one */
-
-               *val = range->val[0];
-               range->next_val = 1;
-               return (1); /* more values to come */
-
-       /* if comma separated values are given */
-       } else if (range->val_count > 1) {
-               if (range->next_val > range->val_count - 1)
-                       return (0); /* No more values, limit exceeded */
-
-               *val = range->val[range->next_val];
-               range->next_val++;
-               return (1); /* more values to come */
-       }
-
-       return (0);
-}
-
-static int
-run_one(cmd_args_t *args, uint32_t id, uint32_t T, uint32_t N,
-    uint64_t C, uint64_t S, uint64_t O, uint64_t B)
-{
-       zpios_cmd_t *cmd;
-       int rc, rc2, cmd_size;
-
-       dev_clear();
-
-       cmd_size = sizeof (zpios_cmd_t) +
-           ((T + N + 1) * sizeof (zpios_stats_t));
-       cmd = (zpios_cmd_t *)malloc(cmd_size);
-       if (cmd == NULL)
-               return (ENOMEM);
-
-       memset(cmd, 0, cmd_size);
-       cmd->cmd_magic = ZPIOS_CMD_MAGIC;
-       strncpy(cmd->cmd_pool, args->pool, ZPIOS_NAME_SIZE - 1);
-       strncpy(cmd->cmd_pre, args->pre, ZPIOS_PATH_SIZE - 1);
-       strncpy(cmd->cmd_post, args->post, ZPIOS_PATH_SIZE - 1);
-       strncpy(cmd->cmd_log, args->log, ZPIOS_PATH_SIZE - 1);
-       cmd->cmd_id = id;
-       cmd->cmd_chunk_size = C;
-       cmd->cmd_thread_count = T;
-       cmd->cmd_region_count = N;
-       cmd->cmd_region_size = S;
-       cmd->cmd_offset = O;
-       cmd->cmd_block_size = B;
-       cmd->cmd_region_noise = args->regionnoise;
-       cmd->cmd_chunk_noise = args->chunknoise;
-       cmd->cmd_thread_delay = args->thread_delay;
-       cmd->cmd_flags = args->flags;
-       cmd->cmd_data_size = (T + N + 1) * sizeof (zpios_stats_t);
-
-       rc = ioctl(zpiosctl_fd, ZPIOS_CMD, cmd);
-       if (rc)
-               args->rc = errno;
-
-       print_stats(args, cmd);
-
-       if (args->verbose) {
-               rc2 = read(zpiosctl_fd, zpios_buffer, zpios_buffer_size);
-               zpios_buffer[zpios_buffer_size - 1] = '\0';
-               if (rc2 < 0) {
-                       fprintf(stdout, "Error reading results: %d\n", rc2);
-               } else if ((rc2 > 0) && (strlen(zpios_buffer) > 0)) {
-                       fprintf(stdout, "\n%s\n", zpios_buffer);
-                       fflush(stdout);
-               }
-       }
-
-       free(cmd);
-
-       return (rc);
-}
-
-static int
-run_offsets(cmd_args_t *args)
-{
-       int rc = 0;
-
-       while (rc == 0 && get_next(&args->current_O, &args->O)) {
-               rc = run_one(args, args->current_id,
-                   args->current_T, args->current_N, args->current_C,
-                   args->current_S, args->current_O, args->current_B);
-               args->current_id++;
-       }
-
-       args->O.next_val = 0;
-       return (rc);
-}
-
-static int
-run_region_counts(cmd_args_t *args)
-{
-       int rc = 0;
-
-       while (rc == 0 && get_next((uint64_t *)&args->current_N, &args->N))
-               rc = run_offsets(args);
-
-       args->N.next_val = 0;
-       return (rc);
-}
-
-static int
-run_region_sizes(cmd_args_t *args)
-{
-       int rc = 0;
-
-       while (rc == 0 && get_next(&args->current_S, &args->S)) {
-               if (args->current_S < args->current_C) {
-                       fprintf(stderr, "Error: in any run chunksize must "
-                           "be strictly smaller than regionsize.\n");
-                       return (EINVAL);
-               }
-
-               rc = run_region_counts(args);
-       }
-
-       args->S.next_val = 0;
-       return (rc);
-}
-
-static int
-run_chunk_sizes(cmd_args_t *args)
-{
-       int rc = 0;
-
-       while (rc == 0 && get_next(&args->current_C, &args->C)) {
-               rc = run_region_sizes(args);
-       }
-
-       args->C.next_val = 0;
-       return (rc);
-}
-
-static int
-run_block_sizes(cmd_args_t *args)
-{
-       int rc = 0;
-
-       while (rc == 0 && get_next(&args->current_B, &args->B)) {
-               rc = run_chunk_sizes(args);
-       }
-
-       args->B.next_val = 0;
-       return (rc);
-}
-
-
-static int
-run_thread_counts(cmd_args_t *args)
-{
-       int rc = 0;
-
-       while (rc == 0 && get_next((uint64_t *)&args->current_T, &args->T))
-               rc = run_block_sizes(args);
-
-       return (rc);
-}
-
-int
-main(int argc, char **argv)
-{
-       cmd_args_t *args;
-       int rc = 0;
-
-       /* Argument init and parsing */
-       if ((args = args_init(argc, argv)) == NULL) {
-               rc = -1;
-               goto out;
-       }
-
-       /* Device specific init */
-       if ((rc = dev_init()))
-               goto out;
-
-       /* Generic kernel version string */
-       if (args->verbose)
-               fprintf(stdout, "%s", zpios_version);
-
-       print_stats_header(args);
-       rc = run_thread_counts(args);
-out:
-       if (args != NULL)
-               args_fini(args);
-
-       dev_fini();
-       return (rc);
-}
diff --git a/cmd/zpios/zpios_util.c b/cmd/zpios/zpios_util.c
deleted file mode 100644 (file)
index 77ca70f..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- *  ZPIOS is a heavily modified version of the original PIOS test code.
- *  It is designed to have the test code running in the Linux kernel
- *  against ZFS while still being flexibly controlled from user space.
- *
- *  Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  LLNL-CODE-403049
- *
- *  Original PIOS Test Code
- *  Copyright (C) 2004 Cluster File Systems, Inc.
- *  Written by Peter Braam <braam@clusterfs.com>
- *             Atul Vidwansa <atul@clusterfs.com>
- *             Milind Dumbare <milind@clusterfs.com>
- *
- *  This file is part of ZFS on Linux.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  ZPIOS is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  ZPIOS 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
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with ZPIOS.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Copyright (c) 2015, Intel Corporation.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#include <regex.h>
-#include "zpios.h"
-
-/* extracts an unsigned int (64) and K,M,G,T from the string */
-/* and returns a 64 bit value converted to the proper units */
-static int
-kmgt_to_uint64(const char *str, uint64_t *val)
-{
-       char *endptr;
-       int rc = 0;
-
-       *val = strtoll(str, &endptr, 0);
-       if ((str == endptr) && (*val == 0))
-               return (EINVAL);
-
-       switch (endptr[0]) {
-               case 'k': case 'K':
-                       *val = (*val) << 10;
-                       break;
-               case 'm': case 'M':
-                       *val = (*val) << 20;
-                       break;
-               case 'g': case 'G':
-                       *val = (*val) << 30;
-                       break;
-               case 't': case 'T':
-                       *val = (*val) << 40;
-                       break;
-               case '\0':
-                       break;
-               default:
-                       rc = EINVAL;
-       }
-
-       return (rc);
-}
-
-static char *
-uint64_to_kmgt(char *str, uint64_t val)
-{
-       char postfix[] = "kmgt";
-       int i = -1;
-
-       while ((val >= KB) && (i < 4)) {
-               val = (val >> 10);
-               i++;
-       }
-
-       if (i >= 4)
-               (void) snprintf(str, KMGT_SIZE-1, "inf");
-       else
-               (void) snprintf(str, KMGT_SIZE-1, "%lu%c", (unsigned long)val,
-                   (i == -1) ? '\0' : postfix[i]);
-
-       return (str);
-}
-
-static char *
-kmgt_per_sec(char *str, uint64_t v, double t)
-{
-       char postfix[] = "kmgt";
-       double val = ((double)v) / t;
-       int i = -1;
-
-       while ((val >= (double)KB) && (i < 4)) {
-               val /= (double)KB;
-               i++;
-       }
-
-       if (i >= 4)
-               (void) snprintf(str, KMGT_SIZE-1, "inf");
-       else
-               (void) snprintf(str, KMGT_SIZE-1, "%.2f%c", val,
-                   (i == -1) ? '\0' : postfix[i]);
-
-       return (str);
-}
-
-static char *
-print_flags(char *str, uint32_t flags)
-{
-       str[0] = (flags & DMU_WRITE)  ? 'w' : '-';
-       str[1] = (flags & DMU_READ)   ? 'r' : '-';
-       str[2] = (flags & DMU_VERIFY) ? 'v' : '-';
-       str[3] = (flags & DMU_REMOVE) ? 'c' : '-';
-       str[4] = (flags & DMU_FPP)    ? 'p' : 's';
-       str[5] = (flags & (DMU_WRITE_ZC | DMU_READ_ZC)) ? 'z' : '-';
-       str[6] = (flags & DMU_WRITE_NOWAIT) ? 'O' : '-';
-       str[7] = '\0';
-
-       return (str);
-}
-
-static int
-regex_match(const char *string, char *pattern)
-{
-       regex_t re = { 0 };
-       int rc;
-
-       rc = regcomp(&re, pattern, REG_EXTENDED | REG_NOSUB | REG_ICASE);
-       if (rc) {
-               fprintf(stderr, "Error: Couldn't do regcomp, %d\n", rc);
-               return (rc);
-       }
-
-       rc = regexec(&re, string, (size_t)0, NULL, 0);
-       regfree(&re);
-
-       return (rc);
-}
-
-/* fills the pios_range_repeat structure of comma separated values */
-static int
-split_string(const char *optarg, char *pattern, range_repeat_t *range)
-{
-       const char comma[] = ",";
-       char *cp, *token[32];
-       int rc, i = 0;
-
-       if ((rc = regex_match(optarg, pattern)))
-               return (rc);
-
-       cp = strdup(optarg);
-       if (cp == NULL)
-               return (ENOMEM);
-
-       do {
-               /*
-                * STRTOK(3) Each subsequent call, with a null pointer as the
-                * value of the * first  argument, starts searching from the
-                * saved pointer and behaves as described above.
-                */
-               if (i == 0) {
-                       token[i] = strtok(cp, comma);
-               } else {
-                       token[i] = strtok(NULL, comma);
-               }
-       } while ((token[i++] != NULL) && (i < 32));
-
-       range->val_count = i - 1;
-
-       for (i = 0; i < range->val_count; i++)
-               kmgt_to_uint64(token[i], &range->val[i]);
-
-       free(cp);
-       return (0);
-}
-
-int
-set_count(char *pattern1, char *pattern2, range_repeat_t *range,
-    char *optarg, uint32_t *flags, char *arg)
-{
-       uint64_t count = range->val_count;
-
-       if (flags)
-               *flags |= FLAG_SET;
-
-       range->next_val = 0;
-
-       if (regex_match(optarg, pattern1) == 0) {
-               kmgt_to_uint64(optarg, &range->val[0]);
-               range->val_count = 1;
-       } else if (split_string(optarg, pattern2, range) < 0) {
-               fprintf(stderr, "Error: Incorrect pattern for %s, '%s'\n",
-                   arg, optarg);
-               return (EINVAL);
-       } else if (count == range->val_count) {
-               fprintf(stderr, "Error: input ignored for %s, '%s'\n",
-                   arg, optarg);
-       }
-
-       return (0);
-}
-
-/*
- * Validates the value with regular expression and sets low, high, incr
- * according to value at which flag will be set. Sets the flag after.
- */
-int
-set_lhi(char *pattern, range_repeat_t *range, char *optarg,
-    int flag, uint32_t *flag_thread, char *arg)
-{
-       int rc;
-
-       if ((rc = regex_match(optarg, pattern))) {
-               fprintf(stderr, "Error: Wrong pattern in %s, '%s'\n",
-                   arg, optarg);
-               return (rc);
-       }
-
-       switch (flag) {
-               case FLAG_LOW:
-                       kmgt_to_uint64(optarg, &range->val_low);
-                       break;
-               case FLAG_HIGH:
-                       kmgt_to_uint64(optarg, &range->val_high);
-                       break;
-               case FLAG_INCR:
-                       kmgt_to_uint64(optarg, &range->val_inc_perc);
-                       break;
-               default:
-                       assert(0);
-       }
-
-       *flag_thread |= flag;
-
-       return (0);
-}
-
-int
-set_noise(uint64_t *noise, char *optarg, char *arg)
-{
-       if (regex_match(optarg, REGEX_NUMBERS) == 0) {
-               kmgt_to_uint64(optarg, noise);
-       } else {
-               fprintf(stderr, "Error: Incorrect pattern for %s\n", arg);
-               return (EINVAL);
-       }
-
-       return (0);
-}
-
-int
-set_load_params(cmd_args_t *args, char *optarg)
-{
-       char *param, *search, *searchdup, comma[] = ",";
-       int rc = 0;
-
-       search = strdup(optarg);
-       if (search == NULL)
-               return (ENOMEM);
-       searchdup = search;
-
-       while ((param = strtok(search, comma)) != NULL) {
-               search = NULL;
-
-               if (strcmp("fpp", param) == 0) {
-                       args->flags |= DMU_FPP; /* File Per Process/Thread */
-               } else if (strcmp("ssf", param) == 0) {
-                       args->flags &= ~DMU_FPP; /* Single Shared File */
-               } else if (strcmp("dmuio", param) == 0) {
-                       args->io_type |= DMU_IO;
-                       args->flags |= (DMU_WRITE | DMU_READ);
-               } else {
-                       fprintf(stderr, "Invalid load: %s\n", param);
-                       rc = EINVAL;
-               }
-       }
-
-       free(searchdup);
-
-       return (rc);
-}
-
-
-/*
- * Checks the low, high, increment values against the single value for
- * mutual exclusion, for e.g threadcount is mutually exclusive to
- * threadcount_low, ..._high, ..._incr
- */
-int
-check_mutual_exclusive_command_lines(uint32_t flag, char *arg)
-{
-       if ((flag & FLAG_SET) && (flag & (FLAG_LOW | FLAG_HIGH | FLAG_INCR))) {
-               fprintf(stderr, "Error: --%s can not be given with --%s_low, "
-                   "--%s_high or --%s_incr.\n", arg, arg, arg, arg);
-               return (0);
-       }
-
-       if ((flag & (FLAG_LOW | FLAG_HIGH | FLAG_INCR)) && !(flag & FLAG_SET)) {
-               if (flag != (FLAG_LOW | FLAG_HIGH | FLAG_INCR)) {
-                       fprintf(stderr, "Error: One or more values missing "
-                           "from --%s_low, --%s_high, --%s_incr.\n",
-                           arg, arg, arg);
-                       return (0);
-               }
-       }
-
-       return (1);
-}
-
-void
-print_stats_header(cmd_args_t *args)
-{
-       if (args->verbose) {
-               printf(
-                   "status    name        id\tth-cnt\trg-cnt\trg-sz\t"
-                   "ch-sz\toffset\trg-no\tch-no\tth-dly\tflags\tblksz\ttime\t"
-                   "cr-time\trm-time\twr-time\trd-time\twr-data\twr-ch\t"
-                   "wr-bw\trd-data\trd-ch\trd-bw\n");
-               printf(
-                   "-------------------------------------------------"
-                   "-------------------------------------------------"
-                   "-------------------------------------------------"
-                   "--------------------------------------------------\n");
-       } else {
-               printf(
-                   "status    name        id\t"
-                   "wr-data\twr-ch\twr-bw\t"
-                   "rd-data\trd-ch\trd-bw\n");
-               printf(
-                   "-----------------------------------------"
-                   "--------------------------------------\n");
-       }
-}
-
-static void
-print_stats_human_readable(cmd_args_t *args, zpios_cmd_t *cmd)
-{
-       zpios_stats_t *summary_stats;
-       double t_time, wr_time, rd_time, cr_time, rm_time;
-       char str[KMGT_SIZE];
-
-       if (args->rc)
-               printf("FAIL: %3d ", args->rc);
-       else
-               printf("PASS:     ");
-
-       printf("%-12s", args->name ? args->name : ZPIOS_NAME);
-       printf("%2u\t", cmd->cmd_id);
-
-       if (args->verbose) {
-               printf("%u\t", cmd->cmd_thread_count);
-               printf("%u\t", cmd->cmd_region_count);
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_region_size));
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_chunk_size));
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_offset));
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_region_noise));
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_chunk_noise));
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_thread_delay));
-               printf("%s\t", print_flags(str, cmd->cmd_flags));
-               printf("%s\t", uint64_to_kmgt(str, cmd->cmd_block_size));
-       }
-
-       if (args->rc) {
-               printf("\n");
-               return;
-       }
-
-       summary_stats = (zpios_stats_t *)cmd->cmd_data_str;
-       t_time  = zpios_timespec_to_double(summary_stats->total_time.delta);
-       wr_time = zpios_timespec_to_double(summary_stats->wr_time.delta);
-       rd_time = zpios_timespec_to_double(summary_stats->rd_time.delta);
-       cr_time = zpios_timespec_to_double(summary_stats->cr_time.delta);
-       rm_time = zpios_timespec_to_double(summary_stats->rm_time.delta);
-
-       if (args->verbose) {
-               printf("%.2f\t", t_time);
-               printf("%.3f\t", cr_time);
-               printf("%.3f\t", rm_time);
-               printf("%.2f\t", wr_time);
-               printf("%.2f\t", rd_time);
-       }
-
-       printf("%s\t", uint64_to_kmgt(str, summary_stats->wr_data));
-       printf("%s\t", uint64_to_kmgt(str, summary_stats->wr_chunks));
-       printf("%s\t", kmgt_per_sec(str, summary_stats->wr_data, wr_time));
-
-       printf("%s\t", uint64_to_kmgt(str, summary_stats->rd_data));
-       printf("%s\t", uint64_to_kmgt(str, summary_stats->rd_chunks));
-       printf("%s\n", kmgt_per_sec(str, summary_stats->rd_data, rd_time));
-       fflush(stdout);
-}
-
-static void
-print_stats_table(cmd_args_t *args, zpios_cmd_t *cmd)
-{
-       zpios_stats_t *summary_stats;
-       double wr_time, rd_time;
-
-       if (args->rc)
-               printf("FAIL: %3d ", args->rc);
-       else
-               printf("PASS:     ");
-
-       printf("%-12s", args->name ? args->name : ZPIOS_NAME);
-       printf("%2u\t", cmd->cmd_id);
-
-       if (args->verbose) {
-               printf("%u\t", cmd->cmd_thread_count);
-               printf("%u\t", cmd->cmd_region_count);
-               printf("%llu\t", (long long unsigned)cmd->cmd_region_size);
-               printf("%llu\t", (long long unsigned)cmd->cmd_chunk_size);
-               printf("%llu\t", (long long unsigned)cmd->cmd_offset);
-               printf("%u\t", cmd->cmd_region_noise);
-               printf("%u\t", cmd->cmd_chunk_noise);
-               printf("%u\t", cmd->cmd_thread_delay);
-               printf("0x%x\t", cmd->cmd_flags);
-               printf("%u\t", cmd->cmd_block_size);
-       }
-
-       if (args->rc) {
-               printf("\n");
-               return;
-       }
-
-       summary_stats = (zpios_stats_t *)cmd->cmd_data_str;
-       wr_time = zpios_timespec_to_double(summary_stats->wr_time.delta);
-       rd_time = zpios_timespec_to_double(summary_stats->rd_time.delta);
-
-       if (args->verbose) {
-               printf("%ld.%02ld\t",
-                   (long)summary_stats->total_time.delta.ts_sec,
-                   (long)summary_stats->total_time.delta.ts_nsec);
-               printf("%ld.%02ld\t",
-                   (long)summary_stats->cr_time.delta.ts_sec,
-                   (long)summary_stats->cr_time.delta.ts_nsec);
-               printf("%ld.%02ld\t",
-                   (long)summary_stats->rm_time.delta.ts_sec,
-                   (long)summary_stats->rm_time.delta.ts_nsec);
-               printf("%ld.%02ld\t",
-                   (long)summary_stats->wr_time.delta.ts_sec,
-                   (long)summary_stats->wr_time.delta.ts_nsec);
-               printf("%ld.%02ld\t",
-                   (long)summary_stats->rd_time.delta.ts_sec,
-                   (long)summary_stats->rd_time.delta.ts_nsec);
-       }
-
-       printf("%lld\t", (long long unsigned)summary_stats->wr_data);
-       printf("%lld\t", (long long unsigned)summary_stats->wr_chunks);
-       printf("%.4f\t", (double)summary_stats->wr_data / wr_time);
-
-       printf("%lld\t", (long long unsigned)summary_stats->rd_data);
-       printf("%lld\t", (long long unsigned)summary_stats->rd_chunks);
-       printf("%.4f\n", (double)summary_stats->rd_data / rd_time);
-       fflush(stdout);
-}
-
-void
-print_stats(cmd_args_t *args, zpios_cmd_t *cmd)
-{
-       if (args->human_readable)
-               print_stats_human_readable(args, cmd);
-       else
-               print_stats_table(args, cmd);
-}
index c6c32bdd20f7235f41977065226231ef92928ab7..7bde92f33b396b9f55f32a865a00f685d3a28920 100644 (file)
@@ -104,7 +104,6 @@ AC_CONFIG_FILES([
        cmd/zpool/Makefile
        cmd/zstreamdump/Makefile
        cmd/ztest/Makefile
-       cmd/zpios/Makefile
        cmd/mount_zfs/Makefile
        cmd/fsck_zfs/Makefile
        cmd/zvol_id/Makefile
@@ -127,7 +126,6 @@ AC_CONFIG_FILES([
        module/unicode/Makefile
        module/zcommon/Makefile
        module/zfs/Makefile
-       module/zpios/Makefile
        module/icp/Makefile
        include/Makefile
        include/linux/Makefile
@@ -138,13 +136,9 @@ AC_CONFIG_FILES([
        include/sys/crypto/Makefile
        include/sys/sysevent/Makefile
        scripts/Makefile
-       scripts/zpios-profile/Makefile
-       scripts/zpios-test/Makefile
-       scripts/zpool-config/Makefile
-       scripts/common.sh
        tests/Makefile
        tests/test-runner/Makefile
-       tests/test-runner/cmd/Makefile
+       tests/test-runner/bin/Makefile
        tests/test-runner/include/Makefile
        tests/test-runner/man/Makefile
        tests/runfiles/Makefile
@@ -310,7 +304,6 @@ AC_CONFIG_FILES([
        rpm/generic/zfs.spec
        rpm/generic/zfs-kmod.spec
        rpm/generic/zfs-dkms.spec
-       zfs-script-config.sh
        zfs.release
 ])
 
index a5e98bba8ba3d20d9045e2644e33328d4872e280..23e15dac4bdce9607d97c7128848bd05d27a4929 100644 (file)
@@ -6,11 +6,7 @@ COMMON_H = \
        $(top_srcdir)/include/zfs_deleg.h \
        $(top_srcdir)/include/zfs_fletcher.h \
        $(top_srcdir)/include/zfs_namecheck.h \
-       $(top_srcdir)/include/zfs_prop.h \
-       $(top_srcdir)/include/zpios-ctl.h
-
-KERNEL_H = \
-       $(top_srcdir)/include/zpios-internal.h
+       $(top_srcdir)/include/zfs_prop.h
 
 USER_H = \
        $(top_srcdir)/include/libnvpair.h \
@@ -22,7 +18,7 @@ USER_H = \
        $(top_srcdir)/include/libzfs_impl.h \
        $(top_srcdir)/include/thread_pool.h
 
-EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+EXTRA_DIST = $(COMMON_H) $(USER_H)
 
 if CONFIG_USER
 libzfsdir = $(includedir)/libzfs
@@ -31,5 +27,5 @@ endif
 
 if CONFIG_KERNEL
 kerneldir = @prefix@/src/zfs-$(VERSION)/include
-kernel_HEADERS = $(COMMON_H) $(KERNEL_H)
+kernel_HEADERS = $(COMMON_H)
 endif
diff --git a/include/zpios-ctl.h b/include/zpios-ctl.h
deleted file mode 100644 (file)
index f17f115..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- *  ZPIOS is a heavily modified version of the original PIOS test code.
- *  It is designed to have the test code running in the Linux kernel
- *  against ZFS while still being flexibly controlled from user space.
- *
- *  Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  LLNL-CODE-403049
- *
- *  Original PIOS Test Code
- *  Copyright (C) 2004 Cluster File Systems, Inc.
- *  Written by Peter Braam <braam@clusterfs.com>
- *             Atul Vidwansa <atul@clusterfs.com>
- *             Milind Dumbare <milind@clusterfs.com>
- *
- *  This file is part of ZFS on Linux.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  ZPIOS is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  ZPIOS 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
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with ZPIOS.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Copyright (c) 2015, Intel Corporation.
- */
-
-#ifndef _ZPIOS_CTL_H
-#define        _ZPIOS_CTL_H
-
-/*
- * Contains shared definitions which both the userspace
- * and kernelspace portions of zpios must agree on.
- */
-#ifndef _KERNEL
-#include <stdint.h>
-#endif
-
-#define        ZPIOS_NAME                      "zpios"
-#define        ZPIOS_DEV                       "/dev/zpios"
-
-#define        DMU_IO                          0x01
-
-#define        DMU_WRITE                       0x0001
-#define        DMU_READ                        0x0002
-#define        DMU_VERIFY                      0x0004
-#define        DMU_REMOVE                      0x0008
-#define        DMU_FPP                         0x0010
-#define        DMU_WRITE_ZC                    0x0020 /* Incompatible w/DMU_VERIFY */
-#define        DMU_READ_ZC                     0x0040 /* Incompatible w/DMU_VERIFY */
-#define        DMU_WRITE_NOWAIT                0x0080
-#define        DMU_READ_NOPF                   0x0100
-
-#define        ZPIOS_NAME_SIZE                 16
-#define        ZPIOS_PATH_SIZE                 128
-
-#define        PHASE_PRE_RUN                   "pre-run"
-#define        PHASE_PRE_CREATE                "pre-create"
-#define        PHASE_PRE_WRITE                 "pre-write"
-#define        PHASE_PRE_READ                  "pre-read"
-#define        PHASE_PRE_REMOVE                "pre-remove"
-#define        PHASE_POST_RUN                  "post-run"
-#define        PHASE_POST_CREATE               "post-create"
-#define        PHASE_POST_WRITE                "post-write"
-#define        PHASE_POST_READ                 "post-read"
-#define        PHASE_POST_REMOVE               "post-remove"
-
-#define        ZPIOS_CFG_MAGIC                 0x87237190U
-typedef struct zpios_cfg {
-       uint32_t cfg_magic;             /* Unique magic */
-       int32_t cfg_cmd;                /* Config command */
-       int32_t cfg_arg1;               /* Config command arg 1 */
-       int32_t cfg_rc1;                /* Config response 1 */
-} zpios_cfg_t;
-
-typedef struct zpios_timespec {
-       uint32_t ts_sec;
-       uint32_t ts_nsec;
-} zpios_timespec_t;
-
-typedef struct zpios_time {
-       zpios_timespec_t start;
-       zpios_timespec_t stop;
-       zpios_timespec_t delta;
-} zpios_time_t;
-
-typedef struct zpios_stats {
-       zpios_time_t total_time;
-       zpios_time_t cr_time;
-       zpios_time_t rm_time;
-       zpios_time_t wr_time;
-       zpios_time_t rd_time;
-       uint64_t wr_data;
-       uint64_t wr_chunks;
-       uint64_t rd_data;
-       uint64_t rd_chunks;
-} zpios_stats_t;
-
-#define        ZPIOS_CMD_MAGIC                 0x49715385U
-typedef struct zpios_cmd {
-       uint32_t cmd_magic;             /* Unique magic */
-       uint32_t cmd_id;                /* Run ID */
-       char cmd_pool[ZPIOS_NAME_SIZE]; /* Pool name */
-       uint64_t cmd_chunk_size;        /* Chunk size */
-       uint32_t cmd_thread_count;      /* Thread count */
-       uint32_t cmd_region_count;      /* Region count */
-       uint64_t cmd_region_size;       /* Region size */
-       uint64_t cmd_offset;            /* Region offset */
-       uint32_t cmd_region_noise;      /* Region noise */
-       uint32_t cmd_chunk_noise;       /* Chunk noise */
-       uint32_t cmd_thread_delay;      /* Thread delay */
-       uint32_t cmd_flags;             /* Test flags */
-       uint32_t cmd_block_size;        /* ZFS block size */
-       char cmd_pre[ZPIOS_PATH_SIZE];  /* Pre-exec hook */
-       char cmd_post[ZPIOS_PATH_SIZE]; /* Post-exec hook */
-       char cmd_log[ZPIOS_PATH_SIZE];  /* Requested log dir */
-       uint64_t cmd_data_size;         /* Opaque data size */
-       char cmd_data_str[0];           /* Opaque data region */
-} zpios_cmd_t;
-
-/* Valid ioctls */
-#define        ZPIOS_CFG                       _IOWR('f', 101, zpios_cfg_t)
-#define        ZPIOS_CMD                       _IOWR('f', 102, zpios_cmd_t)
-
-/* Valid configuration commands */
-#define        ZPIOS_CFG_BUFFER_CLEAR          0x001   /* Clear text buffer */
-#define        ZPIOS_CFG_BUFFER_SIZE           0x002   /* Resize text buffer */
-
-#ifndef NSEC_PER_SEC
-#define        NSEC_PER_SEC    1000000000L
-#endif
-
-static inline
-void
-zpios_timespec_normalize(zpios_timespec_t *ts, uint32_t sec, uint32_t nsec)
-{
-       while (nsec >= NSEC_PER_SEC) {
-               nsec -= NSEC_PER_SEC;
-               sec++;
-       }
-       while (((int32_t)nsec) < 0) {
-               nsec += NSEC_PER_SEC;
-               sec--;
-       }
-       ts->ts_sec = sec;
-       ts->ts_nsec = nsec;
-}
-
-static inline
-zpios_timespec_t
-zpios_timespec_add(zpios_timespec_t lhs, zpios_timespec_t rhs)
-{
-       zpios_timespec_t ts_delta;
-       zpios_timespec_normalize(&ts_delta, lhs.ts_sec + rhs.ts_sec,
-           lhs.ts_nsec + rhs.ts_nsec);
-       return (ts_delta);
-}
-
-static inline
-zpios_timespec_t
-zpios_timespec_sub(zpios_timespec_t lhs, zpios_timespec_t rhs)
-{
-       zpios_timespec_t ts_delta;
-       zpios_timespec_normalize(&ts_delta, lhs.ts_sec - rhs.ts_sec,
-           lhs.ts_nsec - rhs.ts_nsec);
-       return (ts_delta);
-}
-
-#ifdef _KERNEL
-
-static inline
-zpios_timespec_t
-zpios_timespec_now(void)
-{
-       zpios_timespec_t zts_now;
-       struct timespec ts_now;
-
-       ts_now = current_kernel_time();
-       zts_now.ts_sec  = ts_now.tv_sec;
-       zts_now.ts_nsec = ts_now.tv_nsec;
-
-       return (zts_now);
-}
-
-#else
-
-static inline
-double
-zpios_timespec_to_double(zpios_timespec_t ts)
-{
-       return
-           ((double)(ts.ts_sec) +
-           ((double)(ts.ts_nsec) / (double)(NSEC_PER_SEC)));
-}
-
-#endif /* _KERNEL */
-
-#endif /* _ZPIOS_CTL_H */
diff --git a/include/zpios-internal.h b/include/zpios-internal.h
deleted file mode 100644 (file)
index bb8cee0..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *  ZPIOS is a heavily modified version of the original PIOS test code.
- *  It is designed to have the test code running in the Linux kernel
- *  against ZFS while still being flexibly controlled from user space.
- *
- *  Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  LLNL-CODE-403049
- *
- *  Original PIOS Test Code
- *  Copyright (C) 2004 Cluster File Systems, Inc.
- *  Written by Peter Braam <braam@clusterfs.com>
- *             Atul Vidwansa <atul@clusterfs.com>
- *             Milind Dumbare <milind@clusterfs.com>
- *
- *  This file is part of ZFS on Linux.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  ZPIOS is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  ZPIOS 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
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with ZPIOS.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Copyright (c) 2015, Intel Corporation.
- */
-
-#ifndef _ZPIOS_INTERNAL_H
-#define        _ZPIOS_INTERNAL_H
-
-#include "zpios-ctl.h"
-
-#define        OBJ_SIZE        64
-
-struct run_args;
-
-typedef struct dmu_obj {
-       objset_t *os;
-       uint64_t obj;
-} dmu_obj_t;
-
-/* thread doing the IO data */
-typedef struct thread_data {
-       struct run_args *run_args;
-       int thread_no;
-       int rc;
-       zpios_stats_t stats;
-       kmutex_t lock;
-} thread_data_t;
-
-/* region for IO data */
-typedef struct zpios_region {
-       __u64 wr_offset;
-       __u64 rd_offset;
-       __u64 init_offset;
-       __u64 max_offset;
-       dmu_obj_t obj;
-       zpios_stats_t stats;
-       kmutex_t lock;
-} zpios_region_t;
-
-/* arguments for one run */
-typedef struct run_args {
-       /* Config args */
-       int id;
-       char pool[ZPIOS_NAME_SIZE];
-       __u64 chunk_size;
-       __u32 thread_count;
-       __u32 region_count;
-       __u64 region_size;
-       __u64 offset;
-       __u32 region_noise;
-       __u32 chunk_noise;
-       __u32 thread_delay;
-       __u32 flags;
-       __u32 block_size;
-       char pre[ZPIOS_PATH_SIZE];
-       char post[ZPIOS_PATH_SIZE];
-       char log[ZPIOS_PATH_SIZE];
-
-       /* Control data */
-       objset_t *os;
-       wait_queue_head_t waitq;
-       volatile uint64_t threads_done;
-       kmutex_t lock_work;
-       kmutex_t lock_ctl;
-       __u32 region_next;
-
-       /* Results data */
-       struct file *file;
-       zpios_stats_t stats;
-
-       thread_data_t **threads;
-       zpios_region_t regions[0]; /* Must be last element */
-} run_args_t;
-
-#define        ZPIOS_INFO_BUFFER_SIZE          65536
-#define        ZPIOS_INFO_BUFFER_REDZONE       1024
-
-typedef struct zpios_info {
-       spinlock_t info_lock;
-       int info_size;
-       char *info_buffer;
-       char *info_head;        /* Internal kernel use only */
-} zpios_info_t;
-
-#endif /* _ZPIOS_INTERNAL_H */
index 5f18d1ed6388ab82dd8d0dbb3bd528f271842d29..bd78be1452a8451673da33b651cd0d9431f8329b 100644 (file)
@@ -1,4 +1,4 @@
-dist_man_MANS = zhack.1 zpios.1 ztest.1 raidz_test.1
+dist_man_MANS = zhack.1 ztest.1 raidz_test.1
 EXTRA_DIST = cstyle.1
 
 install-data-local:
index 007be77f852f389534f87e6064e2099b72f90a92..96910119c13ccc78db961ca0ccd03b9e7f1844e1 100644 (file)
@@ -95,6 +95,5 @@ This man page was written by Darik Horn <dajhorn@vanadac.com>.
 .SH SEE ALSO
 .BR splat (1),
 .BR zfs (8),
-.BR zpios (1),
 .BR zpool-features (5),
 .BR ztest (1)
diff --git a/man/man1/zpios.1 b/man/man1/zpios.1
deleted file mode 100644 (file)
index 4334c03..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-'\" t
-.\"
-.\" CDDL HEADER START
-.\"
-.\" The contents of this file are subject to the terms of the
-.\" Common Development and Distribution License (the "License").
-.\" You may not use this file except in compliance with the License.
-.\"
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-.\" or http://www.opensolaris.org/os/licensing.
-.\" See the License for the specific language governing permissions
-.\" and limitations under the License.
-.\"
-.\" When distributing Covered Code, include this CDDL HEADER in each
-.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-.\" If applicable, add the following below this CDDL HEADER, with the
-.\" fields enclosed by brackets "[]" replaced with your own identifying
-.\" information: Portions Copyright [yyyy] [name of copyright owner]
-.\"
-.\" CDDL HEADER END
-.\"
-.\"
-.\" Copyright 2013 Darik Horn <dajhorn@vanadac.com>. All rights reserved.
-.\"
-.\" Copyright (c) 2015, Intel Corporation.
-.\"
-.TH zpios 1 "2013 FEB 28" "ZFS on Linux" "User Commands"
-
-.SH NAME
-zpios \- Directly test the DMU.
-.SH SYNOPSIS
-.LP
-.BI "zpios [options] <\-p " pool ">"
-
-.SH DESCRIPTION
-This utility runs in-kernel DMU performance and stress tests that do
-not depend on the ZFS Posix Layer ("ZPL").
-
-.SH OPTIONS
-.HP
-.BI "\-t" " regex" ", \-\-threadcount" " regex"
-.IP
-Start this many threads for each test series, specified as a comma
-delimited regular expression. (eg: "-t 1,2,3")
-.IP
-This option is mutually exclusive with the \fBthreadcount_*\fR
-options.
-.HP
-.BI "\-l" " regex_low" ", \-\-threadcount_low" " regex_low"
-.HP
-.BI "\-h" " regex_high" ", \-\-threadcount_high" " regex_high"
-.HP
-.BI "\-e" " regex_incr" ", \-\-threadcount_incr" " regex_incr"
-.IP
-Start \fIregex_low\fR threads for the first test,
-add \fIregex_incr\fR threads for each subsequent test,
-and start \fIregex_high\fR threads for the last test.
-.IP
-These three options must be specified together and are mutually
-exclusive with the \fBthreadcount\fR option.
-.HP
-.BI "\-n" " regex" ", \-\-regioncount" " regex"
-.IP
-Create this many regions for each test series, specified as a comma
-delimited regular expression. (eg: "-n 512,4096,65536")
-.IP
-This option is mutually exclusive with the \fBregioncount_*\fR
-options.
-.HP
-.BI "\-i" " regex_low" ", \-\-regioncount_low" " regex_low"
-.HP
-.BI "\-j" " regex_high" ", \-\-regioncount_high" " regex_high"
-.HP
-.BI "\-k" " regex_incr" ", \-\-regioncount_incr" " regex_incr"
-.IP
-Create \fIregex_low\fR regions for the first test,
-add \fIregex_incr\fR regions for each subsequent test, and
-create \fIregex_high\fR regions for the last test.
-.IP
-These three options must be specified together and are mutually
-exclusive with the \fBregioncount\fR option.
-.HP
-.BI "\-o" " size" ", \-\-offset" " size"
-.IP
-Create regions at \fIsize\fR offset for each test series, specified as
-a comma delimited regular expression with an optional unit suffix.
-(eg: "-o 4M" means four megabytes.)
-.IP
-This option is mutually exclusive with the \fBoffset_*\fR options.
-.HP
-.BI "\-m" " size_low" ", \-\-offset_low" " size_low"
-.HP
-.BI "\-q" " size_high" ", \-\-offset_high" " size_high"
-.HP
-.BI "\-r" " size_incr" ", \-\-offset_incr" " size_incr"
-.IP
-Create a region at \fIsize_low\fR offset for the first test, add
-\fIsize_incr\fR to the offset for each subsequent test, and create
-a region at \fIsize_high\fR offset for the last test.
-.IP
-These three options must be specified together and are mutually
-exclusive with the \fBoffset\fR option.
-.HP
-.BI "\-c" " size" ", \-\-chunksize" " size"
-.IP
-Use \fIsize\fR chunks for each test, specified as a comma delimited
-regular expression with an optional unit suffix. (eg: "-c 1M" means
-one megabyte.) The chunk size must be at least the region size.
-.IP
-This option is mutually exclusive with the \fBchunksize_*\fB options.
-.HP
-.BI "\-a" " size_low" ", \-\-chunksize_low" " size_low"
-.HP
-.BI "\-b" " size_high" ", \-\-chunksize_high" " size_high"
-.HP
-.BI "\-g" " size_incr" ", \-\-chunksize_incr" " size_incr"
-.IP
-Use a \fIsize_low\fR chunk size for the first test, add \fIsize_incr\fR
-to the chunk size for each subsequent test, and use a \fIsize_high\fR
-chunk size for the last test.
-.IP
-These three options must be specified together and are mutually
-exclusive with the \fBchunksize\fR option.
-.HP
-.BI "\-s" " size" ", \-\-regionsize" " size"
-.IP
-Use \fIsize\fR regions for each test, specified as a comma delimited
-regular expression with an optional unit suffix. (eg: "-s 1M" means
-one megabyte.)
-.IP
-This option is mutually exclusive with the \fBregionsize_*\fB options.
-.HP
-.BI "\-A" " size_low" ", \-\-regionsize_low" " size_low"
-.HP
-.BI "\-B" " size_high" ", \-\-regionsize_high" " size_high"
-.HP
-.BI "\-C" " size_incr" ", \-\-regionsize_incr" " size_incr"
-.IP
-Use a \fIsize_low\fR region size for the first test, add \fIsize_incr\fR
-to the region size for each subsequent test, and use a \fIsize_high\fR
-region size for the last test.
-.IP
-These three options must be specified together and are mutually
-exclusive with the \fBregionsize\fR option.
-.HP
-.BI "\-S" " size | sizes" ", \-\-blocksize" " size | sizes"
-.IP
-Use \fIsize\fR ZFS blocks for each test, specified as a comma delimited
-regular expression with an optional unit suffix. (eg: "-S 1M" means
-one megabyte.) The supported range is powers of two from 128K through 16M.
-A range of blocks can be tested as follows: "-S 128K,256K,512K,1M".
-.IP
-.HP
-.BI "\-L" " dmu_flags" ", \-\-load" " dmu_flags"
-.IP
-Specify \fIdmuio\fR for regular DMU_IO, \fIssf\fR for single shared
-file access, or \fIfpp\fR for per thread access. Use commas to delimit
-multiple flags. (eg: "-L dmuio,ssf")
-.HP
-.BI "\-p" " name" ", \-\-pool" " name"
-.IP
-The pool name, which is mandatory.
-.HP
-.BI "\-M" " test" ", \-\-name" " test"
-.IP
-An arbitrary string that appears in the program output.
-.HP
-.BI "-x, \-\-cleanup"
-.IP
-Enable the DMU_REMOVE flag.
-.HP
-.BI "\-P" " command" ", \-\-prerun" " command"
-.IP
-Invoke \fIcommand\fR from the kernel before running the test. Shell
-expansion is not performed and the environment is set to
-HOME=/; TERM=linux; PATH=/sbin:/usr/sbin:/bin:/usr/bin.
-.HP
-.BI "\-R" " command" ", \-\-postrun" " command"
-.IP
-Invoke \fIcommand\fR from the kernel after running the test. Shell
-expansion is not performed and the environment is set to
-HOME=/; TERM=linux; PATH=/sbin:/usr/sbin:/bin:/usr/bin.
-.HP
-.BI "\-G" " directory" ", \-\-log" " directory"
-.IP
-Put logging output in this directory.
-.HP
-.BI "\-I" " size" ", \-\-regionnoise" " size"
-.IP
-Randomly vary the \fBregionsize\fR parameter for each test
-modulo \fIsize\fR bytes.
-.HP
-.BI "\-N" " size" ", \-\-chunknoise" " size"
-.IP
-Randomly vary the \fBchunksize\fR parameter for each test
-modulo \fIsize\fR bytes.
-.HP
-.BI "\-T" " time" ", \-\-threaddelay" " time"
-.IP
-Randomly vary the execution time for each test
-modulo \fItime\fR kernel jiffies.
-.HP
-.BI "\-V" "" ", \-\-verify" ""
-.IP
-Enable the DMU_VERIFY flag for trivial data verification.
-.HP
-.BI "\-z" "" ", \-\-zerocopy" ""
-.IP
-Enable the DMU_READ_ZC and DMU_WRITE_ZC flags, which are
-currently unimplemented for Linux.
-.IP
-.HP
-.BI "\-O" "" ", \-\-nowait" ""
-.IP
-Enable the DMU_WRITE_NOWAIT flag.
-.HP
-.BI "\-f" "" ", \-\-noprefetch" ""
-.IP
-Enable the DMU_READ_NOPF flag.
-.HP
-.BI "\-H" "" ", \-\-human\-readable" ""
-.IP
-Print PASS and FAIL results explicitly and put unit suffixes on large
-numbers.
-.HP
-.BI "\-v" "" ", \-\-verbose" ""
-.IP
-Increase output verbosity.
-.HP
-.BI "\-?" " " ", \-\-help" " "
-.IP
-Print the usage message.
-.SH "AUTHORS"
-The original zpios implementation was created by Cluster File Systems
-Inc and adapted to ZFS on Linux by Brian Behlendorf
-<behlendorf1@llnl.gov>.
-
-This man page was written by Darik Horn <dajhorn@vanadac.com>.
-.SH "SEE ALSO"
-.BR zpool (8),
-.BR zfs (8)
index 093cf2286cef0261c257a9cac01cdfa97165d4ed..60973ec7d5cfc5dba20461a6721ec59b1270aac5 100644 (file)
@@ -3,7 +3,6 @@ subdir-m += nvpair
 subdir-m += unicode
 subdir-m += zcommon
 subdir-m += zfs
-subdir-m += zpios
 subdir-m += icp
 
 INSTALL_MOD_DIR ?= extra
index 3254681864a1692a24c2c85391cee0f8350b5201..a3986a2e5c5a88f67f1ff4441935ff96d6b8f929 100644 (file)
@@ -152,5 +152,7 @@ icp_init(void)
 #if defined(_KERNEL) && defined(HAVE_SPL)
 module_exit(icp_fini);
 module_init(icp_init);
+MODULE_AUTHOR(ZFS_META_AUTHOR);
 MODULE_LICENSE(ZFS_META_LICENSE);
+MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
 #endif
diff --git a/module/zpios/Makefile.in b/module/zpios/Makefile.in
deleted file mode 100644 (file)
index 10a101d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-src = @abs_top_srcdir@/module/zpios
-obj = @abs_builddir@
-
-MODULE := zpios
-
-EXTRA_CFLAGS = $(ZFS_MODULE_CFLAGS) @KERNELCPPFLAGS@
-
-obj-$(CONFIG_ZFS) := $(MODULE).o
-
-$(MODULE)-objs += pios.o
diff --git a/module/zpios/pios.c b/module/zpios/pios.c
deleted file mode 100644 (file)
index 0eb5b18..0000000
+++ /dev/null
@@ -1,1298 +0,0 @@
-/*
- *  ZPIOS is a heavily modified version of the original PIOS test code.
- *  It is designed to have the test code running in the Linux kernel
- *  against ZFS while still being flexibly controlled from user space.
- *
- *  Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  LLNL-CODE-403049
- *
- *  Original PIOS Test Code
- *  Copyright (C) 2004 Cluster File Systems, Inc.
- *  Written by Peter Braam <braam@clusterfs.com>
- *             Atul Vidwansa <atul@clusterfs.com>
- *             Milind Dumbare <milind@clusterfs.com>
- *
- *  This file is part of ZFS on Linux.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  ZPIOS is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  ZPIOS 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
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with ZPIOS.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Copyright (c) 2015, Intel Corporation.
- */
-
-#include <sys/zfs_context.h>
-#include <sys/dmu.h>
-#include <sys/spa.h>
-#include <sys/txg.h>
-#include <sys/dsl_destroy.h>
-#include <linux/miscdevice.h>
-#include "zpios-internal.h"
-
-
-static char *zpios_tag = "zpios_tag";
-
-static int
-zpios_upcall(char *path, char *phase, run_args_t *run_args, int rc)
-{
-       /*
-        * This is stack heavy but it should be OK since we are only
-        * making the upcall between tests when the stack is shallow.
-        */
-       char id[16], chunk_size[16], region_size[16], thread_count[16];
-       char region_count[16], offset[16], region_noise[16], chunk_noise[16];
-       char thread_delay[16], flags[16], result[8];
-       char *argv[16], *envp[4];
-
-       if ((path == NULL) || (strlen(path) == 0))
-               return (-ENOENT);
-
-       snprintf(id, 15, "%d", run_args->id);
-       snprintf(chunk_size, 15, "%lu", (long unsigned)run_args->chunk_size);
-       snprintf(region_size, 15, "%lu", (long unsigned) run_args->region_size);
-       snprintf(thread_count, 15, "%u", run_args->thread_count);
-       snprintf(region_count, 15, "%u", run_args->region_count);
-       snprintf(offset, 15, "%lu", (long unsigned)run_args->offset);
-       snprintf(region_noise, 15, "%u", run_args->region_noise);
-       snprintf(chunk_noise, 15, "%u", run_args->chunk_noise);
-       snprintf(thread_delay, 15, "%u", run_args->thread_delay);
-       snprintf(flags, 15, "0x%x", run_args->flags);
-       snprintf(result, 7, "%d", rc);
-
-       /* Passing 15 args to registered pre/post upcall */
-       argv[0] = path;
-       argv[1] = phase;
-       argv[2] = strlen(run_args->log) ? run_args->log : "<none>";
-       argv[3] = id;
-       argv[4] = run_args->pool;
-       argv[5] = chunk_size;
-       argv[6] = region_size;
-       argv[7] = thread_count;
-       argv[8] = region_count;
-       argv[9] = offset;
-       argv[10] = region_noise;
-       argv[11] = chunk_noise;
-       argv[12] = thread_delay;
-       argv[13] = flags;
-       argv[14] = result;
-       argv[15] = NULL;
-
-       /* Passing environment for user space upcall */
-       envp[0] = "HOME=/";
-       envp[1] = "TERM=linux";
-       envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin";
-       envp[3] = NULL;
-
-       return (call_usermodehelper(path, argv, envp, UMH_WAIT_PROC));
-}
-
-static int
-zpios_print(struct file *file, const char *format, ...)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-       va_list adx;
-       int rc;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       va_start(adx, format);
-       spin_lock(&info->info_lock);
-
-       /* Don't allow the kernel to start a write in the red zone */
-       if ((int)(info->info_head - info->info_buffer) >
-           (info->info_size - ZPIOS_INFO_BUFFER_REDZONE)) {
-               rc = -EOVERFLOW;
-       } else {
-               rc = vsprintf(info->info_head, format, adx);
-               if (rc >= 0)
-                       info->info_head += rc;
-       }
-
-       spin_unlock(&info->info_lock);
-       va_end(adx);
-
-       return (rc);
-}
-
-static uint64_t
-zpios_dmu_object_create(run_args_t *run_args, objset_t *os)
-{
-       struct dmu_tx *tx;
-       uint64_t obj = 0ULL;
-       uint64_t blksize = run_args->block_size;
-       int rc;
-
-       if (blksize < SPA_MINBLOCKSIZE ||
-           blksize > spa_maxblocksize(dmu_objset_spa(os)) ||
-           !ISP2(blksize)) {
-               zpios_print(run_args->file,
-                   "invalid block size for pool: %d\n", (int)blksize);
-               return (obj);
-       }
-
-       tx = dmu_tx_create(os);
-       dmu_tx_hold_write(tx, DMU_NEW_OBJECT, 0, OBJ_SIZE);
-       rc = dmu_tx_assign(tx, TXG_WAIT);
-       if (rc) {
-               zpios_print(run_args->file,
-                   "dmu_tx_assign() failed: %d\n", rc);
-               dmu_tx_abort(tx);
-               return (obj);
-       }
-
-       obj = dmu_object_alloc(os, DMU_OT_UINT64_OTHER, 0, DMU_OT_NONE, 0, tx);
-       rc = dmu_object_set_blocksize(os, obj, blksize, 0, tx);
-       if (rc) {
-               zpios_print(run_args->file,
-                   "dmu_object_set_blocksize to %d failed: %d\n",
-                   (int)blksize, rc);
-               dmu_tx_abort(tx);
-               return (obj);
-       }
-
-       dmu_tx_commit(tx);
-
-       return (obj);
-}
-
-static int
-zpios_dmu_object_free(run_args_t *run_args, objset_t *os, uint64_t obj)
-{
-       struct dmu_tx *tx;
-       int rc;
-
-       tx = dmu_tx_create(os);
-       dmu_tx_hold_free(tx, obj, 0, DMU_OBJECT_END);
-       rc = dmu_tx_assign(tx, TXG_WAIT);
-       if (rc) {
-               zpios_print(run_args->file,
-                   "dmu_tx_assign() failed: %d\n", rc);
-               dmu_tx_abort(tx);
-               return (rc);
-       }
-
-       rc = dmu_object_free(os, obj, tx);
-       if (rc) {
-               zpios_print(run_args->file,
-                   "dmu_object_free() failed: %d\n", rc);
-               dmu_tx_abort(tx);
-               return (rc);
-       }
-
-       dmu_tx_commit(tx);
-
-       return (0);
-}
-
-static int
-zpios_dmu_setup(run_args_t *run_args)
-{
-       zpios_time_t *t = &(run_args->stats.cr_time);
-       objset_t *os;
-       char name[32];
-       uint64_t obj = 0ULL;
-       int i, rc = 0, rc2;
-
-       (void) zpios_upcall(run_args->pre, PHASE_PRE_CREATE, run_args, 0);
-       t->start = zpios_timespec_now();
-
-       (void) snprintf(name, 32, "%s/id_%d", run_args->pool, run_args->id);
-       rc = dmu_objset_create(name, DMU_OST_OTHER, 0, NULL, NULL, NULL);
-       if (rc) {
-               zpios_print(run_args->file, "Error dmu_objset_create(%s, ...) "
-                   "failed: %d\n", name, rc);
-               goto out;
-       }
-
-       rc = dmu_objset_own(name, DMU_OST_OTHER, 0, 1, zpios_tag, &os);
-       if (rc) {
-               zpios_print(run_args->file, "Error dmu_objset_own(%s, ...) "
-                   "failed: %d\n", name, rc);
-               goto out_destroy;
-       }
-
-       if (!(run_args->flags & DMU_FPP)) {
-               obj = zpios_dmu_object_create(run_args, os);
-               if (obj == 0) {
-                       rc = -EBADF;
-                       zpios_print(run_args->file, "Error zpios_dmu_"
-                           "object_create() failed, %d\n", rc);
-                       goto out_destroy;
-               }
-       }
-
-       for (i = 0; i < run_args->region_count; i++) {
-               zpios_region_t *region;
-
-               region = &run_args->regions[i];
-               mutex_init(&region->lock, NULL, MUTEX_DEFAULT, NULL);
-
-               if (run_args->flags & DMU_FPP) {
-                       /* File per process */
-                       region->obj.os  = os;
-                       region->obj.obj = zpios_dmu_object_create(run_args, os);
-                       ASSERT(region->obj.obj > 0); /* XXX - Handle this */
-                       region->wr_offset   = run_args->offset;
-                       region->rd_offset   = run_args->offset;
-                       region->init_offset = run_args->offset;
-                       region->max_offset  = run_args->offset +
-                           run_args->region_size;
-               } else {
-                       /* Single shared file */
-                       region->obj.os  = os;
-                       region->obj.obj = obj;
-                       region->wr_offset   = run_args->offset * i;
-                       region->rd_offset   = run_args->offset * i;
-                       region->init_offset = run_args->offset * i;
-                       region->max_offset  = run_args->offset *
-                           i + run_args->region_size;
-               }
-       }
-
-       run_args->os = os;
-out_destroy:
-       if (rc) {
-               rc2 = dsl_destroy_head(name);
-               if (rc2)
-                       zpios_print(run_args->file, "Error dsl_destroy_head"
-                           "(%s, ...) failed: %d\n", name, rc2);
-       }
-out:
-       t->stop  = zpios_timespec_now();
-       t->delta = zpios_timespec_sub(t->stop, t->start);
-       (void) zpios_upcall(run_args->post, PHASE_POST_CREATE, run_args, rc);
-
-       return (rc);
-}
-
-static int
-zpios_setup_run(run_args_t **run_args, zpios_cmd_t *kcmd, struct file *file)
-{
-       run_args_t *ra;
-       int rc, size;
-
-       size = sizeof (*ra) + kcmd->cmd_region_count * sizeof (zpios_region_t);
-
-       ra = vmem_zalloc(size, KM_SLEEP);
-
-       *run_args = ra;
-       strncpy(ra->pool, kcmd->cmd_pool, ZPIOS_NAME_SIZE - 1);
-       strncpy(ra->pre, kcmd->cmd_pre, ZPIOS_PATH_SIZE - 1);
-       strncpy(ra->post, kcmd->cmd_post, ZPIOS_PATH_SIZE - 1);
-       strncpy(ra->log, kcmd->cmd_log, ZPIOS_PATH_SIZE - 1);
-       ra->id                  = kcmd->cmd_id;
-       ra->chunk_size          = kcmd->cmd_chunk_size;
-       ra->thread_count        = kcmd->cmd_thread_count;
-       ra->region_count        = kcmd->cmd_region_count;
-       ra->region_size         = kcmd->cmd_region_size;
-       ra->offset              = kcmd->cmd_offset;
-       ra->region_noise        = kcmd->cmd_region_noise;
-       ra->chunk_noise         = kcmd->cmd_chunk_noise;
-       ra->thread_delay        = kcmd->cmd_thread_delay;
-       ra->flags               = kcmd->cmd_flags;
-       ra->block_size          = kcmd->cmd_block_size;
-       ra->stats.wr_data       = 0;
-       ra->stats.wr_chunks     = 0;
-       ra->stats.rd_data       = 0;
-       ra->stats.rd_chunks     = 0;
-       ra->region_next         = 0;
-       ra->file                = file;
-       mutex_init(&ra->lock_work, NULL, MUTEX_DEFAULT, NULL);
-       mutex_init(&ra->lock_ctl, NULL, MUTEX_DEFAULT, NULL);
-
-       (void) zpios_upcall(ra->pre, PHASE_PRE_RUN, ra, 0);
-
-       rc = zpios_dmu_setup(ra);
-       if (rc) {
-               mutex_destroy(&ra->lock_ctl);
-               mutex_destroy(&ra->lock_work);
-               vmem_free(ra, size);
-               *run_args = NULL;
-       }
-
-       return (rc);
-}
-
-static int
-zpios_get_work_item(run_args_t *run_args, dmu_obj_t *obj, __u64 *offset,
-    __u32 *chunk_size, zpios_region_t **region, __u32 flags)
-{
-       int i, j, count = 0;
-       unsigned int random_int;
-
-       get_random_bytes(&random_int, sizeof (unsigned int));
-
-       mutex_enter(&run_args->lock_work);
-       i = run_args->region_next;
-
-       /*
-        * XXX: I don't much care for this chunk selection mechansim
-        * there's the potential to burn a lot of time here doing nothing
-        * useful while holding the global lock.  This could give some
-        * misleading performance results.  I'll fix it latter.
-        */
-       while (count < run_args->region_count) {
-               __u64 *rw_offset;
-               zpios_time_t *rw_time;
-
-               j = i % run_args->region_count;
-               *region = &(run_args->regions[j]);
-
-               if (flags & DMU_WRITE) {
-                       rw_offset = &((*region)->wr_offset);
-                       rw_time = &((*region)->stats.wr_time);
-               } else {
-                       rw_offset = &((*region)->rd_offset);
-                       rw_time = &((*region)->stats.rd_time);
-               }
-
-               /* test if region is fully written */
-               if (*rw_offset + *chunk_size > (*region)->max_offset) {
-                       i++;
-                       count++;
-
-                       if (unlikely(rw_time->stop.ts_sec == 0) &&
-                           unlikely(rw_time->stop.ts_nsec == 0))
-                               rw_time->stop = zpios_timespec_now();
-
-                       continue;
-               }
-
-               *offset = *rw_offset;
-               *obj = (*region)->obj;
-               *rw_offset += *chunk_size;
-
-               /* update ctl structure */
-               if (run_args->region_noise) {
-                       get_random_bytes(&random_int, sizeof (unsigned int));
-                       run_args->region_next +=
-                           random_int % run_args->region_noise;
-               } else {
-                       run_args->region_next++;
-               }
-
-               mutex_exit(&run_args->lock_work);
-               return (1);
-       }
-
-       /* nothing left to do */
-       mutex_exit(&run_args->lock_work);
-
-       return (0);
-}
-
-static void
-zpios_remove_objset(run_args_t *run_args)
-{
-       zpios_time_t *t = &(run_args->stats.rm_time);
-       zpios_region_t *region;
-       char name[32];
-       int rc = 0, i;
-
-       (void) zpios_upcall(run_args->pre, PHASE_PRE_REMOVE, run_args, 0);
-       t->start = zpios_timespec_now();
-
-       (void) snprintf(name, 32, "%s/id_%d", run_args->pool, run_args->id);
-
-       if (run_args->flags & DMU_REMOVE) {
-               if (run_args->flags & DMU_FPP) {
-                       for (i = 0; i < run_args->region_count; i++) {
-                               region = &run_args->regions[i];
-                               rc = zpios_dmu_object_free(run_args,
-                                   region->obj.os, region->obj.obj);
-                               if (rc)
-                                       zpios_print(run_args->file,
-                                           "Error removing object %d, %d\n",
-                                           (int)region->obj.obj, rc);
-                       }
-               } else {
-                       region = &run_args->regions[0];
-                       rc = zpios_dmu_object_free(run_args,
-                           region->obj.os, region->obj.obj);
-                       if (rc)
-                               zpios_print(run_args->file,
-                                   "Error removing object %d, %d\n",
-                                   (int)region->obj.obj, rc);
-               }
-       }
-
-       dmu_objset_disown(run_args->os, 1, zpios_tag);
-
-       if (run_args->flags & DMU_REMOVE) {
-               rc = dsl_destroy_head(name);
-               if (rc)
-                       zpios_print(run_args->file, "Error dsl_destroy_head"
-                           "(%s, ...) failed: %d\n", name, rc);
-       }
-
-       t->stop  = zpios_timespec_now();
-       t->delta = zpios_timespec_sub(t->stop, t->start);
-       (void) zpios_upcall(run_args->post, PHASE_POST_REMOVE, run_args, rc);
-}
-
-static void
-zpios_cleanup_run(run_args_t *run_args)
-{
-       int i, size = 0;
-
-       if (run_args == NULL)
-               return;
-
-       if (run_args->threads != NULL) {
-               for (i = 0; i < run_args->thread_count; i++) {
-                       if (run_args->threads[i]) {
-                               mutex_destroy(&run_args->threads[i]->lock);
-                               kmem_free(run_args->threads[i],
-                                   sizeof (thread_data_t));
-                       }
-               }
-
-               kmem_free(run_args->threads,
-                   sizeof (thread_data_t *) * run_args->thread_count);
-       }
-
-       for (i = 0; i < run_args->region_count; i++)
-               mutex_destroy(&run_args->regions[i].lock);
-
-       mutex_destroy(&run_args->lock_work);
-       mutex_destroy(&run_args->lock_ctl);
-       size = run_args->region_count * sizeof (zpios_region_t);
-
-       vmem_free(run_args, sizeof (*run_args) + size);
-}
-
-static int
-zpios_dmu_write(run_args_t *run_args, objset_t *os, uint64_t object,
-    uint64_t offset, uint64_t size, const void *buf)
-{
-       struct dmu_tx *tx;
-       int rc, how = TXG_WAIT;
-//     int flags = 0;
-
-       if (run_args->flags & DMU_WRITE_NOWAIT)
-               how = TXG_NOWAIT;
-
-       while (1) {
-               tx = dmu_tx_create(os);
-               dmu_tx_hold_write(tx, object, offset, size);
-               rc = dmu_tx_assign(tx, how);
-
-               if (rc) {
-                       if (rc == ERESTART && how == TXG_NOWAIT) {
-                               dmu_tx_wait(tx);
-                               dmu_tx_abort(tx);
-                               continue;
-                       }
-                       zpios_print(run_args->file,
-                           "Error in dmu_tx_assign(), %d", rc);
-                       dmu_tx_abort(tx);
-                       return (rc);
-               }
-               break;
-       }
-
-//     if (run_args->flags & DMU_WRITE_ZC)
-//             flags |= DMU_WRITE_ZEROCOPY;
-
-       dmu_write(os, object, offset, size, buf, tx);
-       dmu_tx_commit(tx);
-
-       return (0);
-}
-
-static int
-zpios_dmu_read(run_args_t *run_args, objset_t *os, uint64_t object,
-    uint64_t offset, uint64_t size, void *buf)
-{
-       int flags = 0;
-
-//     if (run_args->flags & DMU_READ_ZC)
-//             flags |= DMU_READ_ZEROCOPY;
-
-       if (run_args->flags & DMU_READ_NOPF)
-               flags |= DMU_READ_NO_PREFETCH;
-
-       return (dmu_read(os, object, offset, size, buf, flags));
-}
-
-static int
-zpios_thread_main(void *data)
-{
-       thread_data_t *thr = (thread_data_t *)data;
-       run_args_t *run_args = thr->run_args;
-       zpios_time_t t;
-       dmu_obj_t obj;
-       __u64 offset;
-       __u32 chunk_size;
-       zpios_region_t *region;
-       char *buf;
-       unsigned int random_int;
-       int chunk_noise = run_args->chunk_noise;
-       int chunk_noise_tmp = 0;
-       int thread_delay = run_args->thread_delay;
-       int thread_delay_tmp = 0;
-       int i, rc = 0;
-
-       if (chunk_noise) {
-               get_random_bytes(&random_int, sizeof (unsigned int));
-               chunk_noise_tmp = (random_int % (chunk_noise * 2))-chunk_noise;
-       }
-
-       /*
-        * It's OK to vmem_alloc() this memory because it will be copied
-        * in to the slab and pointers to the slab copy will be setup in
-        * the bio when the IO is submitted.  This of course is not ideal
-        * since we want a zero-copy IO path if possible.  It would be nice
-        * to have direct access to those slab entries.
-        */
-       chunk_size = run_args->chunk_size + chunk_noise_tmp;
-       buf = (char *)vmem_alloc(chunk_size, KM_SLEEP);
-       ASSERT(buf);
-
-       /* Trivial data verification pattern for now. */
-       if (run_args->flags & DMU_VERIFY)
-               memset(buf, 'z', chunk_size);
-
-       /* Write phase */
-       mutex_enter(&thr->lock);
-       thr->stats.wr_time.start = zpios_timespec_now();
-       mutex_exit(&thr->lock);
-
-       while (zpios_get_work_item(run_args, &obj, &offset,
-           &chunk_size, &region, DMU_WRITE)) {
-               if (thread_delay) {
-                       get_random_bytes(&random_int, sizeof (unsigned int));
-                       thread_delay_tmp = random_int % thread_delay;
-                       set_current_state(TASK_UNINTERRUPTIBLE);
-                       schedule_timeout(thread_delay_tmp); /* In jiffies */
-               }
-
-               t.start = zpios_timespec_now();
-               rc = zpios_dmu_write(run_args, obj.os, obj.obj,
-                   offset, chunk_size, buf);
-               t.stop  = zpios_timespec_now();
-               t.delta = zpios_timespec_sub(t.stop, t.start);
-
-               if (rc) {
-                       zpios_print(run_args->file, "IO error while doing "
-                           "dmu_write(): %d\n", rc);
-                       break;
-               }
-
-               mutex_enter(&thr->lock);
-               thr->stats.wr_data += chunk_size;
-               thr->stats.wr_chunks++;
-               thr->stats.wr_time.delta = zpios_timespec_add(
-                   thr->stats.wr_time.delta, t.delta);
-               mutex_exit(&thr->lock);
-
-               mutex_enter(&region->lock);
-               region->stats.wr_data += chunk_size;
-               region->stats.wr_chunks++;
-               region->stats.wr_time.delta = zpios_timespec_add(
-                   region->stats.wr_time.delta, t.delta);
-
-               /* First time region was accessed */
-               if (region->init_offset == offset)
-                       region->stats.wr_time.start = t.start;
-
-               mutex_exit(&region->lock);
-       }
-
-       mutex_enter(&run_args->lock_ctl);
-       run_args->threads_done++;
-       mutex_exit(&run_args->lock_ctl);
-
-       mutex_enter(&thr->lock);
-       thr->rc = rc;
-       thr->stats.wr_time.stop = zpios_timespec_now();
-       mutex_exit(&thr->lock);
-       wake_up(&run_args->waitq);
-
-       set_current_state(TASK_UNINTERRUPTIBLE);
-       schedule();
-
-       /* Check if we should exit */
-       mutex_enter(&thr->lock);
-       rc = thr->rc;
-       mutex_exit(&thr->lock);
-       if (rc)
-               goto out;
-
-       /* Read phase */
-       mutex_enter(&thr->lock);
-       thr->stats.rd_time.start = zpios_timespec_now();
-       mutex_exit(&thr->lock);
-
-       while (zpios_get_work_item(run_args, &obj, &offset,
-           &chunk_size, &region, DMU_READ)) {
-               if (thread_delay) {
-                       get_random_bytes(&random_int, sizeof (unsigned int));
-                       thread_delay_tmp = random_int % thread_delay;
-                       set_current_state(TASK_UNINTERRUPTIBLE);
-                       schedule_timeout(thread_delay_tmp); /* In jiffies */
-               }
-
-               if (run_args->flags & DMU_VERIFY)
-                       memset(buf, 0, chunk_size);
-
-               t.start = zpios_timespec_now();
-               rc = zpios_dmu_read(run_args, obj.os, obj.obj,
-                   offset, chunk_size, buf);
-               t.stop  = zpios_timespec_now();
-               t.delta = zpios_timespec_sub(t.stop, t.start);
-
-               if (rc) {
-                       zpios_print(run_args->file, "IO error while doing "
-                           "dmu_read(): %d\n", rc);
-                       break;
-               }
-
-               /* Trivial data verification, expensive! */
-               if (run_args->flags & DMU_VERIFY) {
-                       for (i = 0; i < chunk_size; i++) {
-                               if (buf[i] != 'z') {
-                                       zpios_print(run_args->file,
-                                           "IO verify error: %d/%d/%d\n",
-                                           (int)obj.obj, (int)offset,
-                                           (int)chunk_size);
-                                       break;
-                               }
-                       }
-               }
-
-               mutex_enter(&thr->lock);
-               thr->stats.rd_data += chunk_size;
-               thr->stats.rd_chunks++;
-               thr->stats.rd_time.delta = zpios_timespec_add(
-                   thr->stats.rd_time.delta, t.delta);
-               mutex_exit(&thr->lock);
-
-               mutex_enter(&region->lock);
-               region->stats.rd_data += chunk_size;
-               region->stats.rd_chunks++;
-               region->stats.rd_time.delta = zpios_timespec_add(
-                   region->stats.rd_time.delta, t.delta);
-
-               /* First time region was accessed */
-               if (region->init_offset == offset)
-                       region->stats.rd_time.start = t.start;
-
-               mutex_exit(&region->lock);
-       }
-
-       mutex_enter(&run_args->lock_ctl);
-       run_args->threads_done++;
-       mutex_exit(&run_args->lock_ctl);
-
-       mutex_enter(&thr->lock);
-       thr->rc = rc;
-       thr->stats.rd_time.stop = zpios_timespec_now();
-       mutex_exit(&thr->lock);
-       wake_up(&run_args->waitq);
-
-out:
-       vmem_free(buf, chunk_size);
-       do_exit(0);
-
-       return (rc); /* Unreachable, due to do_exit() */
-}
-
-static int
-zpios_thread_done(run_args_t *run_args)
-{
-       ASSERT(run_args->threads_done <= run_args->thread_count);
-       return (run_args->threads_done == run_args->thread_count);
-}
-
-static int
-zpios_threads_run(run_args_t *run_args)
-{
-       struct task_struct *tsk, **tsks;
-       thread_data_t *thr = NULL;
-       zpios_time_t *tt = &(run_args->stats.total_time);
-       zpios_time_t *tw = &(run_args->stats.wr_time);
-       zpios_time_t *tr = &(run_args->stats.rd_time);
-       int i, rc = 0, tc = run_args->thread_count;
-
-       tsks = kmem_zalloc(sizeof (struct task_struct *) * tc, KM_SLEEP);
-
-       run_args->threads = kmem_zalloc(sizeof (thread_data_t *)*tc, KM_SLEEP);
-
-       init_waitqueue_head(&run_args->waitq);
-       run_args->threads_done = 0;
-
-       /* Create all the needed threads which will sleep until awoken */
-       for (i = 0; i < tc; i++) {
-               thr = kmem_zalloc(sizeof (thread_data_t), KM_SLEEP);
-
-               thr->thread_no = i;
-               thr->run_args = run_args;
-               thr->rc = 0;
-               mutex_init(&thr->lock, NULL, MUTEX_DEFAULT, NULL);
-               run_args->threads[i] = thr;
-
-               tsk = kthread_create(zpios_thread_main, (void *)thr,
-                   "%s/%d", "zpios_io", i);
-               if (IS_ERR(tsk)) {
-                       rc = -EINVAL;
-                       goto taskerr;
-               }
-
-               tsks[i] = tsk;
-       }
-
-       tt->start = zpios_timespec_now();
-
-       /* Wake up all threads for write phase */
-       (void) zpios_upcall(run_args->pre, PHASE_PRE_WRITE, run_args, 0);
-       for (i = 0; i < tc; i++)
-               wake_up_process(tsks[i]);
-
-       /* Wait for write phase to complete */
-       tw->start = zpios_timespec_now();
-       wait_event(run_args->waitq, zpios_thread_done(run_args));
-       tw->stop = zpios_timespec_now();
-       (void) zpios_upcall(run_args->post, PHASE_POST_WRITE, run_args, rc);
-
-       for (i = 0; i < tc; i++) {
-               thr = run_args->threads[i];
-
-               mutex_enter(&thr->lock);
-
-               if (!rc && thr->rc)
-                       rc = thr->rc;
-
-               run_args->stats.wr_data += thr->stats.wr_data;
-               run_args->stats.wr_chunks += thr->stats.wr_chunks;
-               mutex_exit(&thr->lock);
-       }
-
-       if (rc) {
-               /* Wake up all threads and tell them to exit */
-               for (i = 0; i < tc; i++) {
-                       mutex_enter(&thr->lock);
-                       thr->rc = rc;
-                       mutex_exit(&thr->lock);
-
-                       wake_up_process(tsks[i]);
-               }
-               goto out;
-       }
-
-       mutex_enter(&run_args->lock_ctl);
-       ASSERT(run_args->threads_done == run_args->thread_count);
-       run_args->threads_done = 0;
-       mutex_exit(&run_args->lock_ctl);
-
-       /* Wake up all threads for read phase */
-       (void) zpios_upcall(run_args->pre, PHASE_PRE_READ, run_args, 0);
-       for (i = 0; i < tc; i++)
-               wake_up_process(tsks[i]);
-
-       /* Wait for read phase to complete */
-       tr->start = zpios_timespec_now();
-       wait_event(run_args->waitq, zpios_thread_done(run_args));
-       tr->stop = zpios_timespec_now();
-       (void) zpios_upcall(run_args->post, PHASE_POST_READ, run_args, rc);
-
-       for (i = 0; i < tc; i++) {
-               thr = run_args->threads[i];
-
-               mutex_enter(&thr->lock);
-
-               if (!rc && thr->rc)
-                       rc = thr->rc;
-
-               run_args->stats.rd_data += thr->stats.rd_data;
-               run_args->stats.rd_chunks += thr->stats.rd_chunks;
-               mutex_exit(&thr->lock);
-       }
-out:
-       tt->stop  = zpios_timespec_now();
-       tt->delta = zpios_timespec_sub(tt->stop, tt->start);
-       tw->delta = zpios_timespec_sub(tw->stop, tw->start);
-       tr->delta = zpios_timespec_sub(tr->stop, tr->start);
-
-cleanup:
-       kmem_free(tsks, sizeof (struct task_struct *) * tc);
-       return (rc);
-
-taskerr:
-       /* Destroy all threads that were created successfully */
-       for (i = 0; i < tc; i++)
-               if (tsks[i] != NULL)
-                       (void) kthread_stop(tsks[i]);
-
-       goto cleanup;
-}
-
-static int
-zpios_do_one_run(struct file *file, zpios_cmd_t *kcmd,
-    int data_size, void *data)
-{
-       run_args_t *run_args = { 0 };
-       zpios_stats_t *stats = (zpios_stats_t *)data;
-       int i, n, m, size, rc;
-
-       if ((!kcmd->cmd_chunk_size) || (!kcmd->cmd_region_size) ||
-           (!kcmd->cmd_thread_count) || (!kcmd->cmd_region_count)) {
-               zpios_print(file, "Invalid chunk_size, region_size, "
-                   "thread_count, or region_count, %d\n", -EINVAL);
-               return (-EINVAL);
-       }
-
-       if (!(kcmd->cmd_flags & DMU_WRITE) ||
-           !(kcmd->cmd_flags & DMU_READ)) {
-               zpios_print(file, "Invalid flags, minimally DMU_WRITE "
-                   "and DMU_READ must be set, %d\n", -EINVAL);
-               return (-EINVAL);
-       }
-
-       if ((kcmd->cmd_flags & (DMU_WRITE_ZC | DMU_READ_ZC)) &&
-           (kcmd->cmd_flags & DMU_VERIFY)) {
-               zpios_print(file, "Invalid flags, DMU_*_ZC incompatible "
-                   "with DMU_VERIFY, used for performance analysis "
-                   "only, %d\n", -EINVAL);
-               return (-EINVAL);
-       }
-
-       /*
-        * Opaque data on return contains structs of the following form:
-        *
-        * zpios_stat_t stats[];
-        * stats[0]     = run_args->stats;
-        * stats[1-N]   = threads[N]->stats;
-        * stats[N+1-M] = regions[M]->stats;
-        *
-        * Where N is the number of threads, and M is the number of regions.
-        */
-       size = (sizeof (zpios_stats_t) +
-           (kcmd->cmd_thread_count * sizeof (zpios_stats_t)) +
-           (kcmd->cmd_region_count * sizeof (zpios_stats_t)));
-       if (data_size < size) {
-               zpios_print(file, "Invalid size, command data buffer "
-                   "size too small, (%d < %d)\n", data_size, size);
-               return (-ENOSPC);
-       }
-
-       rc = zpios_setup_run(&run_args, kcmd, file);
-       if (rc)
-               return (rc);
-
-       rc = zpios_threads_run(run_args);
-       zpios_remove_objset(run_args);
-       if (rc)
-               goto cleanup;
-
-       if (stats) {
-               n = 1;
-               m = 1 + kcmd->cmd_thread_count;
-               stats[0] = run_args->stats;
-
-               for (i = 0; i < kcmd->cmd_thread_count; i++)
-                       stats[n+i] = run_args->threads[i]->stats;
-
-               for (i = 0; i < kcmd->cmd_region_count; i++)
-                       stats[m+i] = run_args->regions[i].stats;
-       }
-
-cleanup:
-       zpios_cleanup_run(run_args);
-
-       (void) zpios_upcall(kcmd->cmd_post, PHASE_POST_RUN, run_args, 0);
-
-       return (rc);
-}
-
-static int
-zpios_open(struct inode *inode, struct file *file)
-{
-       zpios_info_t *info;
-
-       info = (zpios_info_t *)kmem_alloc(sizeof (*info), KM_SLEEP);
-
-       spin_lock_init(&info->info_lock);
-       info->info_size = ZPIOS_INFO_BUFFER_SIZE;
-       info->info_buffer =
-           (char *)vmem_alloc(ZPIOS_INFO_BUFFER_SIZE, KM_SLEEP);
-
-       info->info_head = info->info_buffer;
-       file->private_data = (void *)info;
-
-       return (0);
-}
-
-static int
-zpios_release(struct inode *inode, struct file *file)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       vmem_free(info->info_buffer, ZPIOS_INFO_BUFFER_SIZE);
-       kmem_free(info, sizeof (*info));
-
-       return (0);
-}
-
-static int
-zpios_buffer_clear(struct file *file, zpios_cfg_t *kcfg, unsigned long arg)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       spin_lock(&info->info_lock);
-       memset(info->info_buffer, 0, info->info_size);
-       info->info_head = info->info_buffer;
-       spin_unlock(&info->info_lock);
-
-       return (0);
-}
-
-static int
-zpios_buffer_size(struct file *file, zpios_cfg_t *kcfg, unsigned long arg)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-       char *buf;
-       int min, size, rc = 0;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       spin_lock(&info->info_lock);
-       if (kcfg->cfg_arg1 > 0) {
-
-               size = kcfg->cfg_arg1;
-               buf = (char *)vmem_alloc(size, KM_SLEEP);
-
-               /* Zero fill and truncate contents when coping buffer */
-               min = ((size < info->info_size) ? size : info->info_size);
-               memset(buf, 0, size);
-               memcpy(buf, info->info_buffer, min);
-               vmem_free(info->info_buffer, info->info_size);
-               info->info_size = size;
-               info->info_buffer = buf;
-               info->info_head = info->info_buffer;
-       }
-
-       kcfg->cfg_rc1 = info->info_size;
-
-       if (copy_to_user((struct zpios_cfg_t __user *)arg,
-           kcfg, sizeof (*kcfg)))
-               rc = -EFAULT;
-
-       spin_unlock(&info->info_lock);
-
-       return (rc);
-}
-
-static int
-zpios_ioctl_cfg(struct file *file, unsigned long arg)
-{
-       zpios_cfg_t kcfg;
-       int rc = 0;
-
-       if (copy_from_user(&kcfg, (zpios_cfg_t *)arg, sizeof (kcfg)))
-               return (-EFAULT);
-
-       if (kcfg.cfg_magic != ZPIOS_CFG_MAGIC) {
-               zpios_print(file, "Bad config magic 0x%x != 0x%x\n",
-                   kcfg.cfg_magic, ZPIOS_CFG_MAGIC);
-               return (-EINVAL);
-       }
-
-       switch (kcfg.cfg_cmd) {
-               case ZPIOS_CFG_BUFFER_CLEAR:
-                       /*
-                        * cfg_arg1 - Unused
-                        * cfg_rc1  - Unused
-                        */
-                       rc = zpios_buffer_clear(file, &kcfg, arg);
-                       break;
-               case ZPIOS_CFG_BUFFER_SIZE:
-                       /*
-                        * cfg_arg1 - 0 - query size; >0 resize
-                        * cfg_rc1  - Set to current buffer size
-                        */
-                       rc = zpios_buffer_size(file, &kcfg, arg);
-                       break;
-               default:
-                       zpios_print(file, "Bad config command %d\n",
-                           kcfg.cfg_cmd);
-                       rc = -EINVAL;
-                       break;
-       }
-
-       return (rc);
-}
-
-static int
-zpios_ioctl_cmd(struct file *file, unsigned long arg)
-{
-       zpios_cmd_t *kcmd;
-       void *data = NULL;
-       int rc = -EINVAL;
-
-       kcmd = kmem_alloc(sizeof (zpios_cmd_t), KM_SLEEP);
-
-       rc = copy_from_user(kcmd, (zpios_cfg_t *)arg, sizeof (zpios_cmd_t));
-       if (rc) {
-               zpios_print(file, "Unable to copy command structure "
-                   "from user to kernel memory, %d\n", rc);
-               goto out_cmd;
-       }
-
-       if (kcmd->cmd_magic != ZPIOS_CMD_MAGIC) {
-               zpios_print(file, "Bad command magic 0x%x != 0x%x\n",
-                   kcmd->cmd_magic, ZPIOS_CFG_MAGIC);
-               rc = (-EINVAL);
-               goto out_cmd;
-       }
-
-       /* Allocate memory for any opaque data the caller needed to pass on */
-       if (kcmd->cmd_data_size > 0) {
-               data = (void *)vmem_alloc(kcmd->cmd_data_size, KM_SLEEP);
-
-               rc = copy_from_user(data, (void *)(arg + offsetof(zpios_cmd_t,
-                   cmd_data_str)), kcmd->cmd_data_size);
-               if (rc) {
-                       zpios_print(file, "Unable to copy data buffer "
-                           "from user to kernel memory, %d\n", rc);
-                       goto out_data;
-               }
-       }
-
-       rc = zpios_do_one_run(file, kcmd, kcmd->cmd_data_size, data);
-
-       if (data != NULL) {
-               /* If the test failed do not print out the stats */
-               if (rc)
-                       goto out_data;
-
-               rc = copy_to_user((void *)(arg + offsetof(zpios_cmd_t,
-                   cmd_data_str)), data, kcmd->cmd_data_size);
-               if (rc) {
-                       zpios_print(file, "Unable to copy data buffer "
-                           "from kernel to user memory, %d\n", rc);
-                       rc = -EFAULT;
-               }
-
-out_data:
-               vmem_free(data, kcmd->cmd_data_size);
-       }
-out_cmd:
-       kmem_free(kcmd, sizeof (zpios_cmd_t));
-
-       return (rc);
-}
-
-static long
-zpios_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
-{
-       int rc = 0;
-
-       /* Ignore tty ioctls */
-       if ((cmd & 0xffffff00) == ((int)'T') << 8)
-               return (-ENOTTY);
-
-       switch (cmd) {
-               case ZPIOS_CFG:
-                       rc = zpios_ioctl_cfg(file, arg);
-                       break;
-               case ZPIOS_CMD:
-                       rc = zpios_ioctl_cmd(file, arg);
-                       break;
-               default:
-                       zpios_print(file, "Bad ioctl command %d\n", cmd);
-                       rc = -EINVAL;
-                       break;
-       }
-
-       return (rc);
-}
-
-#ifdef CONFIG_COMPAT
-/* Compatibility handler for ioctls from 32-bit ELF binaries */
-static long
-zpios_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
-{
-       return (zpios_unlocked_ioctl(file, cmd, arg));
-}
-#endif /* CONFIG_COMPAT */
-
-/*
- * I'm not sure why you would want to write in to this buffer from
- * user space since its principle use is to pass test status info
- * back to the user space, but I don't see any reason to prevent it.
- */
-static ssize_t
-zpios_write(struct file *file, const char __user *buf,
-    size_t count, loff_t *ppos)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-       int rc = 0;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       spin_lock(&info->info_lock);
-
-       /* Write beyond EOF */
-       if (*ppos >= info->info_size) {
-               rc = -EFBIG;
-               goto out;
-       }
-
-       /* Resize count if beyond EOF */
-       if (*ppos + count > info->info_size)
-               count = info->info_size - *ppos;
-
-       if (copy_from_user(info->info_buffer, buf, count)) {
-               rc = -EFAULT;
-               goto out;
-       }
-
-       *ppos += count;
-       rc = count;
-out:
-       spin_unlock(&info->info_lock);
-       return (rc);
-}
-
-static ssize_t
-zpios_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-       int rc = 0;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       spin_lock(&info->info_lock);
-
-       /* Read beyond EOF */
-       if (*ppos >= info->info_size)
-               goto out;
-
-       /* Resize count if beyond EOF */
-       if (*ppos + count > info->info_size)
-               count = info->info_size - *ppos;
-
-       if (copy_to_user(buf, info->info_buffer + *ppos, count)) {
-               rc = -EFAULT;
-               goto out;
-       }
-
-       *ppos += count;
-       rc = count;
-out:
-       spin_unlock(&info->info_lock);
-       return (rc);
-}
-
-static loff_t zpios_seek(struct file *file, loff_t offset, int origin)
-{
-       zpios_info_t *info = (zpios_info_t *)file->private_data;
-       int rc = -EINVAL;
-
-       ASSERT(info);
-       ASSERT(info->info_buffer);
-
-       spin_lock(&info->info_lock);
-
-       switch (origin) {
-       case 0: /* SEEK_SET - No-op just do it */
-               break;
-       case 1: /* SEEK_CUR - Seek from current */
-               offset = file->f_pos + offset;
-               break;
-       case 2: /* SEEK_END - Seek from end */
-               offset = info->info_size + offset;
-               break;
-       }
-
-       if (offset >= 0) {
-               file->f_pos = offset;
-               file->f_version = 0;
-               rc = offset;
-       }
-
-       spin_unlock(&info->info_lock);
-
-       return (rc);
-}
-
-static struct file_operations zpios_fops = {
-       .owner          = THIS_MODULE,
-       .open           = zpios_open,
-       .release        = zpios_release,
-       .unlocked_ioctl = zpios_unlocked_ioctl,
-#ifdef CONFIG_COMPAT
-       .compat_ioctl   = zpios_compat_ioctl,
-#endif
-       .read           = zpios_read,
-       .write          = zpios_write,
-       .llseek         = zpios_seek,
-};
-
-static struct miscdevice zpios_misc = {
-       .minor          = MISC_DYNAMIC_MINOR,
-       .name           = ZPIOS_NAME,
-       .fops           = &zpios_fops,
-};
-
-#ifdef DEBUG
-#define        ZFS_DEBUG_STR   " (DEBUG mode)"
-#else
-#define        ZFS_DEBUG_STR   ""
-#endif
-
-static int __init
-zpios_init(void)
-{
-       int error;
-
-       error = misc_register(&zpios_misc);
-       if (error) {
-               printk(KERN_INFO "ZPIOS: misc_register() failed %d\n", error);
-       } else {
-               printk(KERN_INFO "ZPIOS: Loaded module v%s-%s%s\n",
-                   ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR);
-       }
-
-       return (error);
-}
-
-static void __exit
-zpios_fini(void)
-{
-       misc_deregister(&zpios_misc);
-
-       printk(KERN_INFO "ZPIOS: Unloaded module v%s-%s%s\n",
-           ZFS_META_VERSION, ZFS_META_RELEASE, ZFS_DEBUG_STR);
-}
-
-module_init(zpios_init);
-module_exit(zpios_fini);
-
-MODULE_AUTHOR("LLNL / Sun");
-MODULE_DESCRIPTION("Kernel PIOS implementation");
-MODULE_LICENSE("GPL");
-MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
index 4518dc954d20f7a30e65fd335c9792cf8bde68f5..22882627bc6f066977a6dca639bf56d23a9b54d2 100644 (file)
@@ -37,7 +37,6 @@
 #define buildforkernels akmod
 
 %bcond_with     debug
-%bcond_with     debug_dmu_tx
 
 
 Name:           %{module}-kmod
@@ -117,12 +116,6 @@ bash %{SOURCE10}  --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{
     %define debug --disable-debug
 %endif
 
-%if %{with debug_dmu_tx}
-    %define debug_dmu_tx --enable-debug-dmu-tx
-%else
-    %define debug_dmu_tx --disable-debug-dmu-tx
-%endif
-
 #
 # Allow the overriding of spl locations
 #
@@ -163,8 +156,7 @@ for kernel_version in %{?kernel_versions}; do
         --with-linux-obj=%{kobj} \
         --with-spl="%{spldir}" \
         --with-spl-obj="%{splobj}" \
-        %{debug} \
-        %{debug_dmu_tx}
+        %{debug}
     make %{?_smp_mflags}
     cd ..
 done
index 26d5b605405866b6d2077241d1154622c5a1f463..aedd88eb4257af96d9a4db442afadd0fae3253a3 100644 (file)
@@ -1,5 +1,4 @@
 %bcond_with     debug
-%bcond_with     debug_dmu_tx
 
 Name:           @PACKAGE@-kmod
 Version:        @VERSION@
@@ -59,12 +58,6 @@ fi
 %define debug --disable-debug
 %endif
 
-%if %{with debug_dmu_tx}
-%define debug_dmu_tx --enable-debug-dmu-tx
-%else
-%define debug_dmu_tx --disable-debug-dmu-tx
-%endif
-
 %setup -n %{kmod_name}-%{version}
 %build
 %configure \
@@ -73,8 +66,7 @@ fi
         --with-linux-obj=%{kobj} \
         --with-spl="%{splsrc}" \
         --with-spl-obj="%{splobj}" \
-        %{debug} \
-        %{debug_dmu_tx}
+        %{debug}
 make %{?_smp_mflags}
 
 %install
index 74b8b31a50d9de1c9673b2de625d4c7689bc6978..7b2374a827e7e6200173f4dad7fd8f2716eff82e 100644 (file)
@@ -1,17 +1,67 @@
-SUBDIRS = zpool-config zpios-test zpios-profile
-
-EXTRA_DIST = dkms.mkconf dkms.postbuild kmodtool zfs2zol-patch.sed cstyle.pl
-
 pkgdatadir = $(datadir)/@PACKAGE@
+
 dist_pkgdata_SCRIPTS = \
-       $(top_builddir)/scripts/common.sh \
        $(top_srcdir)/scripts/zimport.sh \
        $(top_srcdir)/scripts/zfs.sh \
        $(top_srcdir)/scripts/zfs-tests.sh \
        $(top_srcdir)/scripts/zloop.sh \
-       $(top_srcdir)/scripts/zpool-create.sh \
-       $(top_srcdir)/scripts/zpios.sh \
-       $(top_srcdir)/scripts/zpios-sanity.sh \
-       $(top_srcdir)/scripts/zpios-survey.sh \
-       $(top_srcdir)/scripts/smb.sh \
        $(top_srcdir)/scripts/zfs-helpers.sh
+
+EXTRA_DIST = \
+       common.sh.in \
+       commitcheck.sh \
+       dkms.mkconf \
+       dkms.postbuild \
+       kmodtool \
+       paxcheck.sh \
+       zfs2zol-patch.sed \
+       cstyle.pl
+
+define EXTRA_ENVIRONMENT
+
+# Only required for in-tree use
+export INTREE="yes"
+export GDB="/usr/bin/libtool --mode=execute gdb"
+export LDMOD=/sbin/insmod
+
+export CMD_DIR=@abs_top_builddir@/cmd
+export UDEV_RULE_DIR=@abs_top_builddir@/udev/rules.d
+export ZEDLET_ETC_DIR=$$CMD_DIR/zed/zed.d
+export ZEDLET_LIBEXEC_DIR=$$CMD_DIR/zed/zed.d
+export ZPOOL_SCRIPT_DIR=$$CMD_DIR/zpool/zpool.d
+export ZPOOL_SCRIPTS_PATH=$$CMD_DIR/zpool/zpool.d
+
+export INSTALL_UDEV_DIR=@udevdir@
+export INSTALL_UDEV_RULE_DIR=@udevruledir@
+export INSTALL_MOUNT_HELPER_DIR=@mounthelperdir@
+export INSTALL_SYSCONF_DIR=@sysconfdir@
+
+export KMOD_SPL=@SPL_OBJ@/module/spl/spl.ko
+export KMOD_SPLAT=@SPL_OBJ@/module/splat/splat.ko
+export KMOD_ZAVL=@abs_top_builddir@/module/avl/zavl.ko
+export KMOD_ZNVPAIR=@abs_top_builddir@/module/nvpair/znvpair.ko
+export KMOD_ZUNICODE=@abs_top_builddir@/module/unicode/zunicode.ko
+export KMOD_ZCOMMON=@abs_top_builddir@/module/zcommon/zcommon.ko
+export KMOD_ICP=@abs_top_builddir@/module/icp/icp.ko
+export KMOD_ZFS=@abs_top_builddir@/module/zfs/zfs.ko
+endef
+
+export EXTRA_ENVIRONMENT
+
+all-local:
+       -$(SED) -e '\|^export BIN_DIR=|s|$$|@abs_top_builddir@/bin|' \
+               -e '\|^export SBIN_DIR=|s|$$|@abs_top_builddir@/bin|' \
+               -e '\|^export ZTS_DIR=|s|$$|@abs_top_srcdir@/tests|' \
+               -e '\|^export SCRIPT_DIR=|s|$$|@abs_top_srcdir@/scripts|' \
+               common.sh.in >common.sh
+       -echo "$$EXTRA_ENVIRONMENT" >>common.sh
+
+clean-local:
+       -$(RM) common.sh
+
+install-data-hook:
+       -$(SED) -e '\|^export BIN_DIR=|s|$$|@bindir@|' \
+               -e '\|^export SBIN_DIR=|s|$$|@sbindir@|' \
+               -e '\|^export ZTS_DIR=|s|$$|@datadir@/@PACKAGE@|' \
+               -e '\|^export SCRIPT_DIR=|s|$$|@datadir@/@PACKAGE@|' \
+               common.sh.in >$(DESTDIR)$(datadir)/@PACKAGE@/common.sh
index e1a9b82d299cb43b40da89ff0d3e520553fe9c71..134c9cbfd03ece0dd66fd60020881ae9ade1ec6b 100644 (file)
-#!/bin/bash
-#
-# Common support functions for testing scripts.  If a script-config
-# files is available it will be sourced so in-tree kernel modules and
-# utilities will be used.  If no script-config can be found then the
-# installed kernel modules and utilities will be used.
-
-basedir="$(dirname $0)"
-
-SCRIPT_CONFIG=zfs-script-config.sh
-if [ -f "${basedir}/../${SCRIPT_CONFIG}" ]; then
-. "${basedir}/../${SCRIPT_CONFIG}"
-else
-KERNEL_MODULES=(zlib_deflate zlib_inflate)
-MODULES=(spl splat zavl znvpair zunicode zcommon icp zfs)
-fi
-
-PROG="<define PROG>"
-CLEANUP=
-VERBOSE=
-VERBOSE_FLAG=
-FORCE=
-FORCE_FLAG=
-ERROR=
-RAID0S=()
-RAID10S=()
-RAIDZS=()
-RAIDZ2S=()
-TESTS_RUN=${TESTS_RUN:-'*'}
-TESTS_SKIP=${TESTS_SKIP:-}
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-pkgdatadir=@datarootdir@/@PACKAGE@
-bindir=@bindir@
-sbindir=@sbindir@
-udevdir=@udevdir@
-udevruledir=@udevruledir@
-mounthelperdir=@mounthelperdir@
-sysconfdir=@sysconfdir@
-localstatedir=@localstatedir@
-
-ETCDIR=${ETCDIR:-/etc}
-DEVDIR=${DEVDIR:-/dev/disk/by-vdev}
-ZPOOLDIR=${ZPOOLDIR:-${pkgdatadir}/zpool-config}
-ZPIOSDIR=${ZPIOSDIR:-${pkgdatadir}/zpios-test}
-ZPIOSPROFILEDIR=${ZPIOSPROFILEDIR:-${pkgdatadir}/zpios-profile}
-TESTSDIR=${TESTSDIR:-${pkgdatadir}/zfs-tests}
-RUNFILEDIR=${RUNFILEDIR:-${pkgdatadir}/runfiles}
-
-ZDB=${ZDB:-${sbindir}/zdb}
-ZFS=${ZFS:-${sbindir}/zfs}
-ZINJECT=${ZINJECT:-${sbindir}/zinject}
-ZHACK=${ZHACK:-${sbindir}/zhack}
-ZPOOL=${ZPOOL:-${sbindir}/zpool}
-ZTEST=${ZTEST:-${sbindir}/ztest}
-ZPIOS=${ZPIOS:-${sbindir}/zpios}
-
-COMMON_SH=${COMMON_SH:-${pkgdatadir}/common.sh}
-ZFS_SH=${ZFS_SH:-${pkgdatadir}/zfs.sh}
-ZPOOL_CREATE_SH=${ZPOOL_CREATE_SH:-${pkgdatadir}/zpool-create.sh}
-ZPIOS_SH=${ZPIOS_SH:-${pkgdatadir}/zpios.sh}
-ZPIOS_SURVEY_SH=${ZPIOS_SURVEY_SH:-${pkgdatadir}/zpios-survey.sh}
-TEST_RUNNER=${TEST_RUNNER:-${pkgdatadir}/test-runner/bin/test-runner.py}
-STF_TOOLS=${STF_TOOLS:-${pkgdatadir}/test-runner}
-STF_SUITE=${STF_SUITE:-${pkgdatadir}/zfs-tests}
-
-LDMOD=${LDMOD:-/sbin/modprobe}
-LSMOD=${LSMOD:-/sbin/lsmod}
-RMMOD=${RMMOD:-/sbin/rmmod}
-INFOMOD=${INFOMOD:-/sbin/modinfo}
-LOSETUP=${LOSETUP:-/sbin/losetup}
-MDADM=${MDADM:-/sbin/mdadm}
-DMSETUP=${DMSETUP:-/sbin/dmsetup}
-PARTED=${PARTED:-/sbin/parted}
-BLOCKDEV=${BLOCKDEV:-/sbin/blockdev}
-LSSCSI=${LSSCSI:-/usr/bin/lsscsi}
-SCSIRESCAN=${SCSIRESCAN:-/usr/bin/scsi-rescan}
-SYSCTL=${SYSCTL:-/sbin/sysctl}
-UDEVADM=${UDEVADM:-/sbin/udevadm}
-AWK=${AWK:-/usr/bin/awk}
-GDB=${GDB:-/usr/bin/gdb}
-
-ZED_PIDFILE=${ZED_PIDFILE:-${localstatedir}/run/zed.pid}
-
-COLOR_BLACK="\033[0;30m"
-COLOR_DK_GRAY="\033[1;30m"
-COLOR_BLUE="\033[0;34m"
-COLOR_LT_BLUE="\033[1;34m" 
-COLOR_GREEN="\033[0;32m"
-COLOR_LT_GREEN="\033[1;32m"
-COLOR_CYAN="\033[0;36m"
-COLOR_LT_CYAN="\033[1;36m"
-COLOR_RED="\033[0;31m"
-COLOR_LT_RED="\033[1;31m"
-COLOR_PURPLE="\033[0;35m"
-COLOR_LT_PURPLE="\033[1;35m"
-COLOR_BROWN="\033[0;33m"
-COLOR_YELLOW="\033[1;33m"
-COLOR_LT_GRAY="\033[0;37m"
-COLOR_WHITE="\033[1;37m"
-COLOR_RESET="\033[0m"
-
-die() {
-       echo -e "${PROG}: $1" >&2
-       exit 1
-}
-
-msg() {
-       if [ ${VERBOSE} ]; then
-               echo "$@"
-       fi
-}
-
-pass() {
-       echo -e "${COLOR_GREEN}Pass${COLOR_RESET}"
-}
-
-fail() {
-       echo -e "${COLOR_RED}Fail${COLOR_RESET} ($1)"
-       exit $1
-}
-
-skip() {
-       echo -e "${COLOR_BROWN}Skip${COLOR_RESET}"
-}
-
-populate() {
-       local ROOT=$1
-       local MAX_DIR_SIZE=$2
-       local MAX_FILE_SIZE=$3
-
-       mkdir -p $ROOT/{a,b,c,d,e,f,g}/{h,i}
-       DIRS=`find $ROOT`
-
-       for DIR in $DIRS; do
-               COUNT=$(($RANDOM % $MAX_DIR_SIZE))
-
-               for i in `seq $COUNT`; do
-                       FILE=`mktemp -p ${DIR}`
-                       SIZE=$(($RANDOM % $MAX_FILE_SIZE))
-                       dd if=/dev/urandom of=$FILE bs=1k count=$SIZE &>/dev/null
-               done
-       done
-
-       return 0
-}
-
-init() {
-       # Create a random directory tree of files and sub-directories to
-       # to act as a copy source for the various regression tests.
-       SRC_DIR=`mktemp -d -p /var/tmp/ zfs.src.XXXXXXXX`
-       trap "rm -Rf $SRC_DIR" INT TERM EXIT
-       populate $SRC_DIR 10 100
-}
-
-check_modules() {
-       local LOADED_MODULES=()
-       local MISSING_MODULES=()
-
-       for MOD in ${MODULES[*]}; do
-               local NAME=`basename $MOD .ko`
-
-               if ${LSMOD} | egrep -q "^${NAME}"; then
-                       LOADED_MODULES=(${NAME} ${LOADED_MODULES[*]})
-               fi
-
-               if [ ${INFOMOD} ${MOD} 2>/dev/null ]; then
-                       MISSING_MODULES=("\t${MOD}\n" ${MISSING_MODULES[*]})
-               fi
-       done
-
-       if [ ${#LOADED_MODULES[*]} -gt 0 ]; then
-               ERROR="Unload these modules with '${PROG} -u':\n"
-               ERROR="${ERROR}${LOADED_MODULES[*]}"
-               return 1
-       fi
-
-       if [ ${#MISSING_MODULES[*]} -gt 0 ]; then
-               ERROR="The following modules can not be found,"
-               ERROR="${ERROR} ensure your source trees are built:\n"
-               ERROR="${ERROR}${MISSING_MODULES[*]}"
-               return 1
-       fi
-
-       return 0
-}
-
-load_module() {
-       local NAME=`basename $1 .ko`
-
-       if [ ${VERBOSE} ]; then
-               echo "Loading ${NAME} ($@)"
-       fi
-
-       ${LDMOD} $* &>/dev/null
-       if [ $? -ne 0 ]; then
-               echo "Failed to load ${NAME} ($@)"
-               return 1
-       fi
-
-       return 0
-}
-
-load_modules() {
-       mkdir -p /etc/zfs
-
-       for MOD in ${KERNEL_MODULES[*]}; do
-               load_module ${MOD} >/dev/null
-       done
-
-       for MOD in ${MODULES[*]}; do
-               local NAME=`basename ${MOD} .ko`
-               local VALUE=
-
-               for OPT in "$@"; do
-                       OPT_NAME=`echo ${OPT} | cut -f1 -d'='`
-
-                       if [ ${NAME} = "${OPT_NAME}" ]; then
-                               VALUE=`echo ${OPT} | cut -f2- -d'='`
-                       fi
-               done
-
-               load_module ${MOD} ${VALUE} || return 1
-       done
-
-       if [ ${VERBOSE} ]; then
-               echo "Successfully loaded ZFS module stack"
-       fi
-
-       return 0
-}
-
-unload_module() {
-       local NAME=`basename $1 .ko`
-
-       if [ ${VERBOSE} ]; then
-               echo "Unloading ${NAME} ($@)"
-       fi
-
-       ${RMMOD} ${NAME} || ERROR="Failed to unload ${NAME}" return 1
-
-       return 0
-}
-
-unload_modules() {
-       local MODULES_REVERSE=( $(echo ${MODULES[@]} |
-               ${AWK} '{for (i=NF;i>=1;i--) printf $i" "} END{print ""}') )
-
-       for MOD in ${MODULES_REVERSE[*]}; do
-               local NAME=`basename ${MOD} .ko`
-               local USE_COUNT=`${LSMOD} |
-                               egrep "^${NAME} "| ${AWK} '{print $3}'`
-
-               if [ "${USE_COUNT}" = 0 ] ; then
-                       unload_module ${MOD} || return 1
-               fi
-       done
-
-       if [ ${VERBOSE} ]; then
-               echo "Successfully unloaded ZFS module stack"
-       fi
-
-       return 0
-}
-
-#
-# Check that the mdadm utilities are installed.
-#
-check_loop_utils() {
-        test -f ${LOSETUP} || die "${LOSETUP} utility must be installed"
-}
-
-
-#
-# Find and return an unused loop device.  A new /dev/loopN node will be
-# created if required.  The kernel loop driver will automatically register
-# the minor as long as it's less than /sys/module/loop/parameters/max_loop.
-#
-unused_loop_device() {
-       local DEVICE=$(${LOSETUP} -f)
-       local MAX_LOOP_PATH="/sys/module/loop/parameters/max_loop"
-       local MAX_LOOP;
-
-       # An existing /dev/loopN device was available.
-       if [ -n "${DEVICE}" ]; then
-               echo "${DEVICE}"
-               return 0
-       fi
-
-       # Create a new /dev/loopN provided we are not at MAX_LOOP.
-       if [ -f "${MAX_LOOP_PATH}" ]; then
-               MAX_LOOP=`cat /sys/module/loop/parameters/max_loop`
-               if [ ${MAX_LOOP} -eq 0 ]; then
-                       MAX_LOOP=255
-               fi
-
-               for (( i=0; i<=${MAX_LOOP}; i++ )); do
-                       DEVICE="/dev/loop$i"
-
-                       if [ -b "${DEVICE}" ]; then
-                               continue
-                       else
-                               mknod -m660 "${DEVICE}" b 7 $i
-                               chown root.disk "${DEVICE}"
-                               chmod 666 "${DEVICE}"
-
-                               echo "${DEVICE}"
-                               return 0
-                       fi
-               done
-       fi
-
-       die "Error: Unable to create new loopback device"
-}
-
-#
-# This can be slightly dangerous because the loop devices we are
-# cleaning up may not be ours.  However, if the devices are currently
-# in use we will not be able to remove them, and we only remove
-# devices which include 'zpool' or 'deleted' in the name.  So any
-# damage we might do should be limited to other zfs related testing.
-#
-cleanup_loop_devices() {
-       local TMP_FILE=`mktemp`
-
-       ${LOSETUP} -a | tr -d '()' >${TMP_FILE}
-       ${AWK} -F":" -v losetup="$LOSETUP" \
-           '/zpool/ || /deleted/ { system("losetup -d "$1) }' ${TMP_FILE}
-       ${AWK} -F" " '/zpool/ || /deleted/ { system("rm -f "$3) }' ${TMP_FILE}
-
-       rm -f ${TMP_FILE}
-}
-
-#
-# Destroy the passed loopback devices, this is used when you know
-# the names of the loopback devices.
-#
-destroy_loop_devices() {
-       local LODEVICES="$1"
-
-       msg "Destroying ${LODEVICES}"
-       ${LOSETUP} -d ${LODEVICES} || \
-               die "Error $? destroying ${FILE} -> ${DEVICE} loopback"
-
-       rm -f ${FILES}
-       return 0
-}
-
-#
-# Create a device label taking care to briefly wait if udev needs to settle.
-#
-label() {
-       local DEVICE=$1
-       local LABEL=$2
-
-       wait_udev ${DEVICE} 30 || return 1
-       ${PARTED} ${DEVICE} --script -- mklabel ${LABEL} || return 2
-
-       return 0
-}
-
-#
-# Create a primary partition on a block device.
-#
-partition() {
-       local DEVICE=$1
-       local TYPE=$2
-       local START=$3
-       local END=$4
-
-       ${PARTED} --align optimal ${DEVICE} --script -- \
-           mkpart ${TYPE} ${START} ${END} || return 1
-       udev_trigger
-
-       return 0
-}
-
-#
-# Create a filesystem on the block device
-#
-format() {
-       local DEVICE=$1
-       local FSTYPE=$2
-
-       # Force 4K blocksize, else mkfs.ext2 tries to use 8K, which
-       # won't mount
-       /sbin/mkfs.${FSTYPE} -b 4096 -F -q ${DEVICE} >/dev/null || return 1
-
-       return 0
-}
-
-#
-# Check that the mdadm utilities are installed.
-#
-check_md_utils() {
-        test -f ${MDADM} || die "${MDADM} utility must be installed"
-       test -f ${PARTED} || die "${PARTED} utility must be installed"
-}
-
-check_md_partitionable() {
-       local LOFILE=`mktemp -p /tmp zpool-lo.XXXXXXXX`
-       local LODEVICE=`unused_loop_device`
-       local MDDEVICE=`unused_md_device`
-       local RESULT=1
-
-       check_md_utils
-
-       rm -f ${LOFILE}
-       dd if=/dev/zero of=${LOFILE} bs=1M count=0 seek=16 \
-               &>/dev/null || return ${RESULT}
-
-       msg "Creating ${LODEVICE} using ${LOFILE}"
-       ${LOSETUP} ${LODEVICE} ${LOFILE}
-       if [ $? -ne 0 ]; then
-               rm -f ${LOFILE}
-               return ${RESULT}
-       fi
-
-       msg "Creating ${MDDEVICE} using ${LODEVICE}"
-       ${MDADM} --build ${MDDEVICE} --level=faulty \
-               --raid-devices=1 ${LODEVICE} &>/dev/null
-       if [ $? -ne 0 ]; then
-               destroy_loop_devices ${LODEVICE}
-               rm -f ${LOFILE}
-               return ${RESULT}
-       fi
-       wait_udev ${MDDEVICE} 30
-
-       ${BLOCKDEV} --rereadpt ${MDDEVICE} 2>/dev/null
-       RESULT=$?
-
-       destroy_md_devices ${MDDEVICE}
-       destroy_loop_devices ${LODEVICE}
-       rm -f ${LOFILE}
-
-       return ${RESULT}
-}
-
-#
-# Find and return an unused md device.
-#
-unused_md_device() {
-       for (( i=0; i<32; i++ )); do
-               MDDEVICE=md${i}
-
-               # Skip active devicesudo in /proc/mdstat.
-               grep -q "${MDDEVICE} " /proc/mdstat && continue
-
-               # Device doesn't exist, use it.
-               if [ ! -e $/dev/{MDDEVICE} ]; then
-                       echo /dev/${MDDEVICE}
-                       return
-               fi
-
-               # Device exists but may not be in use.
-               if [ -b /dev/${MDDEVICE} ]; then
-                       ${MDADM} --detail /dev/${MDDEVICE} &>/dev/null
-                       if [ $? -eq 1 ]; then
-                               echo /dev/${MDDEVICE}
-                               return
-                       fi
-               fi
-        done
-
-        die "Error: Unable to find unused md device"
-}
-
-#
-# This can be slightly dangerous because it is possible the md devices
-# we are cleaning up may not be ours.  However, if the devices are
-# currently in use we will not be able to remove them, and even if
-# we remove devices which were not out we do not zero the super block
-# so you should be able to reconstruct them.
-#
-cleanup_md_devices() {
-       destroy_md_devices "`ls /dev/md* 2>/dev/null | grep -v p`"
-       udev_trigger
-}
-
-#
-# Destroy the passed md devices, this is used when you know
-# the names of the md devices.
-#
-destroy_md_devices() {
-       local MDDEVICES="$1"
-
-       msg "Destroying ${MDDEVICES}"
-       for MDDEVICE in ${MDDEVICES}; do
-               ${MDADM} --stop ${MDDEVICE} &>/dev/null
-               ${MDADM} --remove ${MDDEVICE} &>/dev/null
-               ${MDADM} --detail ${MDDEVICE} &>/dev/null
-       done
-
-       return 0
-}
-
-#
-# Check that the scsi utilities are installed.
-#
-check_sd_utils() {
-       ${INFOMOD} scsi_debug &>/dev/null || die "scsi_debug module required"
-       test -f ${LSSCSI} || die "${LSSCSI} utility must be installed"
-}
-
-#
-# Rescan the scsi bus for scsi_debug devices.  It is preferable to use the
-# scsi-rescan tool if it is installed, but if it's not we can fall back to
-# removing and readding the device manually.  This rescan will only effect
-# the first scsi_debug device if scsi-rescan is missing.
-#
-scsi_rescan() {
-       local AWK_SCRIPT="/scsi_debug/ { print \$1; exit }"
-
-       if [ -f ${SCSIRESCAN} ]; then
-               ${SCSIRESCAN} --forcerescan --remove &>/dev/null
-       else
-               local SCSIID=`${LSSCSI} | ${AWK} "${AWK_SCRIPT}" | tr -d '[]'`
-               local SCSIHOST=`echo ${SCSIID} | cut -f1 -d':'`
-               echo 1 >"/sys/class/scsi_device/${SCSIID}/device/delete"
-               udev_trigger
-               echo "- - -" >/sys/class/scsi_host/host${SCSIHOST}/scan
-               udev_trigger
-       fi
-}
-
-#
-# Trigger udev and wait for it to settle.
-#
-udev_trigger() {
-       if [ -f ${UDEVADM} ]; then
-               ${UDEVADM} trigger --action=change --subsystem-match=block
-               ${UDEVADM} settle
-       else
-               /sbin/udevtrigger
-               /sbin/udevsettle
-       fi
-}
-
-#
-# The following udev helper functions assume that the provided
-# udev rules file will create a /dev/disk/by-vdev/<CHANNEL><RANK>
-# disk mapping.  In this mapping each CHANNEL is represented by
-# the letters a-z, and the RANK is represented by the numbers
-# 1-n.  A CHANNEL should identify a group of RANKS which are all
-# attached to a single controller, each RANK represents a disk.
-# This provides a simply mechanism to locate a specific drive
-# given a known hardware configuration.
-#
-udev_setup() {
-       local SRC_PATH=$1
-
-       # When running in tree manually construct symlinks in tree to
-       # the proper devices.  Symlinks are installed for all entries
-       # in the config file regardless of if that device actually
-       # exists.  When installed as a package udev can be relied on for
-       # this and it will only create links for devices which exist.
-       if [ ${INTREE} ]; then
-               PWD=`pwd`
-               mkdir -p ${DEVDIR}/
-               cd ${DEVDIR}/
-               ${AWK} '!/^#/ && /./ { system( \
-                       "ln -f -s /dev/disk/by-path/"$2" "$1";" \
-                       "ln -f -s /dev/disk/by-path/"$2"-part1 "$1"p1;" \
-                       "ln -f -s /dev/disk/by-path/"$2"-part9 "$1"p9;" \
-                       ) }' $SRC_PATH
-               cd ${PWD}
-       else
-               DST_FILE=`basename ${SRC_PATH} | cut -f1-2 -d'.'`
-               DST_PATH=/etc/zfs/${DST_FILE}
-
-               if [ -e ${DST_PATH} ]; then
-                       die "Error: Config ${DST_PATH} already exists"
-               fi
-
-               cp ${SRC_PATH} ${DST_PATH}
-               udev_trigger
-       fi
-
-       return 0
-}
-
-udev_cleanup() {
-       local SRC_PATH=$1
-
-       if [ ${INTREE} ]; then
-               PWD=`pwd`
-               cd ${DEVDIR}/
-               ${AWK} '!/^#/ && /./ { system( \
-                       "rm -f "$1" "$1"p1 "$1"p9") }' $SRC_PATH
-               cd ${PWD}
-       fi
-
-       return 0
-}
-
-udev_cr2d() {
-       local CHANNEL=`echo "obase=16; $1+96" | bc`
-       local RANK=$2
-
-       printf "\x${CHANNEL}${RANK}"
-}
-
-udev_raid0_setup() {
-       local RANKS=$1
-       local CHANNELS=$2
-       local IDX=0
-
-       RAID0S=()
-       for RANK in `seq 1 ${RANKS}`; do
-               for CHANNEL in `seq 1 ${CHANNELS}`; do
-                       DISK=`udev_cr2d ${CHANNEL} ${RANK}`
-                       RAID0S[${IDX}]="${DEVDIR}/${DISK}"
-                       let IDX=IDX+1
-               done
-       done
-
-       return 0
-}
-
-udev_raid10_setup() {
-       local RANKS=$1
-       local CHANNELS=$2
-       local IDX=0
-
-       RAID10S=()
-       for RANK in `seq 1 ${RANKS}`; do
-               for CHANNEL1 in `seq 1 2 ${CHANNELS}`; do
-                       let CHANNEL2=CHANNEL1+1
-                       DISK1=`udev_cr2d ${CHANNEL1} ${RANK}`
-                       DISK2=`udev_cr2d ${CHANNEL2} ${RANK}`
-                       GROUP="${DEVDIR}/${DISK1} ${DEVDIR}/${DISK2}"
-                       RAID10S[${IDX}]="mirror ${GROUP}"
-                       let IDX=IDX+1
-               done
-       done
-
-       return 0
-}
-
-udev_raidz_setup() {
-       local RANKS=$1
-       local CHANNELS=$2
-
-       RAIDZS=()
-       for RANK in `seq 1 ${RANKS}`; do
-               RAIDZ=("raidz")
-
-               for CHANNEL in `seq 1 ${CHANNELS}`; do
-                       DISK=`udev_cr2d ${CHANNEL} ${RANK}`
-                       RAIDZ[${CHANNEL}]="${DEVDIR}/${DISK}"
-               done
-
-               RAIDZS[${RANK}]="${RAIDZ[*]}"
-       done
-
-       return 0
-}
-
-udev_raidz2_setup() {
-       local RANKS=$1
-       local CHANNELS=$2
-
-       RAIDZ2S=()
-       for RANK in `seq 1 ${RANKS}`; do
-               RAIDZ2=("raidz2")
-
-               for CHANNEL in `seq 1 ${CHANNELS}`; do
-                       DISK=`udev_cr2d ${CHANNEL} ${RANK}`
-                       RAIDZ2[${CHANNEL}]="${DEVDIR}/${DISK}"
-               done
-
-               RAIDZ2S[${RANK}]="${RAIDZ2[*]}"
-       done
-
-       return 0
-}
-
-run_one_test() {
-       local TEST_NUM=$1
-       local TEST_NAME=$2
-
-       printf "%-4d %-34s " ${TEST_NUM} "${TEST_NAME}"
-       test_${TEST_NUM}
-}
-
-skip_one_test() {
-       local TEST_NUM=$1
-       local TEST_NAME=$2
-
-       printf "%-4d %-34s " ${TEST_NUM} "${TEST_NAME}"
-       skip
-}
-
-run_test() {
-       local TEST_NUM=$1
-       local TEST_NAME=$2
-
-       for i in ${TESTS_SKIP[@]}; do
-               if [[ $i == ${TEST_NUM} ]] ; then
-                       skip_one_test ${TEST_NUM} "${TEST_NAME}"
-                       return 0
-               fi
-       done
-
-       if [ "${TESTS_RUN[0]}" = "*" ]; then
-               run_one_test ${TEST_NUM} "${TEST_NAME}"
-       else
-               for i in ${TESTS_RUN[@]}; do
-                       if [[ $i == ${TEST_NUM} ]] ; then
-                               run_one_test ${TEST_NUM} "${TEST_NAME}"
-                               return 0
-                       fi
-               done
-
-               skip_one_test ${TEST_NUM} "${TEST_NAME}"
-       fi
-}
-
-wait_udev() {
-       local DEVICE=$1
-       local DELAY=$2
-       local COUNT=0
-
-       udev_trigger
-       while [ ! -e ${DEVICE} ]; do
-               if [ ${COUNT} -gt ${DELAY} ]; then
-                       return 1
-               fi
-
-               let COUNT=${COUNT}+1
-               sleep 1
-       done
-
-       return 0
-}
-
-stack_clear() {
-       local STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size
-       local STACK_TRACER_ENABLED=/proc/sys/kernel/stack_tracer_enabled
-
-       if [ -e $STACK_MAX_SIZE ]; then
-               echo 1 >$STACK_TRACER_ENABLED
-               echo 0 >$STACK_MAX_SIZE
-       fi
-}
-
-stack_check() {
-       local STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size
-       local STACK_TRACE=/sys/kernel/debug/tracing/stack_trace
-       local STACK_LIMIT=7000
-
-       if [ -e $STACK_MAX_SIZE ]; then
-               STACK_SIZE=`cat $STACK_MAX_SIZE`
-
-               if [ $STACK_SIZE -ge $STACK_LIMIT ]; then
-                       echo
-                       echo "Warning: max stack size $STACK_SIZE bytes"
-                       cat $STACK_TRACE
-               fi
-       fi
-}
-
-kill_zed() {
-        if [ -f $ZED_PIDFILE ]; then
-               kill $(cat $ZED_PIDFILE)
-        fi
-}
+#!/bin/sh
+
+# Directories
+export BIN_DIR=
+export SBIN_DIR=
+export ZTS_DIR=
+export SCRIPT_DIR=
+
+# General commands
+export ZDB=${ZDB:-$SBIN_DIR/zdb}
+export ZFS=${ZFS:-$SBIN_DIR/zfs}
+export ZPOOL=${ZPOOL:-$SBIN_DIR/zpool}
+export ZTEST=${ZTEST:-$SBIN_DIR/ztest}
+export ZFS_SH=${ZFS_SH:-$SCRIPT_DIR/zfs.sh}
+
+# Test Suite
+export RUNFILE_DIR=${RUNFILE_DIR:-$ZTS_DIR/runfiles}
+export TEST_RUNNER=${TEST_RUNNER:-$ZTS_DIR/test-runner/bin/test-runner.py}
+export STF_TOOLS=${STF_TOOLS:-$ZTS_DIR/test-runner}
+export STF_SUITE=${STF_SUITE:-$ZTS_DIR/zfs-tests}
index ad97f9bca659961ff6c5d82fc4ce25ef9e220904..c3c74910ba5be30f752cc543bc65b1c075999387 100755 (executable)
@@ -40,10 +40,6 @@ PRE_BUILD="configure
       then
         echo --enable-debug
       fi
-      if [[ \${ZFS_DKMS_ENABLE_DMU_TX,,} == @(y|yes) ]]
-      then
-        echo --enable-debug-dmu-tx
-      fi
     }
   )
 "
@@ -86,10 +82,7 @@ DEST_MODULE_LOCATION[3]="/extra/zcommon/zcommon"
 BUILT_MODULE_NAME[4]="zfs"
 BUILT_MODULE_LOCATION[4]="module/zfs/"
 DEST_MODULE_LOCATION[4]="/extra/zfs/zfs"
-BUILT_MODULE_NAME[5]="zpios"
-BUILT_MODULE_LOCATION[5]="module/zpios/"
-DEST_MODULE_LOCATION[5]="/extra/zpios/zpios"
-BUILT_MODULE_NAME[6]="icp"
-BUILT_MODULE_LOCATION[6]="module/icp/"
-DEST_MODULE_LOCATION[6]="/extra/icp/icp"
+BUILT_MODULE_NAME[5]="icp"
+BUILT_MODULE_LOCATION[5]="module/icp/"
+DEST_MODULE_LOCATION[5]="/extra/icp/icp"
 EOF
index 3cbc7c7ce6ebfb333565e647b76340dac2c7cc93..299c02d6ecbc372af6567c07c3bca8d7cdb5b45b 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 PROG=$0
 
@@ -19,6 +19,6 @@ if [ -z "${arch}" -o -z "${kver}" -o -z "${pkgname}" -o \
        exit 1
 fi
 
-cp ${tree}/${pkgname}/${pkgver}/build/zfs_config.h          \
-   ${tree}/${pkgname}/${pkgver}/build/module/Module.symvers \
-   ${tree}/${pkgname}/${pkgver}/${kver}/${arch}/
+cp "${tree}/${pkgname}/${pkgver}/build/zfs_config.h"          \
+   "${tree}/${pkgname}/${pkgver}/build/module/Module.symvers" \
+   "${tree}/${pkgname}/${pkgver}/${kver}/${arch}/"
diff --git a/scripts/smb.sh b/scripts/smb.sh
deleted file mode 100755 (executable)
index 7cf6c4b..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/bin/bash
-
-BASETANK="share"
-DATE=`date "+%Y%m%d"`
-
-TEST_SMBFS=0
-TEST_DESTROY=0
-
-if [ -z "$1" ]; then
-       echo "Usage: `basename $0` [unpack]<[smbfs][snapshot][all]>"
-       exit 1
-fi
-
-set_onoff() {
-       type="$1"
-       dataset="$2"
-       toggle="$3"
-
-       current=`zfs get -H $type -o value $dataset`
-       if [ "$current" != "$toggle" ]; then
-               run "zfs set $type=$toggle $dataset"
-       fi
-}
-
-check_exists() {
-       dataset="$1"
-
-       extra=""
-       [ -n "$2" ] && extra="$2"
-
-       zfs get all "$dataset" > /dev/null 2>&1
-       if [ $? != 0 ]; then
-               run "zfs create $extra $dataset"
-       fi
-}
-
-check_shares() {
-       if [ "$TEST_SMBFS" == "1" ]; then
-               echo "Shares:"
-               echo "=> usershare list:"
-               net usershare list
-               echo
-               echo "=> /etc/dfs/sharetab:"
-               cat /etc/dfs/sharetab
-               echo
-       fi
-
-       sleep 2
-}
-
-test_header() {
-       echo "TEST: $*"
-       echo "======================================"
-}
-
-run() {
-       cmd="$*"
-
-       echo "CMD: $cmd"
-       $cmd
-}
-
-# ---------
-# Needs more work...
-if echo "$*" | grep -qi "unpack"; then
-       zfs unmount -a
-       zfs unshare -a
-       run "zfs destroy -r $BASETANK/tests"
-
-       sh /etc/init.d/zfs stop
-
-#      for tid in `grep ^tid /proc/net/iet/volume | sed "s@.*:\([0-9].*\) name.*@\1@"`
-#      do
-#              ietadm --op delete --tid $tid
-#      done
-
-       set -e
-       rmmod `lsmod | grep ^z | grep -v zlib_deflate | sed 's@ .*@@'` spl zlib_deflate
-
-       pushd / > /dev/null
-       [ -f "tmp/zfs.tgz" ] && tar xzf tmp/zfs.tgz && rm tmp/zfs.tgz
-       [ -f "tmp/spl.tgz" ] && tar xzf tmp/spl.tgz && rm tmp/spl.tgz
-       popd > /dev/null
-
-       depmod -a
-
-       sh /etc/init.d/zfs start
-       set +e
-fi
-
-# ---------
-if echo "$*" | egrep -qi "smbfs|all"; then
-       check_exists $BASETANK/tests
-
-       TEST_SMBFS=1
-
-       test_header "Exists || Create"
-       str=
-       for volnr in 1 2 3; do
-               check_exists $BASETANK/tests/smbfs$volnr
-
-               str="$str $BASETANK/tests/smbfs$volnr"
-       done
-       run "zfs get sharesmb $str"
-
-       # Set sharesmb=on
-       test_header "Enable SMB share"
-       for volnr in 1 2 3; do
-           set_onoff sharesmb "$BASETANK/tests/smbfs$volnr" on
-           check_shares
-       done
-
-       # Share all
-       test_header "Share all (individually)"
-       for volnr in 1 2 3; do
-           run "zfs share $BASETANK/tests/smbfs$volnr"
-           check_shares
-       done
-
-       # Unshare all
-       test_header "Unshare all (individually)"
-       for volnr in 1 2 3; do
-           run "zfs unshare $BASETANK/tests/smbfs$volnr"
-           check_shares
-       done
-
-       # Change mountpoint - first unshare and then share individual
-       test_header "Change mount point (unshare ; share)"
-       mkdir -p /tests
-       set_onoff sharesmb "$str" off
-       for volnr in 3 1 2; do
-               run "zfs set mountpoint=/tests/smbfs$volnr $BASETANK/tests/smbfs$volnr"
-               echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr"
-               mount | grep ^$BASETANK/tests/smbfs$volnr
-               echo
-
-               run "zfs mount $BASETANK/tests/smbfs$volnr"
-               echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr"
-               mount | grep ^$BASETANK/tests/smbfs$volnr
-               echo
-
-               set_onoff sharesmb "$BASETANK/tests/smbfs$volnr" on
-               check_shares
-
-               run "zfs share $BASETANK/tests/smbfs$volnr"
-               check_shares
-
-               echo "-------------------"
-       done
-
-       # Change mountpoint - remounting
-       test_header "Change mount point (remounting)"
-       for volnr in 3 1 2; do
-               run "zfs set mountpoint=/$BASETANK/tests/smbfs$volnr $BASETANK/tests/smbfs$volnr"
-               echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr"
-               mount | grep ^$BASETANK/tests/smbfs$volnr
-               echo
-               # => Doesn't seem to remount (!?)
-
-               run "zfs mount $BASETANK/tests/smbfs$volnr"
-               echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr"
-               mount | grep ^$BASETANK/tests/smbfs$volnr
-               echo
-               # => Doesn't seem to reshare (!?)
-
-               check_shares
-
-               run "zfs share $BASETANK/tests/smbfs$volnr"
-               check_shares
-
-               echo "-------------------"
-       done
-fi
-
-# ---------
-if echo "$*" | egrep -qi "smbfs|all"; then
-       test_header "Unshare + Share all"
-
-       run "zfs share -a" ; check_shares
-       run "zfs unshare -a" ; check_shares
-fi
-
-# ---------
-if echo "$*" | grep -qi "snapshot|all"; then
-       test_header "Snapshots"
-
-       echo ; echo "-------------------"
-       check_exists $BASETANK/tests/destroy
-       check_exists $BASETANK/tests/destroy/destroy1
-       run "zfs destroy -r $BASETANK/tests/destroy"
-
-       echo ; echo "-------------------"
-       check_exists $BASETANK/tests/destroy
-       run "zfs snapshot $BASETANK/tests/destroy@$DATE"
-       run "zfs destroy -r $BASETANK/tests/destroy"
-
-       echo ; echo "-------------------"
-       check_exists $BASETANK/tests/destroy
-       run "zfs snapshot $BASETANK/tests/destroy@$DATE"
-       run "zfs destroy -r $BASETANK/tests/destroy@$DATE"
-       run "zfs destroy -r $BASETANK/tests/destroy"
-fi
-
-if echo "$*" | egrep -qi "smbfs|snapshot|all"; then
-       test_header "Cleanup (Share all + Destroy all)"
-
-       run "zfs share -a"
-       check_shares
-
-       run "zfs destroy -r $BASETANK/tests"
-       check_shares
-
-       run "zfs list"
-fi
index d2da575f483dfd28ec9d94f73e819a811d1f2542..3fbe64a52703e1b91271bdd98222ead2321d4dd4 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #
 # This script is designed to facilitate in-tree development and testing
 # by installing symlinks on your system which refer to in-tree helper
 #   --sysconfdir=DIR           install zfs configuration files [PREFIX/etc]
 #
 
-basedir="$(dirname $0)"
-
+BASE_DIR=$(dirname "$0")
 SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
+if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then
+       . "${BASE_DIR}/${SCRIPT_COMMON}"
 else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
+       echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
 fi
 
 PROG=zfs-helpers.sh
-DRYRUN=
-INSTALL=
-REMOVE=
-VERBOSE=
+DRYRUN="no"
+INSTALL="no"
+REMOVE="no"
+VERBOSE="no"
+
+fail() {
+       echo "${PROG}: $1" >&2
+       exit 1
+}
+
+msg() {
+       if [ "$VERBOSE" = "yes" ]; then
+               echo "$@"
+       fi
+}
 
 usage() {
 cat << EOF
@@ -60,16 +70,16 @@ while getopts 'hdirv' OPTION; do
                exit 1
                ;;
        d)
-               DRYRUN=1
+               DRYRUN="yes"
                ;;
        i)
-               INSTALL=1
+               INSTALL="yes"
                ;;
        r)
-               REMOVE=1
+               REMOVE="yes"
                ;;
        v)
-               VERBOSE=1
+               VERBOSE="yes"
                ;;
        ?)
                usage
@@ -78,27 +88,29 @@ while getopts 'hdirv' OPTION; do
        esac
 done
 
-if [ "${INSTALL}" -a "${REMOVE}" ]; then
-       usage
-       die "Specify -i or -r but not both"
+if [ "$INSTALL" = "yes" -a "$REMOVE" = "yes" ]; then
+       fail "Specify -i or -r but not both"
+fi
+
+if [ "$INSTALL" = "no" -a "$REMOVE" = "no" ]; then
+       fail "Either -i or -r must be specified"
 fi
 
-if [ ! "${INSTALL}" -a ! "${REMOVE}" ]; then
-       usage
-       die "Either -i or -r must be specified"
+if [ "$(id -u)" != "0" ]; then
+       fail "Must run as root"
 fi
 
-if [ $(id -u) != 0 ]; then
-       die "Must run as root"
+if [ "$INTREE" != "yes" ]; then
+       fail "Must be run in-tree"
 fi
 
-if [ "$VERBOSE" ]; then
+if [ "$VERBOSE" = "yes" ]; then
        echo "--- Configuration ---"
-       echo "udevdir:          $udevdir"
-       echo "udevruledir:      $udevruledir"
-       echo "mounthelperdir:   $mounthelperdir"
-       echo "sysconfdir:       $sysconfdir"
-       echo "DRYRUN:           $DRYRUN"
+       echo "udevdir:          $INSTALL_UDEV_DIR"
+       echo "udevruledir:      $INSTALL_UDEV_RULE_DIR"
+       echo "mounthelperdir:   $INSTALL_MOUNT_HELPER_DIR"
+       echo "sysconfdir:       $INSTALL_SYSCONF_DIR"
+       echo "dryrun:           $DRYRUN"
        echo
 fi
 
@@ -106,18 +118,19 @@ install() {
        local src=$1
        local dst=$2
 
-       if [ -h $dst ]; then
+       if [ -h "$dst" ]; then
                echo "Symlink exists: $dst"
-       elif [ -e $dst ]; then
+       elif [ -e "$dst" ]; then
                echo "File exists: $dst"
-       elif [ ! -e $src ]; then
+       elif [ ! -e "$src" ]; then
                echo "Source missing: $src"
        else
                msg "ln -s $src $dst"
 
-               if [ ! "$DRYRUN" ]; then
-                       mkdir -p $(dirname $dst) &>/dev/null
-                       ln -s $src $dst
+               if [ "$DRYRUN" = "no" ]; then
+                       DIR=$(dirname "$dst")
+                       mkdir -p "$DIR" >/dev/null 2>&1
+                       ln -s "$src" "$dst"
                fi
        fi
 }
@@ -125,31 +138,42 @@ install() {
 remove() {
        local dst=$1
 
-       if [ -h $dst ]; then
+       if [ -h "$dst" ]; then
                msg "rm $dst"
-               rm $dst
-               rmdir $(dirname $dst) &>/dev/null
+               rm "$dst"
+               DIR=$(dirname "$dst")
+               rmdir "$DIR" >/dev/null 2>&1
+       elif [ -e "$dst" ]; then
+               echo "Expected symlink: $dst"
        fi
 }
 
-if [ ${INSTALL} ]; then
-       install $CMDDIR/mount_zfs/mount.zfs $mounthelperdir/mount.zfs
-       install $CMDDIR/fsck_zfs/fsck.zfs $mounthelperdir/fsck.zfs
-       install $CMDDIR/zvol_id/zvol_id $udevdir/zvol_id
-       install $CMDDIR/vdev_id/vdev_id $udevdir/vdev_id
-       install $UDEVRULEDIR/60-zvol.rules $udevruledir/60-zvol.rules
-       install $UDEVRULEDIR/69-vdev.rules $udevruledir/69-vdev.rules
-       install $UDEVRULEDIR/90-zfs.rules $udevruledir/90-zfs.rules
-       install $CMDDIR/zpool/zpool.d $sysconfdir/zfs/zpool.d
+if [ "${INSTALL}" = "yes" ]; then
+       install "$CMD_DIR/mount_zfs/mount.zfs" \
+           "$INSTALL_MOUNT_HELPER_DIR/mount.zfs"
+       install "$CMD_DIR/fsck_zfs/fsck.zfs" \
+           "$INSTALL_MOUNT_HELPER_DIR/fsck.zfs"
+       install "$CMD_DIR/zvol_id/zvol_id" \
+           "$INSTALL_UDEV_DIR/zvol_id"
+       install "$CMD_DIR/vdev_id/vdev_id" \
+           "$INSTALL_UDEV_DIR/vdev_id"
+       install "$UDEV_RULE_DIR/60-zvol.rules" \
+           "$INSTALL_UDEV_RULE_DIR/60-zvol.rules"
+       install "$UDEV_RULE_DIR/69-vdev.rules" \
+           "$INSTALL_UDEV_RULE_DIR/69-vdev.rules"
+       install "$UDEV_RULE_DIR/90-zfs.rules" \
+           "$INSTALL_UDEV_RULE_DIR/90-zfs.rules"
+       install "$CMD_DIR/zpool/zpool.d" \
+           "$INSTALL_SYSCONF_DIR/zfs/zpool.d"
 else
-       remove $mounthelperdir/mount.zfs
-       remove $mounthelperdir/fsck.zfs
-       remove $udevdir/zvol_id
-       remove $udevdir/vdev_id
-       remove $udevruledir/60-zvol.rules
-       remove $udevruledir/69-vdev.rules
-       remove $udevruledir/90-zfs.rules
-       remove $sysconfdir/zfs/zpool.d
+       remove "$INSTALL_MOUNT_HELPER_DIR/mount.zfs"
+       remove "$INSTALL_MOUNT_HELPER_DIR/fsck.zfs"
+       remove "$INSTALL_UDEV_DIR/zvol_id"
+       remove "$INSTALL_UDEV_DIR/vdev_id"
+       remove "$INSTALL_UDEV_RULE_DIR/60-zvol.rules"
+       remove "$INSTALL_UDEV_RULE_DIR/69-vdev.rules"
+       remove "$INSTALL_UDEV_RULE_DIR/90-zfs.rules"
+       remove "$INSTALL_SYSCONF_DIR/zfs/zpool.d"
 fi
 
 exit 0
index eb2ce38288f5077a706a8c9102eaae003e6052c5..94dd9a5b252e3f322d372eced646b768491d9c51 100755 (executable)
 #
 # CDDL HEADER END
 #
-basedir=$(dirname "$0")
 
+BASE_DIR=$(dirname "$0")
 SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
+if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then
+. "${BASE_DIR}/${SCRIPT_COMMON}"
 else
 echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
 fi
 
 PROG=zfs-tests.sh
-VERBOSE=
+VERBOSE="no"
 QUIET=
-CLEANUP=1
-CLEANUPALL=0
-LOOPBACK=1
+CLEANUP="yes"
+CLEANUPALL="no"
+LOOPBACK="yes"
 FILESIZE="4G"
 RUNFILE=${RUNFILE:-"linux.run"}
 FILEDIR=${FILEDIR:-/var/tmp}
@@ -45,6 +45,26 @@ ZFS_DBGMSG="$STF_SUITE/callbacks/zfs_dbgmsg.ksh"
 ZFS_DMESG="$STF_SUITE/callbacks/zfs_dmesg.ksh"
 ZFS_MMP="$STF_SUITE/callbacks/zfs_mmp.ksh"
 TESTFAIL_CALLBACKS=${TESTFAIL_CALLBACKS:-"$ZFS_DBGMSG:$ZFS_DMESG:$ZFS_MMP"}
+LOSETUP=${LOSETUP:-/sbin/losetup}
+DMSETUP=${DMSETUP:-/sbin/dmsetup}
+
+#
+# Log an informational message when additional verbosity is enabled.
+#
+msg() {
+       if [ "$VERBOSE" = "yes" ]; then
+               echo "$@"
+       fi
+}
+
+#
+# Log a failure message, cleanup, and return an error.
+#
+fail() {
+        echo -e "$PROG: $1" >&2
+       cleanup
+       exit 1
+}
 
 #
 # Attempt to remove loopback devices and files which where created earlier
@@ -52,11 +72,11 @@ TESTFAIL_CALLBACKS=${TESTFAIL_CALLBACKS:-"$ZFS_DBGMSG:$ZFS_DMESG:$ZFS_MMP"}
 # to the script to suppress cleanup for debugging purposes.
 #
 cleanup() {
-       if [ $CLEANUP -eq 0 ]; then
+       if [ "$CLEANUP" = "no" ]; then
                return 0
        fi
 
-       if [ $LOOPBACK -eq 1 ]; then
+       if [ "$LOOPBACK" = "yes" ]; then
                for TEST_LOOPBACK in ${LOOPBACKS}; do
                        LOOP_DEV=$(basename "$TEST_LOOPBACK")
                        DM_DEV=$(sudo "${DMSETUP}" ls 2>/dev/null | \
@@ -78,8 +98,7 @@ cleanup() {
                rm -f "${TEST_FILE}" &>/dev/null
        done
 
-       # Preserve in-tree symlinks to aid debugging.
-       if [ -z "${INTREE}" ] && [ -d "$STF_PATH" ]; then
+       if [ "$STF_PATH_REMOVE" = "yes" ] && [ -d "$STF_PATH" ]; then
                rm -Rf "$STF_PATH"
        fi
 }
@@ -121,21 +140,12 @@ cleanup_all() {
        done
 }
 
-#
-# Log a failure message, cleanup, and return an error.
-#
-fail() {
-        echo -e "${PROG}: $1" >&2
-       cleanup
-       exit 1
-}
-
 #
 # Takes a name as the only arguments and looks for the following variations
 # on that name.  If one is found it is returned.
 #
-# $RUNFILEDIR/<name>
-# $RUNFILEDIR/<name>.run
+# $RUNFILE_DIR/<name>
+# $RUNFILE_DIR/<name>.run
 # <name>
 # <name>.run
 #
@@ -143,10 +153,10 @@ find_runfile() {
        local NAME=$1
        local RESULT=""
 
-       if [ -f "$RUNFILEDIR/$NAME" ]; then
-               RESULT="$RUNFILEDIR/$NAME"
-       elif [ -f "$RUNFILEDIR/$NAME.run" ]; then
-               RESULT="$RUNFILEDIR/$NAME.run"
+       if [ -f "$RUNFILE_DIR/$NAME" ]; then
+               RESULT="$RUNFILE_DIR/$NAME"
+       elif [ -f "$RUNFILE_DIR/$NAME.run" ]; then
+               RESULT="$RUNFILE_DIR/$NAME.run"
        elif [ -f "$NAME" ]; then
                RESULT="$NAME"
        elif [ -f "$NAME.run" ]; then
@@ -188,40 +198,44 @@ create_links() {
 constrain_path() {
        . "$STF_SUITE/include/commands.cfg"
 
-       if [ -n "${INTREE}" ]; then
-               STF_PATH="$BUILDDIR/bin"
+       if [ "$INTREE" = "yes" ]; then
+               # Constrained path set to ./zfs/bin/
+               STF_PATH="$BIN_DIR"
+               STF_PATH_REMOVE="no"
+               STF_MISSING_BIN=""
                if [ ! -d "$STF_PATH" ]; then
                        mkdir "$STF_PATH"
+                       chmod 755 "$STF_PATH" || fail "Couldn't chmod $STF_PATH"
                fi
+
+               # Special case links for standard zfs utilities
+               DIRS="$(find "$CMD_DIR" -type d \( ! -name .deps -a \
+                   ! -name .libs \) -print | tr '\n' ' ')"
+               create_links "$DIRS" "$ZFS_FILES"
+
+               # Special case links for zfs test suite utilities
+               DIRS="$(find "$STF_SUITE" -type d \( ! -name .deps -a \
+                   ! -name .libs \) -print | tr '\n' ' ')"
+               create_links "$DIRS" "$ZFSTEST_FILES"
        else
+               # Constrained path set to /var/tmp/constrained_path.*
                SYSTEMDIR=${SYSTEMDIR:-/var/tmp/constrained_path.XXXX}
                STF_PATH=$(/bin/mktemp -d "$SYSTEMDIR")
-       fi
+               STF_PATH_REMOVE="yes"
+               STF_MISSING_BIN=""
 
-       STF_MISSING_BIN=""
-       chmod 755 "$STF_PATH" || fail "Couldn't chmod $STF_PATH"
+               chmod 755 "$STF_PATH" || fail "Couldn't chmod $STF_PATH"
 
-       # Standard system utilities
-       create_links "/bin /usr/bin /sbin /usr/sbin" "$SYSTEM_FILES"
-
-       if [ -z "${INTREE}" ]; then
                # Special case links for standard zfs utilities
                create_links "/bin /usr/bin /sbin /usr/sbin" "$ZFS_FILES"
 
-               # Special case links for zfs test suite utilties
-               create_links "$TESTSDIR/bin" "$ZFSTEST_FILES"
-       else
-               # Special case links for standard zfs utilities
-               DIRS="$(find "$CMDDIR" -type d \( ! -name .deps -a \
-                   ! -name .libs \) -print | tr '\n' ' ')"
-               create_links "$DIRS" "$ZFS_FILES"
-
-               # Special case links for zfs test suite utilties
-               DIRS="$(find "$TESTSDIR" -type d \( ! -name .deps -a \
-                   ! -name .libs \) -print | tr '\n' ' ')"
-               create_links "$DIRS" "$ZFSTEST_FILES"
+               # Special case links for zfs test suite utilities
+               create_links "$STF_SUITE/bin" "$ZFSTEST_FILES"
        fi
 
+       # Standard system utilities
+       create_links "/bin /usr/bin /sbin /usr/sbin" "$SYSTEM_FILES"
+
        # Exceptions
        ln -fs "$STF_PATH/awk" "$STF_PATH/nawk"
        ln -fs /sbin/fsck.ext2 "$STF_PATH/fsck"
@@ -250,6 +264,7 @@ OPTIONS:
        -x          Remove all testpools, dm, lo, and files (unsafe)
        -k          Disable cleanup after test failure
        -f          Use files only, disables block device tests
+       -c          Only create and populate constrained path
        -d DIR      Use DIR for files and loopback devices
        -s SIZE     Use vdevs of SIZE (default: 4G)
        -r RUNFILE  Run tests in RUNFILE (default: linux.run)
@@ -270,7 +285,7 @@ $0 -x
 EOF
 }
 
-while getopts 'hvqxkfd:s:r:?t:u:' OPTION; do
+while getopts 'hvqxkfcd:s:r:?t:u:' OPTION; do
        case $OPTION in
        h)
                usage
@@ -278,19 +293,23 @@ while getopts 'hvqxkfd:s:r:?t:u:' OPTION; do
                ;;
        v)
                # shellcheck disable=SC2034
-               VERBOSE=1
+               VERBOSE="yes"
                ;;
        q)
                QUIET="-q"
                ;;
        x)
-               CLEANUPALL=1
+               CLEANUPALL="yes"
                ;;
        k)
-               CLEANUP=0
+               CLEANUP="no"
                ;;
        f)
-               LOOPBACK=0
+               LOOPBACK="no"
+               ;;
+       c)
+               constrain_path
+               exit
                ;;
        d)
                FILEDIR="$OPTARG"
@@ -323,7 +342,7 @@ FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"}
 LOOPBACKS=${LOOPBACKS:-""}
 
 if [ ${#SINGLETEST[@]} -ne 0 ]; then
-       RUNFILEDIR="/var/tmp"
+       RUNFILE_DIR="/var/tmp"
        RUNFILE="zfs-tests.$$.run"
        SINGLEQUIET="False"
 
@@ -331,7 +350,7 @@ if [ ${#SINGLETEST[@]} -ne 0 ]; then
                SINGLEQUIET="True"
        fi
 
-       cat >$RUNFILEDIR/$RUNFILE << EOF
+       cat >$RUNFILE_DIR/$RUNFILE << EOF
 [DEFAULT]
 pre =
 quiet = $SINGLEQUIET
@@ -357,7 +376,7 @@ EOF
                        CLEANUPSCRIPT="cleanup"
                fi
 
-               cat >>$RUNFILEDIR/$RUNFILE << EOF
+               cat >>$RUNFILE_DIR/$RUNFILE << EOF
 
 [$SINGLETESTDIR]
 tests = ['$SINGLETESTFILE']
@@ -394,7 +413,7 @@ if [ "$(sudo whoami)" != "root" ]; then
 fi
 
 #
-# Constain the available binaries to a known set.
+# Constrain the available binaries to a known set.
 #
 constrain_path
 
@@ -406,14 +425,14 @@ constrain_path
     "Missing $STF_SUITE/include/default.cfg file."
 
 #
-# Verify the ZFS module stack if loaded.
+# Verify the ZFS module stack is loaded.
 #
 sudo "${ZFS_SH}" &>/dev/null
 
 #
 # Attempt to cleanup all previous state for a new test run.
 #
-if [ $CLEANUPALL -ne 0 ]; then
+if [ "$CLEANUPALL" = "yes" ]; then
        cleanup_all
 fi
 
@@ -457,9 +476,10 @@ if [ -z "${DISKS}" ]; then
        #
        # If requested setup loopback devices backed by the sparse files.
        #
-       if [ $LOOPBACK -eq 1 ]; then
+       if [ "$LOOPBACK" = "yes" ]; then
                DISKS=""
-               check_loop_utils
+
+               test -x "$LOSETUP" || fail "$LOSETUP utility must be installed"
 
                for TEST_FILE in ${FILES}; do
                        TEST_LOOPBACK=$(sudo "${LOSETUP}" -f)
@@ -472,7 +492,7 @@ if [ -z "${DISKS}" ]; then
        fi
 fi
 
-NUM_DISKS=$(echo "${DISKS}" | $AWK '{print NF}')
+NUM_DISKS=$(echo "${DISKS}" | awk '{print NF}')
 [ "$NUM_DISKS" -lt 3 ] && fail "Not enough disks ($NUM_DISKS/3 minimum)"
 
 #
index 2ffcf40da5ef8ba6fca18a9bcc45d303f79cf13c..63c3a57d01bca895f99f14b1b4ebb05059bfb071 100755 (executable)
@@ -1,19 +1,34 @@
-#!/bin/bash
+#!/bin/sh
+#
+# A simple script to load/unload the ZFS module stack.
 #
-# A simple script to simply the loading/unloading the ZFS module stack.
-
-basedir=$(dirname "$0")
 
+BASE_DIR=$(dirname "$0")
 SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
+if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then
+       . "${BASE_DIR}/${SCRIPT_COMMON}"
 else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
+       echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
 fi
 
-# shellcheck disable=SC2034
 PROG=zfs.sh
-UNLOAD=
+VERBOSE="no"
+UNLOAD="no"
+
+ZED_PIDFILE=${ZED_PIDFILE:-/var/run/zed.pid}
+LDMOD=${LDMOD:-/sbin/modprobe}
+
+KMOD_ZLIB_DEFLATE=${KMOD_ZLIB_DEFLATE:-zlib_deflate}
+KMOD_ZLIB_INFLATE=${KMOD_ZLIB_INFLATE:-zlib_inflate}
+KMOD_SPL=${KMOD_SPL:-spl}
+KMOD_SPLAT=${KMOD_SPLAT:-splat}
+KMOD_ZAVL=${KMOD_ZAVL:-zavl}
+KMOD_ZNVPAIR=${KMOD_ZNVPAIR:-znvpair}
+KMOD_ZUNICODE=${KMOD_ZUNICODE:-zunicode}
+KMOD_ZCOMMON=${KMOD_ZCOMMON:-zcommon}
+KMOD_ICP=${KMOD_ICP:-icp}
+KMOD_ZFS=${KMOD_ZFS:-zfs}
+
 
 usage() {
 cat << EOF
@@ -27,13 +42,6 @@ OPTIONS:
        -h      Show this message
        -v      Verbose
        -u      Unload modules
-
-MODULE-OPTIONS:
-       Must be of the from module="options", for example:
-
-$0 zfs="zfs_prefetch_disable=1"
-$0 zfs="zfs_prefetch_disable=1 zfs_mdcomp_disable=1"
-
 EOF
 }
 
@@ -44,11 +52,10 @@ while getopts 'hvu' OPTION; do
                exit 1
                ;;
        v)
-               # shellcheck disable=SC2034
-               VERBOSE=1
+               VERBOSE="yes"
                ;;
        u)
-               UNLOAD=1
+               UNLOAD="yes"
                ;;
        ?)
                usage
@@ -57,20 +64,158 @@ while getopts 'hvu' OPTION; do
        esac
 done
 
+kill_zed() {
+       if [ -f "$ZED_PIDFILE" ]; then
+               PID=$(cat "$ZED_PIDFILE")
+               kill "$PID"
+       fi
+}
+
+check_modules() {
+       local LOADED_MODULES=""
+       local MISSING_MODULES=""
+
+       for KMOD in $KMOD_SPL $KMOD_SPLAT $KMOD_ZAVL $KMOD_ZNVPAIR \
+           $KMOD_ZUNICODE $KMOD_ZCOMMON $KMOD_ICP $KMOD_ZFS; do
+               NAME=$(basename "$KMOD" .ko)
+
+               if lsmod | egrep -q "^${NAME}"; then
+                       LOADED_MODULES="$LOADED_MODULES\t$NAME\n"
+               fi
+
+               if ! modinfo "$KMOD" >/dev/null 2>&1; then
+                       MISSING_MODULES="$MISSING_MODULES\t${KMOD}\n"
+               fi
+       done
+
+       if [ -n "$LOADED_MODULES" ]; then
+               printf "Unload the kernel modules by running '%s -u':\n" "$PROG"
+               printf "%b" "$LOADED_MODULES"
+               exit 1
+       fi
+
+       if [ -n "$MISSING_MODULES" ]; then
+               printf "The following kernel modules can not be found:\n"
+               printf "%b" "$MISSING_MODULES"
+               exit 1
+       fi
+
+       return 0
+}
+
+load_module() {
+       local KMOD=$1
+
+       FILE=$(modinfo "$KMOD" | awk '/^filename:/ {print $2}')
+       VERSION=$(modinfo "$KMOD" | awk '/^version:/ {print $2}')
+
+       if [ "$VERBOSE" = "yes" ]; then
+               echo "Loading: $FILE ($VERSION)"
+       fi
+
+       $LDMOD "$KMOD" >/dev/null 2>&1
+       if [ $? -ne 0 ]; then
+               echo "Failed to load $KMOD"
+               return 1
+       fi
+
+       return 0
+}
+
+load_modules() {
+       mkdir -p /etc/zfs
+
+       modprobe "$KMOD_ZLIB_DEFLATE" >/dev/null
+       modprobe "$KMOD_ZLIB_INFLATE" >/dev/null
+
+       for KMOD in $KMOD_SPL $KMOD_SPLAT $KMOD_ZAVL $KMOD_ZNVPAIR \
+           $KMOD_ZUNICODE $KMOD_ZCOMMON $KMOD_ICP $KMOD_ZFS; do
+               load_module "$KMOD" || return 1
+       done
+
+       if [ "$VERBOSE" = "yes" ]; then
+               echo "Successfully loaded ZFS module stack"
+       fi
+
+       return 0
+}
+
+unload_module() {
+       local KMOD=$1
+
+       NAME=$(basename "$KMOD" .ko)
+       FILE=$(modinfo "$KMOD" | awk '/^filename:/ {print $2}')
+       VERSION=$(modinfo "$KMOD" | awk '/^version:/ {print $2}')
+
+       if [ "$VERBOSE" = "yes" ]; then
+               echo "Unloading: $KMOD ($VERSION)"
+       fi
+
+       rmmod "$NAME" || echo "Failed to unload $NAME"
+
+       return 0
+}
+
+unload_modules() {
+       for KMOD in $KMOD_ZFS $KMOD_ICP $KMOD_ZCOMMON $KMOD_ZUNICODE \
+           $KMOD_ZNVPAIR  $KMOD_ZAVL $KMOD_SPLAT $KMOD_SPL; do
+               NAME=$(basename "$KMOD" .ko)
+               USE_COUNT=$(lsmod | egrep "^${NAME} " | awk '{print $3}')
+
+               if [ "$USE_COUNT" = "0" ] ; then
+                       unload_module "$KMOD" || return 1
+               fi
+       done
+
+       if [ "$VERBOSE" = "yes" ]; then
+               echo "Successfully unloaded ZFS module stack"
+       fi
+
+       return 0
+}
+
+stack_clear() {
+       local STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size
+       local STACK_TRACER_ENABLED=/proc/sys/kernel/stack_tracer_enabled
+
+       if [ -e "$STACK_MAX_SIZE" ]; then
+               echo 1 >"$STACK_TRACER_ENABLED"
+               echo 0 >"$STACK_MAX_SIZE"
+       fi
+}
+
+stack_check() {
+       local STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size
+       local STACK_TRACE=/sys/kernel/debug/tracing/stack_trace
+       local STACK_LIMIT=7600
+
+       if [ -e "$STACK_MAX_SIZE" ]; then
+               STACK_SIZE=$(cat "$STACK_MAX_SIZE")
+
+               if [ "$STACK_SIZE" -ge "$STACK_LIMIT" ]; then
+                       echo
+                       echo "Warning: max stack size $STACK_SIZE bytes"
+                       cat "$STACK_TRACE"
+               fi
+       fi
+}
+
 if [ "$(id -u)" != 0 ]; then
-       die "Must run as root"
+       echo "Must run as root"
+       exit 1
 fi
 
-if [ ${UNLOAD} ]; then
+if [ "$UNLOAD" = "yes" ]; then
        kill_zed
        umount -t zfs -a
        stack_check
        unload_modules
 else
        stack_clear
-       check_modules || die "${ERROR}"
-       load_modules "$@" || die "Failed to load modules"
-       wait_udev /dev/zfs 30 || die "'/dev/zfs' was not created"
+       check_modules
+       load_modules "$@"
+       udevadm trigger
+       udevadm settle
 fi
 
 exit 0
index da747b0adcd96aa019081dda2de61cbd3fd25629..81e415805ab07a0131e18d9e2e0f5e4997c29e2f 100755 (executable)
 # master          Pass         Pass            Pass
 # installed       Pass         Pass            Pass
 #
-basedir="$(dirname $0)"
 
+BASE_DIR=$(dirname "$0")
 SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
+if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then
+       . "${BASE_DIR}/${SCRIPT_COMMON}"
 else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
+       echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
 fi
 
-PROG=zimport.sh
-
-SRC_TAGS="zfs-0.6.1 zfs-0.6.2 master"
+SRC_TAGS="zfs-0.6.5.11 master"
 POOL_TAGS="all master"
-TEST_DIR=`mktemp -u -d -p /var/tmp zimport.XXXXXXXX`
-KEEP=0
-VERBOSE=0
-COLOR=1
+TEST_DIR=$(mktemp -u -d -p /var/tmp zimport.XXXXXXXX)
+KEEP="no"
+VERBOSE="no"
+COLOR="yes"
 REPO="https://github.com/zfsonlinux"
 IMAGES_DIR="$SCRIPTDIR/zfs-images/"
 IMAGES_TAR="https://github.com/zfsonlinux/zfs-images/tarball/master"
@@ -80,6 +78,11 @@ CONFIG_OPTIONS=${CONFIG_OPTIONS:-""}
 MAKE_LOG="make.log"
 MAKE_OPTIONS=${MAKE_OPTIONS:-"-s -j$(nproc)"}
 
+COLOR_GREEN="\033[0;32m"
+COLOR_RED="\033[0;31m"
+COLOR_BROWN="\033[0;33m"
+COLOR_RESET="\033[0m"
+
 usage() {
 cat << EOF
 USAGE:
@@ -109,13 +112,13 @@ while getopts 'hvckr:s:i:p:f:?' OPTION; do
                exit 1
                ;;
        v)
-               VERBOSE=1
+               VERBOSE="yes"
                ;;
        c)
-               COLOR=0
+               COLOR="no"
                ;;
        k)
-               KEEP=1
+               KEEP="yes"
                ;;
        r)
                REPO="$OPTARG"
@@ -139,15 +142,51 @@ while getopts 'hvckr:s:i:p:f:?' OPTION; do
        esac
 done
 
-# Initialize the test suite
-init
-check_modules || die "ZFS modules must be unloaded"
+#
+# Verify the module start is not loaded
+#
+if lsmod | grep zfs >/dev/null; then
+       echo "ZFS modules must be unloaded"
+       exit 1
+fi
+
+#
+# Create a random directory tree of files and sub-directories to
+# to act as a copy source for the various regression tests.
+#
+populate() {
+       local ROOT=$1
+       local MAX_DIR_SIZE=$2
+       local MAX_FILE_SIZE=$3
+
+       # shellcheck disable=SC2086
+       mkdir -p $ROOT/{a,b,c,d,e,f,g}/{h,i}
+       DIRS=$(find "$ROOT")
+
+       for DIR in $DIRS; do
+               COUNT=$((RANDOM % MAX_DIR_SIZE))
+
+               # shellcheck disable=SC2034
+               for i in $(seq $COUNT); do
+                       FILE=$(mktemp -p "$DIR")
+                       SIZE=$((RANDOM % MAX_FILE_SIZE))
+                       dd if=/dev/urandom of="$FILE" bs=1k \
+                           count="$SIZE" &>/dev/null
+               done
+       done
+
+       return 0
+}
+
+SRC_DIR=$(mktemp -d -p /var/tmp/ zfs.src.XXXXXXXX)
+trap 'rm -Rf "$SRC_DIR"' INT TERM EXIT
+populate "$SRC_DIR" 10 100
 
 SRC_DIR="$TEST_DIR/src"
 SRC_DIR_SPL="$SRC_DIR/spl"
 SRC_DIR_ZFS="$SRC_DIR/zfs"
 
-if [ $COLOR -eq 0 ]; then
+if [ "$COLOR" = "no" ]; then
        COLOR_GREEN=""
        COLOR_BROWN=""
        COLOR_RED=""
@@ -166,6 +205,11 @@ fail_nonewline() {
        echo -n -e "${COLOR_RED}Fail${COLOR_RESET}\t\t"
 }
 
+fail() {
+       echo -e "${COLOR_RED}Fail${COLOR_RESET} ($1)"
+       exit "$1"
+}
+
 #
 # Set several helper variables which are derived from a source tag.
 #
@@ -179,24 +223,22 @@ fail_nonewline() {
 src_set_vars() {
        local TAG=$1
 
-       SPL_TAG=`echo $TAG | sed -e 's/zfs/spl/'`
-       SPL_DIR=$SRC_DIR_SPL/$SPL_TAG
-       SPL_URL=$REPO/spl/tarball/$SPL_TAG
+       SPL_TAG="${TAG//zfs/spl}"
+       SPL_DIR="$SRC_DIR_SPL/$SPL_TAG"
+       SPL_URL="$REPO/spl/tarball/$SPL_TAG"
 
-       ZFS_TAG=$TAG
-       ZFS_DIR=$SRC_DIR_ZFS/$ZFS_TAG
-       ZFS_URL=$REPO/zfs/tarball/$ZFS_TAG
+       ZFS_TAG="$TAG"
+       ZFS_DIR="$SRC_DIR_ZFS/$ZFS_TAG"
+       ZFS_URL="$REPO/zfs/tarball/$ZFS_TAG"
 
        if [ "$TAG" = "installed" ]; then
-               ZPOOL_CMD=`which zpool`
-               ZFS_CMD=`which zfs`
+               ZPOOL_CMD=$(which zpool)
+               ZFS_CMD=$(which zfs)
                ZFS_SH="/usr/share/zfs/zfs.sh"
-               ZPOOL_CREATE="/usr/share/zfs/zpool-create.sh"
        else
                ZPOOL_CMD="./cmd/zpool/zpool"
                ZFS_CMD="./cmd/zfs/zfs"
                ZFS_SH="./scripts/zfs.sh"
-               ZPOOL_CREATE="./scripts/zpool-create.sh"
        fi
 }
 
@@ -220,8 +262,7 @@ pool_set_vars() {
        POOL_DIR=$TEST_DIR/pools/$POOL_TAG
        POOL_DIR_PRISTINE=$POOL_DIR/pristine
        POOL_DIR_COPY=$POOL_DIR/copy
-       POOL_DIR_SRC=`echo -n "$SRC_DIR_ZFS/"; \
-           echo "$POOL_TAG" | sed -e 's/zol/zfs/'`
+       POOL_DIR_SRC="$SRC_DIR_ZFS/${POOL_TAG//zol/zfs}"
 }
 
 #
@@ -230,46 +271,51 @@ pool_set_vars() {
 # extended as needed to create more realistic pools.
 #
 pool_create() {
-       pool_set_vars $1
-       src_set_vars $1
+       pool_set_vars "$1"
+       src_set_vars "$1"
 
        if [ "$POOL_TAG" != "installed" ]; then
-               cd $POOL_DIR_SRC
+               cd "$POOL_DIR_SRC"
        fi
 
        $ZFS_SH zfs="spa_config_path=$POOL_DIR_PRISTINE" || fail 1
 
        # Create a file vdev RAIDZ pool.
-       FILEDIR="$POOL_DIR_PRISTINE" $ZPOOL_CREATE \
-           -c file-raidz -p $POOL_TAG -v -x >/dev/null || fail 2
+       truncate -s 1G \
+           "$POOL_DIR_PRISTINE/vdev1" "$POOL_DIR_PRISTINE/vdev2" \
+           "$POOL_DIR_PRISTINE/vdev3" "$POOL_DIR_PRISTINE/vdev4"
+       $ZPOOL_CMD create "$POOL_TAG" raidz \
+           "$POOL_DIR_PRISTINE/vdev1" "$POOL_DIR_PRISTINE/vdev2" \
+            "$POOL_DIR_PRISTINE/vdev3" "$POOL_DIR_PRISTINE/vdev4"
 
        # Create a pool/fs filesystem with some random contents.
-       $ZFS_CMD create $POOL_TAG/fs || fail 3
-       populate /$POOL_TAG/fs/ 10 100
+       $ZFS_CMD create "$POOL_TAG/fs" || fail 3
+       populate "/$POOL_TAG/fs/" 10 100
 
        # Snapshot that filesystem, clone it, remove the files/dirs,
        # replace them with new files/dirs.
-       $ZFS_CMD snap $POOL_TAG/fs@snap || fail 4
-       $ZFS_CMD clone $POOL_TAG/fs@snap $POOL_TAG/clone || fail 5
+       $ZFS_CMD snap "$POOL_TAG/fs@snap" || fail 4
+       $ZFS_CMD clone "$POOL_TAG/fs@snap" "$POOL_TAG/clone" || fail 5
+       # shellcheck disable=SC2086
        rm -Rf /$POOL_TAG/clone/* || fail 6
-       populate /$POOL_TAG/clone/ 10 100
+       populate "/$POOL_TAG/clone/" 10 100
 
        # Scrub the pool, delay slightly, then export it.  It is now
        # somewhat interesting for testing purposes.
-       $ZPOOL_CMD scrub $POOL_TAG || fail 7
+       $ZPOOL_CMD scrub "$POOL_TAG" || fail 7
        sleep 10
-       $ZPOOL_CMD export $POOL_TAG || fail 8
+       $ZPOOL_CMD export "$POOL_TAG" || fail 8
 
        $ZFS_SH -u || fail 9
 }
 
 # If the zfs-images directory doesn't exist fetch a copy from Github then
 # cache it in the $TEST_DIR and update $IMAGES_DIR.
-if [ ! -d $IMAGES_DIR ]; then
+if [ ! -d "$IMAGES_DIR" ]; then
        IMAGES_DIR="$TEST_DIR/zfs-images"
-       mkdir -p $IMAGES_DIR
-       curl -sL $IMAGES_TAR | \
-           tar -xz -C $IMAGES_DIR --strip-components=1 || fail 10
+       mkdir -p "$IMAGES_DIR"
+       curl -sL "$IMAGES_TAR" | \
+           tar -xz -C "$IMAGES_DIR" --strip-components=1 || fail 10
 fi
 
 # Given the available images in the zfs-images directory substitute the
@@ -277,8 +323,9 @@ fi
 for TAG in $POOL_TAGS; do
 
        if  [ "$TAG" = "all" ]; then
-               ALL_TAGS=`ls $IMAGES_DIR | grep "tar.bz2" | \
-                   sed 's/.tar.bz2//' | tr '\n' ' '`
+               # shellcheck disable=SC2010
+               ALL_TAGS=$(ls "$IMAGES_DIR" | grep "tar.bz2" | \
+                   sed 's/.tar.bz2//' | tr '\n' ' ')
                NEW_TAGS="$NEW_TAGS $ALL_TAGS"
        else
                NEW_TAGS="$NEW_TAGS $TAG"
@@ -286,41 +333,41 @@ for TAG in $POOL_TAGS; do
 done
 POOL_TAGS="$NEW_TAGS"
 
-if [ $VERBOSE -ne 0 ]; then
+if [ "$VERBOSE" = "yes" ]; then
        echo "---------------------------- Options ----------------------------"
        echo "VERBOSE=$VERBOSE"
        echo "KEEP=$KEEP"
        echo "REPO=$REPO"
-       echo "SRC_TAGS="$SRC_TAGS""
-       echo "POOL_TAGS="$POOL_TAGS""
+       echo "SRC_TAGS=$SRC_TAGS"
+       echo "POOL_TAGS=$POOL_TAGS"
        echo "PATH=$TEST_DIR"
        echo
 fi
 
-if [ ! -d $TEST_DIR ]; then
-       mkdir -p $TEST_DIR
+if [ ! -d "$TEST_DIR" ]; then
+       mkdir -p "$TEST_DIR"
 fi
 
-if [ ! -d $SRC_DIR ]; then
-       mkdir -p $SRC_DIR
+if [ ! -d "$SRC_DIR" ]; then
+       mkdir -p "$SRC_DIR"
 fi
 
 # Print a header for all tags which are being tested.
 echo "--------------------- ZFS on Linux Source Versions --------------"
 printf "%-16s" " "
 for TAG in $SRC_TAGS; do
-       src_set_vars $TAG
+       src_set_vars "$TAG"
 
        if [ "$TAG" = "installed" ]; then
-               ZFS_VERSION=`modinfo zfs | awk '/version:/ { print $2; exit }'`
+               ZFS_VERSION=$(modinfo zfs | awk '/version:/ { print $2; exit }')
                if [ -n "$ZFS_VERSION" ]; then
-                       printf "%-16s" $ZFS_VERSION
+                       printf "%-16s" "$ZFS_VERSION"
                else
-                       echo "ZFS is not installed\n"
+                       echo -e "ZFS is not installed\n"
                        fail
                fi
        else
-               printf "%-16s" $TAG
+               printf "%-16s" "$TAG"
        fi
 done
 echo -e "\n-----------------------------------------------------------------"
@@ -331,29 +378,29 @@ echo -e "\n-----------------------------------------------------------------"
 #
 printf "%-16s" "Clone SPL"
 for TAG in $SRC_TAGS; do
-       src_set_vars $TAG
+       src_set_vars "$TAG"
 
-       if [ -d $SPL_DIR ]; then
+       if [ -d "$SPL_DIR" ]; then
                skip_nonewline
        elif  [ "$SPL_TAG" = "installed" ]; then
                skip_nonewline
        else
-               cd $SRC_DIR
+               cd "$SRC_DIR"
 
-               if [ ! -d $SRC_DIR_SPL ]; then
-                       mkdir -p $SRC_DIR_SPL
+               if [ ! -d "$SRC_DIR_SPL" ]; then
+                       mkdir -p "$SRC_DIR_SPL"
                fi
 
-               git archive --format=tar --prefix=$SPL_TAG/ $SPL_TAG \
-                   -o $SRC_DIR_SPL/$SPL_TAG.tar &>/dev/nul || \
-                   rm $SRC_DIR_SPL/$SPL_TAG.tar
-               if [ -s $SRC_DIR_SPL/$SPL_TAG.tar ]; then
-                       tar -xf $SRC_DIR_SPL/$SPL_TAG.tar -C $SRC_DIR_SPL
-                       rm $SRC_DIR_SPL/$SPL_TAG.tar
+               git archive --format=tar --prefix="$SPL_TAG/ $SPL_TAG" \
+                   -o "$SRC_DIR_SPL/$SPL_TAG.tar" &>/dev/nul || \
+                   rm "$SRC_DIR_SPL/$SPL_TAG.tar"
+               if [ -s "$SRC_DIR_SPL/$SPL_TAG.tar" ]; then
+                       tar -xf "$SRC_DIR_SPL/$SPL_TAG.tar" -C "$SRC_DIR_SPL"
+                       rm "$SRC_DIR_SPL/$SPL_TAG.tar"
                        echo -n -e "${COLOR_GREEN}Local${COLOR_RESET}\t\t"
                else
-                       mkdir -p $SPL_DIR || fail 1
-                       curl -sL $SPL_URL | tar -xz -C $SPL_DIR \
+                       mkdir -p "$SPL_DIR" || fail 1
+                       curl -sL "$SPL_URL" | tar -xz -C "$SPL_DIR" \
                            --strip-components=1 || fail 2
                        echo -n -e "${COLOR_GREEN}Remote${COLOR_RESET}\t\t"
                fi
@@ -367,29 +414,29 @@ printf "\n"
 #
 printf "%-16s" "Clone ZFS"
 for TAG in $SRC_TAGS; do
-       src_set_vars $TAG
+       src_set_vars "$TAG"
 
-       if [ -d $ZFS_DIR ]; then
+       if [ -d "$ZFS_DIR" ]; then
                skip_nonewline
        elif  [ "$ZFS_TAG" = "installed" ]; then
                skip_nonewline
        else
-               cd $SRC_DIR
+               cd "$SRC_DIR"
 
-               if [ ! -d $SRC_DIR_ZFS ]; then
-                       mkdir -p $SRC_DIR_ZFS
+               if [ ! -d "$SRC_DIR_ZFS" ]; then
+                       mkdir -p "$SRC_DIR_ZFS"
                fi
 
-               git archive --format=tar --prefix=$ZFS_TAG/ $ZFS_TAG \
-                   -o $SRC_DIR_ZFS/$ZFS_TAG.tar &>/dev/nul || \
-                   rm $SRC_DIR_ZFS/$ZFS_TAG.tar
-               if [ -s $SRC_DIR_ZFS/$ZFS_TAG.tar ]; then
-                       tar -xf $SRC_DIR_ZFS/$ZFS_TAG.tar -C $SRC_DIR_ZFS
-                       rm $SRC_DIR_ZFS/$ZFS_TAG.tar
+               git archive --format=tar --prefix="$ZFS_TAG/ $ZFS_TAG" \
+                   -o "$SRC_DIR_ZFS/$ZFS_TAG.tar" &>/dev/nul || \
+                   rm "$SRC_DIR_ZFS/$ZFS_TAG.tar"
+               if [ -s "$SRC_DIR_ZFS/$ZFS_TAG.tar" ]; then
+                       tar -xf "$SRC_DIR_ZFS/$ZFS_TAG.tar" -C "$SRC_DIR_ZFS"
+                       rm "$SRC_DIR_ZFS/$ZFS_TAG.tar"
                        echo -n -e "${COLOR_GREEN}Local${COLOR_RESET}\t\t"
                else
-                       mkdir -p $ZFS_DIR || fail 1
-                       curl -sL $ZFS_URL | tar -xz -C $ZFS_DIR \
+                       mkdir -p "$ZFS_DIR" || fail 1
+                       curl -sL "$ZFS_URL" | tar -xz -C "$ZFS_DIR" \
                            --strip-components=1 || fail 2
                        echo -n -e "${COLOR_GREEN}Remote${COLOR_RESET}\t\t"
                fi
@@ -400,18 +447,20 @@ printf "\n"
 # Build the listed tags
 printf "%-16s" "Build SPL"
 for TAG in $SRC_TAGS; do
-       src_set_vars $TAG
+       src_set_vars "$TAG"
 
-       if [ -f $SPL_DIR/module/spl/spl.ko ]; then
+       if [ -f "$SPL_DIR/module/spl/spl.ko" ]; then
                skip_nonewline
        elif  [ "$SPL_TAG" = "installed" ]; then
                skip_nonewline
        else
-               cd $SPL_DIR
+               cd "$SPL_DIR"
                make distclean &>/dev/null
-               ./autogen.sh >>$CONFIG_LOG 2>&1 || fail 1
-               ./configure $CONFIG_OPTIONS >>$CONFIG_LOG 2>&1 || fail 2
-               make ${MAKE_OPTIONS} >>$MAKE_LOG 2>&1 || fail 3
+               ./autogen.sh >>"$CONFIG_LOG" 2>&1 || fail 1
+               # shellcheck disable=SC2086
+               ./configure $CONFIG_OPTIONS >>"$CONFIG_LOG" 2>&1 || fail 2
+               # shellcheck disable=SC2086
+               make $MAKE_OPTIONS >>"$MAKE_LOG" 2>&1 || fail 3
                pass_nonewline
        fi
 done
@@ -420,19 +469,21 @@ printf "\n"
 # Build the listed tags
 printf "%-16s" "Build ZFS"
 for TAG in $SRC_TAGS; do
-       src_set_vars $TAG
+       src_set_vars "$TAG"
 
-       if [ -f $ZFS_DIR/module/zfs/zfs.ko ]; then
+       if [ -f "$ZFS_DIR/module/zfs/zfs.ko" ]; then
                skip_nonewline
        elif  [ "$ZFS_TAG" = "installed" ]; then
                skip_nonewline
        else
-               cd $ZFS_DIR
+               cd "$ZFS_DIR"
                make distclean &>/dev/null
-               ./autogen.sh >>$CONFIG_LOG 2>&1 || fail 1
-               ./configure --with-spl=$SPL_DIR $CONFIG_OPTIONS \
-                    >>$CONFIG_LOG 2>&1 || fail 2
-               make ${MAKE_OPTIONS} >>$MAKE_LOG 2>&1 || fail 3
+               ./autogen.sh >>"$CONFIG_LOG" 2>&1 || fail 1
+               # shellcheck disable=SC2086
+               ./configure --with-spl="$SPL_DIR" $CONFIG_OPTIONS \
+                    >>"$CONFIG_LOG" 2>&1 || fail 2
+               # shellcheck disable=SC2086
+               make $MAKE_OPTIONS >>"$MAKE_LOG" 2>&1 || fail 3
                pass_nonewline
        fi
 done
@@ -442,23 +493,23 @@ echo "-----------------------------------------------------------------"
 # Either create a new pool using 'zpool create', or alternately restore an
 # existing pool from another ZFS implementation for compatibility testing.
 for TAG in $POOL_TAGS; do
-       pool_set_vars $TAG
+       pool_set_vars "$TAG"
        SKIP=0
 
-       printf "%-16s" $POOL_TAG
-       rm -Rf $POOL_DIR
-       mkdir -p $POOL_DIR_PRISTINE
+       printf "%-16s" "$POOL_TAG"
+       rm -Rf "$POOL_DIR"
+       mkdir -p "$POOL_DIR_PRISTINE"
 
        # Use the existing compressed image if available.
-       if [ -f $POOL_BZIP ]; then
-               tar -xjf $POOL_BZIP -C $POOL_DIR_PRISTINE \
+       if [ -f "$POOL_BZIP" ]; then
+               tar -xjf "$POOL_BZIP" -C "$POOL_DIR_PRISTINE" \
                    --strip-components=1 || fail 1
        # Use the installed version to create the pool.
        elif  [ "$TAG" = "installed" ]; then
-               pool_create $TAG
+               pool_create "$TAG"
        # A source build is available to create the pool.
-       elif [ -d $POOL_DIR_SRC ]; then
-               pool_create $TAG
+       elif [ -d "$POOL_DIR_SRC" ]; then
+               pool_create "$TAG"
        else
                SKIP=1
        fi
@@ -471,35 +522,36 @@ for TAG in $POOL_TAGS; do
                        continue
                fi
 
-               src_set_vars $TAG
+               src_set_vars "$TAG"
                if [ "$TAG" != "installed" ]; then
-                       cd $ZFS_DIR
+                       cd "$ZFS_DIR"
                fi
                $ZFS_SH zfs="spa_config_path=$POOL_DIR_COPY"
 
-               cp -a --sparse=always $POOL_DIR_PRISTINE \
-                   $POOL_DIR_COPY || fail 2
-               POOL_NAME=`$ZPOOL_CMD import -d $POOL_DIR_COPY | \
-                   awk '/pool:/ { print $2; exit 0 }'`
+               cp -a --sparse=always "$POOL_DIR_PRISTINE" \
+                   "$POOL_DIR_COPY" || fail 2
+               POOL_NAME=$($ZPOOL_CMD import -d "$POOL_DIR_COPY" | \
+                   awk '/pool:/ { print $2; exit 0 }')
 
-               $ZPOOL_CMD import -N -d $POOL_DIR_COPY $POOL_NAME &>/dev/null
+               $ZPOOL_CMD import -N -d "$POOL_DIR_COPY" \
+                  "$POOL_NAME" &>/dev/null
                if [ $? -ne 0 ]; then
                        fail_nonewline
                        ERROR=1
                else
-                       $ZPOOL_CMD export $POOL_NAME || fail 3
+                       $ZPOOL_CMD export "$POOL_NAME" || fail 3
                        pass_nonewline
                fi
 
-               rm -Rf $POOL_DIR_COPY
+               rm -Rf "$POOL_DIR_COPY"
 
                $ZFS_SH -u || fail 4
        done
        printf "\n"
 done
 
-if [ ! $KEEP ]; then
-       rm -Rf $TEST_DIR
+if [ "$KEEP" = "no" ]; then
+       rm -Rf "$TEST_DIR"
 fi
 
 exit $ERROR
index 3a6db40cf0faea3507356b44fcd021418cc51bca..d3ec93202ad1ef37b86654f7b04c4fc623d60fe8 100755 (executable)
 # Copyright (C) 2016 Lawrence Livermore National Security, LLC.
 #
 
-basedir=$(dirname "$0")
-
+BASE_DIR=$(dirname "$0")
 SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-       . "${basedir}/${SCRIPT_COMMON}"
+if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then
+       . "${BASE_DIR}/${SCRIPT_COMMON}"
 else
        echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
 fi
diff --git a/scripts/zpios-profile/Makefile.am b/scripts/zpios-profile/Makefile.am
deleted file mode 100644 (file)
index c87f169..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-pkgdataprofiledir = $(pkgdatadir)/zpios-profile
-dist_pkgdataprofile_SCRIPTS = \
-       $(top_srcdir)/scripts/zpios-profile/zpios-profile-disk.sh \
-       $(top_srcdir)/scripts/zpios-profile/zpios-profile-pids.sh \
-       $(top_srcdir)/scripts/zpios-profile/zpios-profile-post.sh \
-       $(top_srcdir)/scripts/zpios-profile/zpios-profile-pre.sh \
-       $(top_srcdir)/scripts/zpios-profile/zpios-profile.sh
diff --git a/scripts/zpios-profile/zpios-profile-disk.sh b/scripts/zpios-profile/zpios-profile-disk.sh
deleted file mode 100755 (executable)
index b56ee1e..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/bin/bash
-#
-# /proc/diskinfo <after skipping major/minor>
-# Field 1 -- device name
-# Field 2 -- # of reads issued
-# Field 3 -- # of reads merged
-# Field 4 -- # of sectors read
-# Field 5 -- # of milliseconds spent reading
-# Field 6 -- # of writes completed
-# Field 7 -- # of writes merged
-# Field 8 -- # of sectors written
-# Field 9 -- # of milliseconds spent writing
-# Field 10 -- # of I/Os currently in progress
-# Field 11 -- # of milliseconds spent doing I/Os
-# Field 12 -- weighted # of milliseconds spent doing I/Os
-
-PROG=zpios-profile-disk.sh
-
-RUN_PIDS=${0}
-RUN_LOG_DIR=${1}
-RUN_ID=${2}
-
-create_table() {
-       local FIELD=$1
-       local ROW_M=()
-       local ROW_N=()
-       local HEADER=1
-       local STEP=1
-
-       for DISK_FILE in `ls -r --sort=time --time=ctime ${RUN_LOG_DIR}/${RUN_ID}/disk-[0-9]*`; do
-               ROW_M=( ${ROW_N[@]} )
-               ROW_N=( `cat ${DISK_FILE} | grep sd | cut -c11- | cut -f${FIELD} -d' ' | tr "\n" "\t"` )
-
-               if [ $HEADER -eq 1 ]; then
-                       echo -n "step, "
-                       cat ${DISK_FILE} | grep sd | cut -c11- | cut -f1 -d' ' | tr "\n" ", "
-                       echo "total"
-                       HEADER=0
-               fi
-
-               if [ ${#ROW_M[@]} -eq 0 ]; then
-                       continue
-               fi
-
-               if [ ${#ROW_M[@]} -ne ${#ROW_N[@]} ]; then
-                       echo "Badly formatted profile data in ${DISK_FILE}"
-                       break
-               fi
-
-               TOTAL=0
-               echo -n "${STEP}, "
-               for (( i=0; i<${#ROW_N[@]}; i++ )); do
-                       DELTA=`echo "${ROW_N[${i}]}-${ROW_M[${i}]}" | bc`
-                       let TOTAL=${TOTAL}+${DELTA}
-                       echo -n "${DELTA}, "
-               done
-               echo "${TOTAL}, "
-
-               let STEP=${STEP}+1
-       done
-}
-
-create_table_mbs() {
-       local FIELD=$1
-       local TIME=$2
-       local ROW_M=()
-       local ROW_N=()
-       local HEADER=1
-       local STEP=1
-
-       for DISK_FILE in `ls -r --sort=time --time=ctime ${RUN_LOG_DIR}/${RUN_ID}/disk-[0-9]*`; do
-               ROW_M=( ${ROW_N[@]} )
-               ROW_N=( `cat ${DISK_FILE} | grep sd | cut -c11- | cut -f${FIELD} -d' ' | tr "\n" "\t"` )
-
-               if [ $HEADER -eq 1 ]; then
-                       echo -n "step, "
-                       cat ${DISK_FILE} | grep sd | cut -c11- | cut -f1 -d' ' | tr "\n" ", "
-                       echo "total"
-                       HEADER=0
-               fi
-
-               if [ ${#ROW_M[@]} -eq 0 ]; then
-                       continue
-               fi
-
-               if [ ${#ROW_M[@]} -ne ${#ROW_N[@]} ]; then
-                       echo "Badly formatted profile data in ${DISK_FILE}"
-                       break
-               fi
-
-               TOTAL=0
-               echo -n "${STEP}, "
-               for (( i=0; i<${#ROW_N[@]}; i++ )); do
-                       DELTA=`echo "${ROW_N[${i}]}-${ROW_M[${i}]}" | bc`
-                       MBS=`echo "scale=2; ((${DELTA}*512)/${TIME})/(1024*1024)" | bc`
-                       TOTAL=`echo "scale=2; ${TOTAL}+${MBS}" | bc`
-                       echo -n "${MBS}, "
-               done
-               echo "${TOTAL}, "
-
-               let STEP=${STEP}+1
-       done
-}
-
-echo
-echo "Reads issued per device"
-create_table 2
-echo
-echo "Reads merged per device"
-create_table 3
-echo
-echo "Sectors read per device"
-create_table 4
-echo "MB/s per device"
-create_table_mbs 4 3
-
-echo
-echo "Writes issued per device"
-create_table 6
-echo
-echo "Writes merged per device"
-create_table 7
-echo
-echo "Sectors written per device"
-create_table 8
-echo "MB/s per device"
-create_table_mbs 8 3
-
-exit 0
diff --git a/scripts/zpios-profile/zpios-profile-pids.sh b/scripts/zpios-profile/zpios-profile-pids.sh
deleted file mode 100755 (executable)
index 3514b38..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/bash
-
-PROG=zpios-profile-pids.sh
-
-RUN_PIDS=${0}
-RUN_LOG_DIR=${1}
-RUN_ID=${2}
-
-ROW_M=()
-ROW_N=()
-ROW_N_SCHED=()
-ROW_N_WAIT=()
-
-HEADER=1
-STEP=1
-
-for PID_FILE in `ls -r --sort=time --time=ctime ${RUN_LOG_DIR}/${RUN_ID}/pids-[0-9]*`; do
-       ROW_M=( ${ROW_N[@]} )
-       ROW_N=( 0 0 0 0  0 0 0 0  0 0 0 0  0 0 0 0  0 0 0 )
-       ROW_N_SCHED=( `cat ${PID_FILE} | cut -f15 -d' ' | tr "\n" "\t"` )
-       ROW_N_WAIT=(  `cat ${PID_FILE} | cut -f17 -d' ' | tr "\n" "\t"` )
-       ROW_N_NAMES=( `cat ${PID_FILE} | cut -f2  -d' ' | cut -f2 -d'(' | 
-                       cut -f1 -d')'   | cut -f1  -d'/' | tr "\n" "\t"` )
-
-       for (( i=0; i<${#ROW_N_SCHED[@]}; i++ )); do
-               SUM=`echo "${ROW_N_WAIT[${i}]}+${ROW_N_SCHED[${i}]}" | bc`
-
-               case ${ROW_N_NAMES[${i}]} in
-                       zio_taskq)      IDX=0;;
-                       zio_req_nul)    IDX=1;;
-                       zio_irq_nul)    IDX=2;;
-                       zio_req_rd)     IDX=3;;
-                       zio_irq_rd)     IDX=4;;
-                       zio_req_wr)     IDX=5;;
-                       zio_irq_wr)     IDX=6;;
-                       zio_req_fr)     IDX=7;;
-                       zio_irq_fr)     IDX=8;;
-                       zio_req_cm)     IDX=9;;
-                       zio_irq_cm)     IDX=10;;
-                       zio_req_ctl)    IDX=11;;
-                       zio_irq_ctl)    IDX=12;;
-                       txg_quiesce)    IDX=13;;
-                       txg_sync)       IDX=14;;
-                       txg_timelimit)  IDX=15;;
-                       arc_reclaim)    IDX=16;;
-                       l2arc_feed)     IDX=17;;
-                       zpios_io)       IDX=18;;
-                       *)              continue;;
-               esac
-
-               let ROW_N[${IDX}]=${ROW_N[${IDX}]}+${SUM}
-       done
-
-       if [ $HEADER -eq 1 ]; then
-               echo "step, zio_taskq, zio_req_nul, zio_irq_nul, "        \
-                     "zio_req_rd, zio_irq_rd, zio_req_wr, zio_irq_wr, "   \
-                     "zio_req_fr, zio_irq_fr, zio_req_cm, zio_irq_cm, "   \
-                     "zio_req_ctl, zio_irq_ctl, txg_quiesce, txg_sync, "  \
-                     "txg_timelimit, arc_reclaim, l2arc_feed, zpios_io, " \
-                    "idle"
-               HEADER=0
-       fi
-
-       if [ ${#ROW_M[@]} -eq 0 ]; then
-               continue
-       fi
-
-       if [ ${#ROW_M[@]} -ne ${#ROW_N[@]} ]; then
-               echo "Badly formatted profile data in ${PID_FILE}"
-               break
-       fi
-
-       # Original values are in jiffies and we expect HZ to be 1000
-       # on most 2.6 systems thus we divide by 10 to get a percentage.
-       IDLE=1000
-        echo -n "${STEP}, "
-       for (( i=0; i<${#ROW_N[@]}; i++ )); do
-               DELTA=`echo "${ROW_N[${i}]}-${ROW_M[${i}]}" | bc`
-               DELTA_PERCENT=`echo "scale=1; ${DELTA}/10" | bc`
-               let IDLE=${IDLE}-${DELTA}
-               echo -n "${DELTA_PERCENT}, "
-       done
-       ILDE_PERCENT=`echo "scale=1; ${IDLE}/10" | bc`
-       echo "${ILDE_PERCENT}"
-
-       let STEP=${STEP}+1
-done
-
-exit
-
-echo
-echo "Percent of total system time per pid"
-for PID_FILE in `ls -r --sort=time --time=ctime ${RUN_LOG_DIR}/${RUN_ID}/pids-[0-9]*`; do
-       ROW_M=( ${ROW_N[@]} )
-       ROW_N_SCHED=( `cat ${PID_FILE} | cut -f15 -d' ' | tr "\n" "\t"` )
-       ROW_N_WAIT=( `cat ${PID_FILE} | cut -f17 -d' ' | tr "\n" "\t"` )
-
-       for (( i=0; i<${#ROW_N_SCHED[@]}; i++ )); do
-               ROW_N[${i}]=`echo "${ROW_N_WAIT[${i}]}+${ROW_N_SCHED[${i}]}" | bc`
-       done
-
-       if [ $HEADER -eq 1 ]; then
-               echo -n "step, "
-               cat ${PID_FILE} | cut -f2 -d' ' | tr "\n" ", "
-               echo
-               HEADER=0
-       fi
-
-       if [ ${#ROW_M[@]} -eq 0 ]; then
-               continue
-       fi
-
-       if [ ${#ROW_M[@]} -ne ${#ROW_N[@]} ]; then
-               echo "Badly formatted profile data in ${PID_FILE}"
-               break
-       fi
-
-       # Original values are in jiffies and we expect HZ to be 1000
-       # on most 2.6 systems thus we divide by 10 to get a percentage.
-        echo -n "${STEP}, "
-       for (( i=0; i<${#ROW_N[@]}; i++ )); do
-               DELTA=`echo "scale=1; (${ROW_N[${i}]}-${ROW_M[${i}]})/10" | bc`
-               echo -n "${DELTA}, "
-       done
-
-       echo
-       let STEP=${STEP}+1
-done
-
-
-exit 0
diff --git a/scripts/zpios-profile/zpios-profile-post.sh b/scripts/zpios-profile/zpios-profile-post.sh
deleted file mode 100755 (executable)
index 3a454ba..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/bin/bash
-
-PROG=zpios-profile-post.sh
-
-RUN_POST=${0}
-RUN_PHASE=${1}
-RUN_DIR=${2}
-RUN_ID=${3}
-RUN_POOL=${4}
-RUN_CHUNK_SIZE=${5}
-RUN_REGION_SIZE=${6}
-RUN_THRD_COUNT=${7}
-RUN_REGION_COUNT=${8}
-RUN_OFFSET=${9}
-RUN_REGION_NOISE=${10}
-RUN_CHUNK_NOISE=${11}
-RUN_THRD_DELAY=${12}
-RUN_FLAGS=${13}
-RUN_RESULT=${14}
-
-# Summarize system time per process
-zpios_profile_post_pids() {
-       ${PROFILE_PIDS} ${PROFILE_RUN_CR_PIDS_LOG} >${PROFILE_RUN_CR_PIDS_CSV}
-       ${PROFILE_PIDS} ${PROFILE_RUN_WR_PIDS_LOG} >${PROFILE_RUN_WR_PIDS_CSV}
-       ${PROFILE_PIDS} ${PROFILE_RUN_RD_PIDS_LOG} >${PROFILE_RUN_RD_PIDS_CSV}
-       ${PROFILE_PIDS} ${PROFILE_RUN_RM_PIDS_LOG} >${PROFILE_RUN_RM_PIDS_CSV}
-}
-
-zpios_profile_post_disk() {
-       ${PROFILE_DISK} ${PROFILE_RUN_CR_DISK_LOG} >${PROFILE_RUN_CR_DISK_CSV}
-       ${PROFILE_DISK} ${PROFILE_RUN_WR_DISK_LOG} >${PROFILE_RUN_WR_DISK_CSV}
-       ${PROFILE_DISK} ${PROFILE_RUN_RD_DISK_LOG} >${PROFILE_RUN_RD_DISK_CSV}
-       ${PROFILE_DISK} ${PROFILE_RUN_RM_DISK_LOG} >${PROFILE_RUN_RM_DISK_CSV}
-}
-
-# Summarize per device performance
-
-# Stop a user defined profiling script which is gathering additional data
-zpios_profile_post_stop() {
-       local PROFILE_PID=$1
-
-       kill -s SIGHUP `cat ${PROFILE_PID}`
-
-
-       # Sleep waiting for profile script to exit
-       while [ -f ${PROFILE_PID} ]; do
-               sleep 0.01
-       done
-}
-
-zpios_profile_post_proc_stop() {
-       local PROC_DIR=$1
-
-       if [ -f ${PROFILE_ARC_PROC} ]; then
-               cat ${PROFILE_ARC_PROC} >${PROC_DIR}/arcstats.txt
-       fi
-
-       if [ -f ${PROFILE_VDEV_CACHE_PROC} ]; then
-               cat ${PROFILE_VDEV_CACHE_PROC} >${PROC_DIR}/vdev_cache_stats.txt
-       fi
-}
-
-zpios_profile_post_oprofile_stop() {
-       local OPROFILE_LOG=$1
-       local OPROFILE_ARGS="-a -g -l -p ${OPROFILE_KERNEL_DIR},${OPROFILE_SPL_DIR},${OPROFILE_ZFS_DIR}"
-
-       /usr/bin/opcontrol --stop >>${OPROFILE_LOG} 2>&1
-       /usr/bin/opcontrol --dump >>${OPROFILE_LOG} 2>&1
-       /usr/bin/opreport ${OPROFILE_ARGS} >${OPROFILE_LOG} 2>&1
-       /usr/bin/oparchive
-}
-
-zpios_profile_post_create() {
-       zpios_profile_post_oprofile_stop ${PROFILE_RUN_CR_OPROFILE_LOG}
-       zpios_profile_post_proc_stop ${PROFILE_RUN_CR_DIR}
-       zpios_profile_post_stop ${PROFILE_RUN_CR_PID}
-}
-
-zpios_profile_post_write() {
-       zpios_profile_post_oprofile_stop ${PROFILE_RUN_WR_OPROFILE_LOG}
-       zpios_profile_post_proc_stop ${PROFILE_RUN_WR_DIR}
-       zpios_profile_post_stop ${PROFILE_RUN_WR_PID}
-}
-
-zpios_profile_post_read() {
-       zpios_profile_post_oprofile_stop ${PROFILE_RUN_CR_RD_LOG}
-       zpios_profile_post_proc_stop ${PROFILE_RUN_RD_DIR}
-       zpios_profile_post_stop ${PROFILE_RUN_RD_PID}
-}
-
-zpios_profile_post_remove() {
-       zpios_profile_post_oprofile_stop ${PROFILE_RUN_RM_OPROFILE_LOG}
-       zpios_profile_post_proc_stop ${PROFILE_RUN_RM_DIR}
-       zpios_profile_post_stop ${PROFILE_RUN_RM_PID}
-}
-
-# Source global zpios test configuration
-if [ -f ${RUN_DIR}/zpios-config.sh ]; then
-       . ${RUN_DIR}/zpios-config.sh
-fi
-
-# Source global per-run test configuration
-if [ -f ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh ]; then
-       . ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh
-fi
-
-case "${RUN_PHASE}" in
-       post-run)
-               zpios_profile_post_pids
-               zpios_profile_post_disk
-               ;;
-       post-create)
-               zpios_profile_post_create
-               ;;
-       post-write)
-               zpios_profile_post_write
-               ;;
-       post-read)
-               zpios_profile_post_read
-               ;;
-       post-remove)
-               zpios_profile_post_remove
-               ;;
-       *)
-               echo "Usage: ${PROG} {post-run|post-create|post-write|post-read|post-remove}"
-               exit 1
-esac
-
-exit 0
diff --git a/scripts/zpios-profile/zpios-profile-pre.sh b/scripts/zpios-profile/zpios-profile-pre.sh
deleted file mode 100755 (executable)
index a2a8857..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/bin/bash
-
-PROG=zpios-profile-pre.sh
-
-PROFILE_RDY=0
-trap "PROFILE_RDY=1" SIGHUP
-
-RUN_PRE=${0}
-RUN_PHASE=${1}
-RUN_DIR=${2}
-RUN_ID=${3}
-RUN_POOL=${4}
-RUN_CHUNK_SIZE=${5}
-RUN_REGION_SIZE=${6}
-RUN_THRD_COUNT=${7}
-RUN_REGION_COUNT=${8}
-RUN_OFFSET=${9}
-RUN_REGION_NOISE=${10}
-RUN_CHUNK_NOISE=${11}
-RUN_THRD_DELAY=${12}
-RUN_FLAGS=${13}
-RUN_RESULT=${14}
-
-zpios_profile_pre_run_cfg() {
-cat > ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh << EOF
-#
-# Zpios Profiling Configuration for Run ${RUN_ID}
-#
-
-PROFILE_RUN_DIR=${RUN_DIR}/${RUN_ID}
-
-PROFILE_RUN_CR_DIR=${RUN_DIR}/${RUN_ID}/create
-PROFILE_RUN_CR_PID=${RUN_DIR}/${RUN_ID}/create/profile.pid
-PROFILE_RUN_CR_OPROFILE_LOG=${RUN_DIR}/${RUN_ID}/create/oprofile.txt
-PROFILE_RUN_CR_PIDS_LOG=${RUN_DIR}/${RUN_ID}/create/pids.txt
-PROFILE_RUN_CR_PIDS_CSV=${RUN_DIR}/${RUN_ID}/create/pids.csv
-PROFILE_RUN_CR_DISK_LOG=${RUN_DIR}/${RUN_ID}/create/disk.txt
-PROFILE_RUN_CR_DISK_CSV=${RUN_DIR}/${RUN_ID}/create/disk.csv
-
-PROFILE_RUN_WR_DIR=${RUN_DIR}/${RUN_ID}/write
-PROFILE_RUN_WR_PID=${RUN_DIR}/${RUN_ID}/write/profile.pid
-PROFILE_RUN_WR_OPROFILE_LOG=${RUN_DIR}/${RUN_ID}/write/oprofile.txt
-PROFILE_RUN_WR_PIDS_LOG=${RUN_DIR}/${RUN_ID}/write/pids.txt
-PROFILE_RUN_WR_PIDS_CSV=${RUN_DIR}/${RUN_ID}/write/pids.csv
-PROFILE_RUN_WR_DISK_LOG=${RUN_DIR}/${RUN_ID}/write/disk.txt
-PROFILE_RUN_WR_DISK_CSV=${RUN_DIR}/${RUN_ID}/write/disk.csv
-
-PROFILE_RUN_RD_DIR=${RUN_DIR}/${RUN_ID}/read
-PROFILE_RUN_RD_PID=${RUN_DIR}/${RUN_ID}/read/profile.pid
-PROFILE_RUN_RD_OPROFILE_LOG=${RUN_DIR}/${RUN_ID}/read/oprofile.txt
-PROFILE_RUN_RD_PIDS_LOG=${RUN_DIR}/${RUN_ID}/read/pids.txt
-PROFILE_RUN_RD_PIDS_CSV=${RUN_DIR}/${RUN_ID}/read/pids.csv
-PROFILE_RUN_RD_DISK_LOG=${RUN_DIR}/${RUN_ID}/read/disk.txt
-PROFILE_RUN_RD_DISK_CSV=${RUN_DIR}/${RUN_ID}/read/disk.csv
-
-PROFILE_RUN_RM_DIR=${RUN_DIR}/${RUN_ID}/remove
-PROFILE_RUN_RM_PID=${RUN_DIR}/${RUN_ID}/remove/profile.pid
-PROFILE_RUN_RM_OPROFILE_LOG=${RUN_DIR}/${RUN_ID}/remove/oprofile.txt
-PROFILE_RUN_RM_PIDS_LOG=${RUN_DIR}/${RUN_ID}/remove/pids.txt
-PROFILE_RUN_RM_PIDS_CSV=${RUN_DIR}/${RUN_ID}/remove/pids.csv
-PROFILE_RUN_RM_DISK_LOG=${RUN_DIR}/${RUN_ID}/remove/disk.txt
-PROFILE_RUN_RM_DISK_CSV=${RUN_DIR}/${RUN_ID}/remove/disk.csv
-
-# PROFILE_PIDS_LOG=${RUN_DIR}/${RUN_ID}/pids-summary.csv
-# PROFILE_DISK_LOG=${RUN_DIR}/${RUN_ID}/disk-summary.csv
-EOF
-}
-
-zpios_profile_pre_run_args() {
-cat > ${RUN_DIR}/${RUN_ID}/zpios-args.txt << EOF
-#
-# Zpios Arguments for Run ${RUN_ID}
-#
-
-DIR=${RUN_DIR}
-ID=${RUN_ID}
-POOL=${RUN_POOL}
-CHUNK_SIZE=${RUN_CHUNK_SIZE}
-REGION_SIZE=${RUN_REGION_SIZE}
-THRD_COUNT=${RUN_THRD_COUNT}
-REGION_COUNT=${RUN_REGION_COUNT}
-OFFSET=${RUN_OFFSET}
-REGION_NOISE=${RUN_REGION_NOISE}
-CHUNK_NOISE=${RUN_CHUNK_NOISE}
-THRD_DELAY=${RUN_THRD_DELAY}
-FLAGS=${RUN_FLAGS}
-RESULT=${RUN_RESULT}
-EOF
-}
-
-# Spawn a user defined profiling script to gather additional data
-zpios_profile_pre_start() {
-       local PROFILE_PID=$1
-
-       ${PROFILE_USER} ${RUN_PHASE} ${RUN_DIR} ${RUN_ID} &
-       echo "$!" >${PROFILE_PID}
-
-       # Sleep waiting for profile script to be ready, it will
-       # signal us via SIGHUP when it is ready to start profiling.
-       while [ ${PROFILE_RDY} -eq 0 ]; do
-               sleep 0.01
-       done
-}
-
-zpios_profile_post_proc_start() { 
-
-        if [ -f ${PROFILE_ARC_PROC} ]; then
-                echo 0 >${PROFILE_ARC_PROC}
-        fi
-
-        if [ -f ${PROFILE_VDEV_CACHE_PROC} ]; then
-                echo 0 >${PROFILE_VDEV_CACHE_PROC}
-        fi
-}
-
-zpios_profile_pre_oprofile_start() {
-       local OPROFILE_LOG=$1
-
-       /usr/bin/opcontrol --reset >>${OPROFILE_LOG} 2>&1
-       /usr/bin/opcontrol --start >>${OPROFILE_LOG} 2>&1
-}
-
-zpios_profile_pre_create() {
-       mkdir ${PROFILE_RUN_CR_DIR}
-       zpios_profile_pre_start ${PROFILE_RUN_CR_PID}
-       zpios_profile_post_proc_start
-       zpios_profile_pre_oprofile_start ${PROFILE_RUN_CR_OPROFILE_LOG}
-}
-
-zpios_profile_pre_write() {
-       mkdir ${PROFILE_RUN_WR_DIR}
-       zpios_profile_pre_start ${PROFILE_RUN_WR_PID}
-       zpios_profile_post_proc_start
-       zpios_profile_pre_oprofile_start ${PROFILE_RUN_WR_OPROFILE_LOG}
-}
-
-zpios_profile_pre_read() {
-       mkdir ${PROFILE_RUN_RD_DIR}
-       zpios_profile_pre_start ${PROFILE_RUN_RD_PID}
-       zpios_profile_post_proc_start
-       zpios_profile_pre_oprofile_start ${PROFILE_RUN_CR_RD_LOG}
-}
-
-zpios_profile_pre_remove() {
-       mkdir ${PROFILE_RUN_RM_DIR}
-       zpios_profile_pre_start ${PROFILE_RUN_RM_PID}
-       zpios_profile_post_proc_start
-       zpios_profile_pre_oprofile_start ${PROFILE_RUN_RM_OPROFILE_LOG}
-}
-
-# Source global zpios test configuration
-if [ -f ${RUN_DIR}/zpios-config.sh ]; then
-       . ${RUN_DIR}/zpios-config.sh
-fi
-
-# Source global per-run test configuration
-if [ -f ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh ]; then
-       . ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh
-fi
-
-case "${RUN_PHASE}" in
-       pre-run)
-               mkdir -p ${RUN_DIR}/${RUN_ID}/
-               zpios_profile_pre_run_cfg
-               zpios_profile_pre_run_args
-               ;;
-       pre-create)
-               zpios_profile_pre_create
-               ;;
-       pre-write)
-               zpios_profile_pre_write
-               ;;
-       pre-read)
-               zpios_profile_pre_read
-               ;;
-       pre-remove)
-               zpios_profile_pre_remove
-               ;;
-       *)
-               echo "Usage: ${PROG} {pre-run|pre-create|pre-write|pre-read|pre-remove}"
-               exit 1
-esac
-
-exit 0
diff --git a/scripts/zpios-profile/zpios-profile.sh b/scripts/zpios-profile/zpios-profile.sh
deleted file mode 100755 (executable)
index bd3c9c5..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#!/bin/bash
-
-
-PROG=zpios-profile.sh
-
-trap "RUN_DONE=1" SIGHUP
-
-RUN_PHASE=${1}
-RUN_LOG_DIR=${2}
-RUN_ID=${3}
-RUN_DONE=0
-
-POLL_INTERVAL=2.99
-
-# Log these pids, the exact pid numbers will vary from system to system
-# so I harvest pid for all the following type of processes from /proc/<pid>/
-#
-# zio_taskq/#
-# spa_zio_issue/#
-# spa_zio_intr/#
-# txg_quiesce_thr
-# txg_sync_thread
-# txg_timelimit_t
-# arc_reclaim_thr
-# l2arc_feed_thre
-# zpios_io/#
-
-ZIO_TASKQ_PIDS=()
-ZIO_REQ_NUL_PIDS=() 
-ZIO_IRQ_NUL_PIDS=() 
-ZIO_REQ_RD_PIDS=() 
-ZIO_IRQ_RD_PIDS=() 
-ZIO_REQ_WR_PIDS=() 
-ZIO_IRQ_WR_PIDS=()
-ZIO_REQ_FR_PIDS=() 
-ZIO_IRQ_FR_PIDS=()
-ZIO_REQ_CM_PIDS=() 
-ZIO_IRQ_CM_PIDS=()
-ZIO_REQ_CTL_PIDS=() 
-ZIO_IRQ_CTL_PIDS=()
-
-TXG_QUIESCE_PIDS=()
-TXG_SYNC_PIDS=() 
-TXG_TIMELIMIT_PIDS=()
-
-ARC_RECLAIM_PIDS=()
-L2ARC_FEED_PIDS=()
-
-ZPIOS_IO_PIDS=()
-
-show_pids() {
-       echo "* zio_taskq:     { ${ZIO_TASKQ_PIDS[@]} } = ${#ZIO_TASKQ_PIDS[@]}"
-       echo "* zio_req_nul:   { ${ZIO_REQ_NUL_PIDS[@]} } = ${#ZIO_REQ_NUL_PIDS[@]}"
-       echo "* zio_irq_nul:   { ${ZIO_IRQ_NUL_PIDS[@]} } = ${#ZIO_IRQ_NUL_PIDS[@]}"
-       echo "* zio_req_rd:    { ${ZIO_REQ_RD_PIDS[@]} } = ${#ZIO_REQ_RD_PIDS[@]}"
-       echo "* zio_irq_rd:    { ${ZIO_IRQ_RD_PIDS[@]} } = ${#ZIO_IRQ_RD_PIDS[@]}"
-       echo "* zio_req_wr:    { ${ZIO_REQ_WR_PIDS[@]} } = ${#ZIO_REQ_WR_PIDS[@]}"
-       echo "* zio_irq_wr:    { ${ZIO_IRQ_WR_PIDS[@]} } = ${#ZIO_IRQ_WR_PIDS[@]}"
-       echo "* zio_req_fr:    { ${ZIO_REQ_FR_PIDS[@]} } = ${#ZIO_REQ_FR_PIDS[@]}"
-       echo "* zio_irq_fr:    { ${ZIO_IRQ_FR_PIDS[@]} } = ${#ZIO_IRQ_FR_PIDS[@]}"
-       echo "* zio_req_cm:    { ${ZIO_REQ_CM_PIDS[@]} } = ${#ZIO_REQ_CM_PIDS[@]}"
-       echo "* zio_irq_cm:    { ${ZIO_IRQ_CM_PIDS[@]} } = ${#ZIO_IRQ_CM_PIDS[@]}"
-       echo "* zio_req_ctl:   { ${ZIO_REQ_CTL_PIDS[@]} } = ${#ZIO_REQ_CTL_PIDS[@]}"
-       echo "* zio_irq_ctl:   { ${ZIO_IRQ_CTL_PIDS[@]} } = ${#ZIO_IRQ_CTL_PIDS[@]}"
-       echo "* txg_quiesce:   { ${TXG_QUIESCE_PIDS[@]} } = ${#TXG_QUIESCE_PIDS[@]}"
-       echo "* txg_sync:      { ${TXG_SYNC_PIDS[@]} } = ${#TXG_SYNC_PIDS[@]}"
-       echo "* txg_timelimit: { ${TXG_TIMELIMIT_PIDS[@]} } = ${#TXG_TIMELIMIT_PIDS[@]}"
-       echo "* arc_reclaim:   { ${ARC_RECLAIM_PIDS[@]} } = ${#ARC_RECLAIM_PIDS[@]}"
-       echo "* l2arc_feed:    { ${L2ARC_FEED_PIDS[@]} } = ${#L2ARC_FEED_PIDS[@]}"
-       echo "* zpios_io:      { ${ZPIOS_IO_PIDS[@]} } = ${#ZPIOS_IO_PIDS[@]}"
-}
-
-check_pid() {
-       local PID=$1
-       local NAME=$2
-       local TYPE=$3
-       local PIDS=( "$4" )
-        local NAME_STRING=`echo ${NAME} | cut -f1 -d'/'`
-        local NAME_NUMBER=`echo ${NAME} | cut -f2 -d'/'`
-
-       if [ "${NAME_STRING}" == "${TYPE}" ]; then
-               if [ -n "${NAME_NUMBER}" ]; then
-                       PIDS[${NAME_NUMBER}]=${PID}
-               else
-                       PIDS[${#PIDS[@]}]=${PID}
-
-               fi
-       fi
-
-       echo "${PIDS[@]}"
-}
-
-# NOTE: This whole process is crazy slow but it will do for now
-acquire_pids() {
-       echo "--- Aquiring ZFS pids ---"
-
-       for PID in `ls /proc/ | grep [0-9] | sort -n -u`; do
-               if [ ! -e /proc/${PID}/status ]; then
-                       continue
-               fi
-
-               NAME=`cat /proc/${PID}/status  | head -n1 | cut -f2`
-
-               ZIO_TASKQ_PIDS=( `check_pid ${PID} ${NAME} "zio_taskq" \
-                                "$(echo "${ZIO_TASKQ_PIDS[@]}")"` )
-
-               ZIO_REQ_NUL_PIDS=( `check_pid ${PID} ${NAME} "zio_req_nul" \
-                                  "$(echo "${ZIO_REQ_NUL_PIDS[@]}")"` )
-
-               ZIO_IRQ_NUL_PIDS=( `check_pid ${PID} ${NAME} "zio_irq_nul" \
-                                  "$(echo "${ZIO_IRQ_NUL_PIDS[@]}")"` )
-
-               ZIO_REQ_RD_PIDS=( `check_pid ${PID} ${NAME} "zio_req_rd" \
-                                  "$(echo "${ZIO_REQ_RD_PIDS[@]}")"` )
-
-               ZIO_IRQ_RD_PIDS=( `check_pid ${PID} ${NAME} "zio_irq_rd" \
-                                  "$(echo "${ZIO_IRQ_RD_PIDS[@]}")"` )
-
-               ZIO_REQ_WR_PIDS=( `check_pid ${PID} ${NAME} "zio_req_wr" \
-                                  "$(echo "${ZIO_REQ_WR_PIDS[@]}")"` )
-
-               ZIO_IRQ_WR_PIDS=( `check_pid ${PID} ${NAME} "zio_irq_wr" \
-                                  "$(echo "${ZIO_IRQ_WR_PIDS[@]}")"` )
-
-               ZIO_REQ_FR_PIDS=( `check_pid ${PID} ${NAME} "zio_req_fr" \
-                                  "$(echo "${ZIO_REQ_FR_PIDS[@]}")"` )
-
-               ZIO_IRQ_FR_PIDS=( `check_pid ${PID} ${NAME} "zio_irq_fr" \
-                                  "$(echo "${ZIO_IRQ_FR_PIDS[@]}")"` )
-
-               ZIO_REQ_CM_PIDS=( `check_pid ${PID} ${NAME} "zio_req_cm" \
-                                  "$(echo "${ZIO_REQ_CM_PIDS[@]}")"` )
-
-               ZIO_IRQ_CM_PIDS=( `check_pid ${PID} ${NAME} "zio_irq_cm" \
-                                  "$(echo "${ZIO_IRQ_CM_PIDS[@]}")"` )
-
-               ZIO_REQ_CTL_PIDS=( `check_pid ${PID} ${NAME} "zio_req_ctl" \
-                                  "$(echo "${ZIO_REQ_CTL_PIDS[@]}")"` )
-
-               ZIO_IRQ_CTL_PIDS=( `check_pid ${PID} ${NAME} "zio_irq_ctl" \
-                                  "$(echo "${ZIO_IRQ_CTL_PIDS[@]}")"` )
-
-               TXG_QUIESCE_PIDS=( `check_pid ${PID} ${NAME} "txg_quiesce" \
-                                  "$(echo "${TXG_QUIESCE_PIDS[@]}")"` )
-
-               TXG_SYNC_PIDS=( `check_pid ${PID} ${NAME} "txg_sync" \
-                               "$(echo "${TXG_SYNC_PIDS[@]}")"` )
-
-               TXG_TIMELIMIT_PIDS=( `check_pid ${PID} ${NAME} "txg_timelimit" \
-                                    "$(echo "${TXG_TIMELIMIT_PIDS[@]}")"` )
-
-               ARC_RECLAIM_PIDS=( `check_pid ${PID} ${NAME} "arc_reclaim" \
-                                     "$(echo "${ARC_RECLAIM_PIDS[@]}")"` )
-
-               L2ARC_FEED_PIDS=( `check_pid ${PID} ${NAME} "l2arc_feed" \
-                                  "$(echo "${L2ARC_FEED_PIDS[@]}")"` )
-       done
-
-       # Wait for zpios_io threads to start
-       kill -s SIGHUP ${PPID}
-       echo "* Waiting for zpios_io threads to start"
-       while [ ${RUN_DONE} -eq 0 ]; do
-               ZPIOS_IO_PIDS=( `ps ax | grep zpios_io | grep -v grep | \
-                                 sed 's/^ *//g' | cut -f1 -d' '` )
-               if [ ${#ZPIOS_IO_PIDS[@]} -gt 0 ]; then
-                       break;
-               fi
-               sleep 0.1
-       done
-
-       echo "`show_pids`" >${RUN_LOG_DIR}/${RUN_ID}/pids.txt
-}
-
-log_pids() {
-       echo "--- Logging ZFS profile to ${RUN_LOG_DIR}/${RUN_ID}/ ---"
-       ALL_PIDS=( ${ZIO_TASKQ_PIDS[@]}     \
-                   ${ZIO_REQ_NUL_PIDS[@]}   \
-                   ${ZIO_IRQ_NUL_PIDS[@]}   \
-                   ${ZIO_REQ_RD_PID[@]}     \
-                   ${ZIO_IRQ_RD_PIDS[@]}    \
-                   ${ZIO_REQ_WR_PIDS[@]}    \
-                   ${ZIO_IRQ_WR_PIDS[@]}    \
-                   ${ZIO_REQ_FR_PIDS[@]}    \ 
-                   ${ZIO_IRQ_FR_PIDS[@]}    \
-                   ${ZIO_REQ_CM_PIDS[@]}    \ 
-                   ${ZIO_IRQ_CM_PIDS[@]}    \
-                   ${ZIO_REQ_CTL_PIDS[@]}   \
-                   ${ZIO_IRQ_CTL_PIDS[@]}   \
-                   ${TXG_QUIESCE_PIDS[@]}   \
-                   ${TXG_SYNC_PIDS[@]}      \
-                   ${TXG_TIMELIMIT_PIDS[@]} \
-                   ${ARC_RECLAIM_PIDS[@]}   \
-                   ${L2ARC_FEED_PIDS[@]}    \
-                   ${ZPIOS_IO_PIDS[@]} )
-
-       while [ ${RUN_DONE} -eq 0 ]; do
-               NOW=`date +%s.%N`
-               LOG_PIDS="${RUN_LOG_DIR}/${RUN_ID}/pids-${NOW}"
-               LOG_DISK="${RUN_LOG_DIR}/${RUN_ID}/disk-${NOW}"
-
-               for PID in "${ALL_PIDS[@]}"; do
-                       if [ -z ${PID} ]; then
-                               continue;
-                       fi
-
-                       if [ -e /proc/${PID}/stat ]; then
-                               cat /proc/${PID}/stat | head -n1 >>${LOG_PIDS}
-                       else
-                               echo "<${PID} exited>" >>${LOG_PIDS}
-                       fi
-               done
-
-               cat /proc/diskstats >${LOG_DISK}
-
-               NOW2=`date +%s.%N`
-               DELTA=`echo "${POLL_INTERVAL}-(${NOW2}-${NOW})" | bc`
-               sleep ${DELTA}
-       done
-}
-
-acquire_pids
-log_pids
-
-# rm ${PROFILE_PID}
-
-exit 0
diff --git a/scripts/zpios-sanity.sh b/scripts/zpios-sanity.sh
deleted file mode 100755 (executable)
index 0f44115..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-#!/bin/bash
-#
-# ZFS/ZPOOL configuration test script.
-
-basedir="$(dirname $0)"
-
-SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
-else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
-fi
-
-PROG=zpios-sanity.sh
-HEADER=
-FAILS=0
-
-usage() {
-cat << EOF
-USAGE:
-$0 [hvxfc]
-
-DESCRIPTION:
-        ZPIOS sanity tests
-
-OPTIONS:
-        -h      Show this message
-        -v      Verbose
-        -x      Destructive hd/sd/md/dm/ram tests
-       -f      Don't prompt due to -x
-       -c      Cleanup lo+file devices at start
-
-EOF
-}
-
-while getopts 'hvxfc?' OPTION; do
-       case $OPTION in
-       h)
-               usage
-               exit 1
-               ;;
-       v)
-               VERBOSE=1
-               ;;
-       x)
-               DANGEROUS=1
-               ;;
-       f)
-               FORCE=1
-               ;;
-       c)
-               CLEANUP=1
-               ;;
-       ?)
-               usage
-               exit
-               ;;
-       esac
-done
-
-if [ $(id -u) != 0 ]; then
-       die "Must run as root"
-fi
-
-# Initialize the test suite
-init
-
-# Perform pre-cleanup is requested
-if [ ${CLEANUP} ]; then
-       ${ZFS_SH} -u
-       cleanup_md_devices
-       cleanup_loop_devices
-       rm -f /tmp/zpool.cache.*
-fi
-
-zpios_test() {
-       CONFIG=$1
-       TEST=$2
-       LOG=`mktemp`
-
-       ${ZPIOS_SH} -f -c ${CONFIG} -t ${TEST} &>${LOG}
-       if [ $? -ne 0 ]; then
-               FAILS=1
-
-               if [ ${VERBOSE} ]; then
-                       printf "FAIL:     %-13s\n" ${CONFIG}
-                       cat ${LOG}
-               else
-                       if [ ! ${HEADER} ]; then
-                               head -2 ${LOG}
-                               HEADER=1
-                       fi
-
-                       printf "FAIL:     %-13s" ${CONFIG}
-                       tail -1 ${LOG}
-               fi
-       else
-               if [ ${VERBOSE} ]; then
-                       cat ${LOG}
-               else
-                       if [ ! ${HEADER} ]; then
-                               head -2 ${LOG}
-                               HEADER=1
-                       fi
-
-                       tail -1 ${LOG}
-               fi
-       fi
-
-       rm -f ${LOG}
-}
-
-if [ ${DANGEROUS} ] && [ ! ${FORCE} ]; then
-       cat << EOF
-The -x option was passed which will result in UNRECOVERABLE DATA LOSS
-on on the following block devices:
-
-  /dev/sd[abcd]
-  /dev/hda
-  /dev/ram0
-  /dev/md0
-  /dev/dm-0
-
-To continue please confirm by entering YES:
-EOF
-       read CONFIRM
-       if [ ${CONFIRM} != "YES" ] && [ ${CONFIRM} != "yes" ]; then
-               exit 0;
-       fi
-fi
-
-#
-# These configurations are all safe and pose no risk to any data on
-# the system which runs them.  They will confine all their IO to a
-# file in /tmp or a loopback device configured to use a file in /tmp.
-#
-SAFE_CONFIGS=(                                         \
-       file-raid0 file-raid10 file-raidz file-raidz2   \
-       lo-raid0 lo-raid10 lo-raidz lo-raidz2           \
-)
-
-#
-# These configurations are down right dangerous.  They will attempt
-# to use various real block devices on your system which may contain
-# data you car about.  You are STRONGLY advised not to run this unless
-# you are certain there is no data on the system you care about.
-#
-DANGEROUS_CONFIGS=(                                    \
-       hda-raid0                                       \
-       sda-raid0                                       \
-       ram0-raid0                                      \
-       md0-raid10 md0-raid5                            \
-       dm0-raid0                                       \
-)
-
-TMP_CACHE=`mktemp -p /tmp zpool.cache.XXXXXXXX`
-${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || die "Unable to load modules"
-
-for CONFIG in ${SAFE_CONFIGS[*]}; do
-       zpios_test $CONFIG tiny
-done
-
-if [ ${DANGEROUS} ]; then
-       for CONFIG in ${DANGEROUS_CONFIGS[*]}; do
-               zpios_test $CONFIG tiny
-       done
-fi
-
-${ZFS_SH} -u
-
-exit $FAILS
diff --git a/scripts/zpios-survey.sh b/scripts/zpios-survey.sh
deleted file mode 100755 (executable)
index 7860169..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-#!/bin/bash
-#
-# Wrapper script for easily running a survey of zpios based tests
-#
-
-basedir="$(dirname $0)"
-
-SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
-else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
-fi
-
-PROG=zpios-survey.sh
-
-usage() {
-cat << EOF
-USAGE:
-$0 [hvp] <-c config> <-t test>
-
-DESCRIPTION:
-        Helper script for easy zpios survey benchmarking.
-
-OPTIONS:
-        -h      Show this message
-        -v      Verbose
-        -p      Enable profiling
-        -c      Zpool configuration
-        -t      Zpios test
-        -l      Zpios survey log
-
-EOF
-}
-
-print_header() {
-tee -a ${ZPIOS_SURVEY_LOG} << EOF
-
-================================================================
-Test: $1
-EOF
-}
-
-# Baseline performance for an out of the box config with no manual tuning.
-# Ideally, we want everything to be automatically tuned for your system and
-# for this to perform reasonably well.
-zpios_survey_base() {
-       TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+baseline"
-       print_header ${TEST_NAME}
-
-       ${ZFS_SH} ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZFS_SH} -u ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Disable ZFS's prefetching.  For some reason still not clear to me
-# current prefetching policy is quite bad for a random workload.
-# Allowing the algorithm to detect a random workload and not do 
-# anything may be the way to address this issue.
-zpios_survey_prefetch() {
-       TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+prefetch"
-       print_header ${TEST_NAME}
-
-       ${ZFS_SH} ${VERBOSE_FLAG}               \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
-               -o "--noprefetch" |                                    \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZFS_SH} -u ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Simulating a zerocopy IO path should improve performance by freeing up
-# lots of CPU which is wasted move data between buffers.
-zpios_survey_zerocopy() {
-       TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+zerocopy"
-       print_header ${TEST_NAME}
-
-       ${ZFS_SH} ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
-               -o "--zerocopy" |                                      \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZFS_SH} -u ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Disabling checksumming should show some (if small) improvement
-# simply due to freeing up a modest amount of CPU.
-zpios_survey_checksum() {
-       TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+checksum"
-       print_header ${TEST_NAME}
-
-       ${ZFS_SH} ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
-               -s "set checksum=off" |                                \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZFS_SH} -u ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Increasing the pending IO depth also seems to improve things likely
-# at the expense of latency.  This should be explored more because I'm
-# seeing a much bigger impact there that I would have expected.  There
-# may be some low hanging fruit to be found here.
-zpios_survey_pending() {
-       TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+pending"
-       print_header ${TEST_NAME}
-
-       ${ZFS_SH} ${VERBOSE_FLAG}                  \
-               zfs="zfs_vdev_max_pending=1024" | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZFS_SH} -u ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Apply all possible turning concurrently to get a best case number
-zpios_survey_all() {
-       TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+all"
-       print_header ${TEST_NAME}
-
-       ${ZFS_SH} ${VERBOSE_FLAG}                \  
-               zfs="zfs_vdev_max_pending=1024" | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
-               -o "--noprefetch --zerocopy"                           \
-               -s "set checksum=off" |                                \
-               tee -a ${ZPIOS_SURVEY_LOG}
-       ${ZFS_SH} -u ${VERBOSE_FLAG} | \
-               tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-
-PROFILE=
-ZPOOL_NAME=zpios-survey
-ZPOOL_CONFIG=zpool-config.sh
-ZPIOS_TEST=zpios-test.sh
-ZPIOS_SURVEY_LOG=/dev/null
-
-while getopts 'hvpc:t:l:' OPTION; do
-       case $OPTION in
-       h)
-               usage
-               exit 1
-               ;;
-       v)
-               VERBOSE=1
-               VERBOSE_FLAG="-v"
-               ;;
-       p)
-               PROFILE=1
-               PROFILE_FLAG="-p"
-               ;;
-       c)
-               ZPOOL_CONFIG=${OPTARG}
-               ;;
-       t)
-               ZPIOS_TEST=${OPTARG}
-               ;;
-       l)
-               ZPIOS_SURVEY_LOG=${OPTARG}
-               ;;
-       ?)
-               usage
-               exit
-               ;;
-       esac
-done
-
-if [ $(id -u) != 0 ]; then
-       die "Must run as root"
-fi
-
-zpios_survey_base
-zpios_survey_prefetch
-zpios_survey_zerocopy
-zpios_survey_checksum
-zpios_survey_pending
-zpios_survey_all
-
-exit 0
diff --git a/scripts/zpios-test/16th-8192rc-4rs-1cs-4off.sh b/scripts/zpios-test/16th-8192rc-4rs-1cs-4off.sh
deleted file mode 100755 (executable)
index cbd9c69..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-#
-# Usage: zpios
-#        --threadcount       -t    =values
-#        --threadcount_low   -l    =value
-#        --threadcount_high  -h    =value
-#        --threadcount_incr  -e    =value
-#        --regioncount       -n    =values
-#        --regioncount_low   -i    =value
-#        --regioncount_high  -j    =value
-#        --regioncount_incr  -k    =value
-#        --offset            -o    =values
-#        --offset_low        -m    =value
-#        --offset_high       -q    =value
-#        --offset_incr       -r    =value
-#        --chunksize         -c    =values
-#        --chunksize_low     -a    =value
-#        --chunksize_high    -b    =value
-#        --chunksize_incr    -g    =value
-#        --regionsize        -s    =values
-#        --regionsize_low    -A    =value
-#        --regionsize_high   -B    =value
-#        --regionsize_incr   -C    =value
-#        --load              -L    =dmuio|ssf|fpp
-#        --pool              -p    =pool name
-#        --name              -M    =test name
-#        --cleanup           -x
-#        --prerun            -P    =pre-command
-#        --postrun           -R    =post-command
-#        --log               -G    =log directory
-#        --regionnoise       -I    =shift
-#        --chunknoise        -N    =bytes
-#        --threaddelay       -T    =jiffies
-#        --verify            -V
-#        --zerocopy          -z
-#        --nowait            -O
-#        --human-readable    -H
-#        --verbose           -v    =increase verbosity
-#        --help              -?    =this help
-
-ZPIOS_CMD="${ZPIOS}                                              \
-       --load=dmuio                                             \
-       --pool=${ZPOOL_NAME}                                     \
-       --name=${ZPOOL_CONFIG}                                   \
-       --threadcount=16                                         \
-       --regioncount=8192                                       \
-       --regionsize=4M                                          \
-       --chunksize=1M                                           \
-       --offset=4M                                              \
-       --cleanup                                                \
-       --human-readable                                         \
-       ${ZPIOS_OPTIONS}"
-
-zpios_start() {
-       if [ ${VERBOSE} ]; then
-               ZPIOS_CMD="${ZPIOS_CMD} --verbose"
-               echo ${ZPIOS_CMD}
-       fi
-
-       ${ZPIOS_CMD} || exit 1
-}
-
-zpios_stop() {
-       [ ${VERBOSE} ] && echo
-}
diff --git a/scripts/zpios-test/1th-16rc-4rs-1cs-4off.sh b/scripts/zpios-test/1th-16rc-4rs-1cs-4off.sh
deleted file mode 100755 (executable)
index cd3c50b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash
-#
-# Usage: zpios
-#        --threadcount       -t    =values
-#        --threadcount_low   -l    =value
-#        --threadcount_high  -h    =value
-#        --threadcount_incr  -e    =value
-#        --regioncount       -n    =values
-#        --regioncount_low   -i    =value
-#        --regioncount_high  -j    =value
-#        --regioncount_incr  -k    =value
-#        --offset            -o    =values
-#        --offset_low        -m    =value
-#        --offset_high       -q    =value
-#        --offset_incr       -r    =value
-#        --chunksize         -c    =values
-#        --chunksize_low     -a    =value
-#        --chunksize_high    -b    =value
-#        --chunksize_incr    -g    =value
-#        --regionsize        -s    =values
-#        --regionsize_low    -A    =value
-#        --regionsize_high   -B    =value
-#        --regionsize_incr   -C    =value
-#        --load              -L    =dmuio|ssf|fpp
-#        --pool              -p    =pool name
-#        --name              -M    =test name
-#        --cleanup           -x
-#        --prerun            -P    =pre-command
-#        --postrun           -R    =post-command
-#        --log               -G    =log directory
-#        --regionnoise       -I    =shift
-#        --chunknoise        -N    =bytes
-#        --threaddelay       -T    =jiffies
-#        --verify            -V
-#        --zerocopy          -z
-#        --nowait            -O
-#        --human-readable    -H
-#        --verbose           -v    =increase verbosity
-#        --help              -?    =this help
-
-
-ZPIOS_CMD="${ZPIOS}                                              \
-       --load=dmuio                                             \
-       --pool=${ZPOOL_NAME}                                     \
-       --name=${ZPOOL_CONFIG}                                   \
-       --threadcount=1                                          \
-       --regioncount=16                                         \
-       --regionsize=4M                                          \
-       --chunksize=1M                                           \
-       --offset=4M                                              \
-       --cleanup                                                \
-       --human-readable                                         \
-       ${ZPIOS_OPTIONS}"
-
-zpios_start() {
-       if [ ${VERBOSE} ]; then
-               ZPIOS_CMD="${ZPIOS_CMD} --verbose"
-               echo ${ZPIOS_CMD}
-       fi
-
-       ${ZPIOS_CMD} || exit 1
-}
-
-zpios_stop() {
-       [ ${VERBOSE} ] && echo
-}
diff --git a/scripts/zpios-test/1x256th-65536rc-4rs-1cs-4off.sh b/scripts/zpios-test/1x256th-65536rc-4rs-1cs-4off.sh
deleted file mode 100755 (executable)
index 743e97b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-#
-# Usage: zpios
-#        --threadcount       -t    =values
-#        --threadcount_low   -l    =value
-#        --threadcount_high  -h    =value
-#        --threadcount_incr  -e    =value
-#        --regioncount       -n    =values
-#        --regioncount_low   -i    =value
-#        --regioncount_high  -j    =value
-#        --regioncount_incr  -k    =value
-#        --offset            -o    =values
-#        --offset_low        -m    =value
-#        --offset_high       -q    =value
-#        --offset_incr       -r    =value
-#        --chunksize         -c    =values
-#        --chunksize_low     -a    =value
-#        --chunksize_high    -b    =value
-#        --chunksize_incr    -g    =value
-#        --regionsize        -s    =values
-#        --regionsize_low    -A    =value
-#        --regionsize_high   -B    =value
-#        --regionsize_incr   -C    =value
-#        --load              -L    =dmuio|ssf|fpp
-#        --pool              -p    =pool name
-#        --name              -M    =test name
-#        --cleanup           -x
-#        --prerun            -P    =pre-command
-#        --postrun           -R    =post-command
-#        --log               -G    =log directory
-#        --regionnoise       -I    =shift
-#        --chunknoise        -N    =bytes
-#        --threaddelay       -T    =jiffies
-#        --verify            -V
-#        --zerocopy          -z
-#        --nowait            -O
-#        --human-readable    -H
-#        --verbose           -v    =increase verbosity
-#        --help              -?    =this help
-
-ZPIOS_CMD="${ZPIOS}                                              \
-       --load=dmuio                                             \
-       --pool=${ZPOOL_NAME}                                     \
-       --name=${ZPOOL_CONFIG}                                   \
-       --threadcount=1,2,4,8,16,32,64,128,256                   \
-       --regioncount=65536                                      \
-       --regionsize=4M                                          \
-       --chunksize=1M                                           \
-       --offset=4M                                              \
-        --cleanup                                                \
-       --human-readable                                         \
-       ${ZPIOS_OPTIONS}"
-
-zpios_start() {
-       if [ ${VERBOSE} ]; then
-               ZPIOS_CMD="${ZPIOS_CMD} --verbose"
-               echo ${ZPIOS_CMD}
-       fi
-
-       ${ZPIOS_CMD} || exit 1
-}
-
-zpios_stop() {
-       [ ${VERBOSE} ] && echo
-}
diff --git a/scripts/zpios-test/256th-65536rc-4rs-1cs-4off.sh b/scripts/zpios-test/256th-65536rc-4rs-1cs-4off.sh
deleted file mode 100755 (executable)
index 92a3b77..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-#
-# Usage: zpios
-#        --threadcount       -t    =values
-#        --threadcount_low   -l    =value
-#        --threadcount_high  -h    =value
-#        --threadcount_incr  -e    =value
-#        --regioncount       -n    =values
-#        --regioncount_low   -i    =value
-#        --regioncount_high  -j    =value
-#        --regioncount_incr  -k    =value
-#        --offset            -o    =values
-#        --offset_low        -m    =value
-#        --offset_high       -q    =value
-#        --offset_incr       -r    =value
-#        --chunksize         -c    =values
-#        --chunksize_low     -a    =value
-#        --chunksize_high    -b    =value
-#        --chunksize_incr    -g    =value
-#        --regionsize        -s    =values
-#        --regionsize_low    -A    =value
-#        --regionsize_high   -B    =value
-#        --regionsize_incr   -C    =value
-#        --load              -L    =dmuio|ssf|fpp
-#        --pool              -p    =pool name
-#        --name              -M    =test name
-#        --cleanup           -x
-#        --prerun            -P    =pre-command
-#        --postrun           -R    =post-command
-#        --log               -G    =log directory
-#        --regionnoise       -I    =shift
-#        --chunknoise        -N    =bytes
-#        --threaddelay       -T    =jiffies
-#        --verify            -V
-#        --zerocopy          -z
-#        --nowait            -O
-#        --human-readable    -H
-#        --verbose           -v    =increase verbosity
-#        --help              -?    =this help
-
-ZPIOS_CMD="${ZPIOS}                                              \
-       --load=dmuio                                             \
-       --pool=${ZPOOL_NAME}                                     \
-       --name=${ZPOOL_CONFIG}                                   \
-       --threadcount=256                                        \
-       --regioncount=65536                                      \
-       --regionsize=4M                                          \
-       --chunksize=1M                                           \
-       --offset=4M                                              \
-        --cleanup                                                \
-       --human-readable                                         \
-       ${ZPIOS_OPTIONS}"
-
-zpios_start() {
-       if [ ${VERBOSE} ]; then
-               ZPIOS_CMD="${ZPIOS_CMD} --verbose"
-               echo ${ZPIOS_CMD}
-       fi
-
-       ${ZPIOS_CMD} || exit 1
-}
-
-zpios_stop() {
-       [ ${VERBOSE} ] && echo
-}
diff --git a/scripts/zpios-test/4th-1024rc-4rs-1cs-4off.sh b/scripts/zpios-test/4th-1024rc-4rs-1cs-4off.sh
deleted file mode 100755 (executable)
index 0db952c..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-#
-# Usage: zpios
-#        --threadcount       -t    =values
-#        --threadcount_low   -l    =value
-#        --threadcount_high  -h    =value
-#        --threadcount_incr  -e    =value
-#        --regioncount       -n    =values
-#        --regioncount_low   -i    =value
-#        --regioncount_high  -j    =value
-#        --regioncount_incr  -k    =value
-#        --offset            -o    =values
-#        --offset_low        -m    =value
-#        --offset_high       -q    =value
-#        --offset_incr       -r    =value
-#        --chunksize         -c    =values
-#        --chunksize_low     -a    =value
-#        --chunksize_high    -b    =value
-#        --chunksize_incr    -g    =value
-#        --regionsize        -s    =values
-#        --regionsize_low    -A    =value
-#        --regionsize_high   -B    =value
-#        --regionsize_incr   -C    =value
-#        --load              -L    =dmuio|ssf|fpp
-#        --pool              -p    =pool name
-#        --name              -M    =test name
-#        --cleanup           -x
-#        --prerun            -P    =pre-command
-#        --postrun           -R    =post-command
-#        --log               -G    =log directory
-#        --regionnoise       -I    =shift
-#        --chunknoise        -N    =bytes
-#        --threaddelay       -T    =jiffies
-#        --verify            -V
-#        --zerocopy          -z
-#        --nowait            -O
-#        --human-readable    -H
-#        --verbose           -v    =increase verbosity
-#        --help              -?    =this help
-
-ZPIOS_CMD="${ZPIOS}                                              \
-       --load=dmuio                                             \
-       --pool=${ZPOOL_NAME}                                     \
-       --name=${ZPOOL_CONFIG}                                   \
-       --threadcount=4                                          \
-       --regioncount=1024                                       \
-       --regionsize=4M                                          \
-       --chunksize=1M                                           \
-       --offset=4M                                              \
-       --cleanup                                                \
-       --human-readable                                         \
-       ${ZPIOS_OPTIONS}"
-
-zpios_start() {
-       if [ ${VERBOSE} ]; then
-               ZPIOS_CMD="${ZPIOS_CMD} --verbose"
-               echo ${ZPIOS_CMD}
-       fi
-
-       ${ZPIOS_CMD} || exit 1
-}
-
-zpios_stop() {
-       [ ${VERBOSE} ] && echo
-}
diff --git a/scripts/zpios-test/Makefile.am b/scripts/zpios-test/Makefile.am
deleted file mode 100644 (file)
index c74e24f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-pkgdatatestdir = $(pkgdatadir)/zpios-test
-dist_pkgdatatest_SCRIPTS = \
-       $(top_srcdir)/scripts/zpios-test/16th-8192rc-4rs-1cs-4off.sh \
-       $(top_srcdir)/scripts/zpios-test/1th-16rc-4rs-1cs-4off.sh \
-       $(top_srcdir)/scripts/zpios-test/1x256th-65536rc-4rs-1cs-4off.sh \
-       $(top_srcdir)/scripts/zpios-test/256th-65536rc-4rs-1cs-4off.sh \
-       $(top_srcdir)/scripts/zpios-test/4th-1024rc-4rs-1cs-4off.sh \
-       $(top_srcdir)/scripts/zpios-test/large.sh \
-       $(top_srcdir)/scripts/zpios-test/large-thread-survey.sh \
-       $(top_srcdir)/scripts/zpios-test/medium.sh \
-       $(top_srcdir)/scripts/zpios-test/small.sh \
-       $(top_srcdir)/scripts/zpios-test/tiny.sh \
-       $(top_srcdir)/scripts/zpios-test/lustre.sh
diff --git a/scripts/zpios-test/large-thread-survey.sh b/scripts/zpios-test/large-thread-survey.sh
deleted file mode 120000 (symlink)
index 90b6e3c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1x256th-65536rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/large.sh b/scripts/zpios-test/large.sh
deleted file mode 120000 (symlink)
index b8e22bf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-256th-65536rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/lustre.sh b/scripts/zpios-test/lustre.sh
deleted file mode 100644 (file)
index e02df22..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash
-#
-# Usage: zpios
-#        --threadcount       -t    =values
-#        --threadcount_low   -l    =value
-#        --threadcount_high  -h    =value
-#        --threadcount_incr  -e    =value
-#        --regioncount       -n    =values
-#        --regioncount_low   -i    =value
-#        --regioncount_high  -j    =value
-#        --regioncount_incr  -k    =value
-#        --offset            -o    =values
-#        --offset_low        -m    =value
-#        --offset_high       -q    =value
-#        --offset_incr       -r    =value
-#        --chunksize         -c    =values
-#        --chunksize_low     -a    =value
-#        --chunksize_high    -b    =value
-#        --chunksize_incr    -g    =value
-#        --regionsize        -s    =values
-#        --regionsize_low    -A    =value
-#        --regionsize_high   -B    =value
-#        --regionsize_incr   -C    =value
-#        --load              -L    =dmuio|ssf|fpp
-#        --pool              -p    =pool name
-#        --name              -M    =test name
-#        --cleanup           -x
-#        --prerun            -P    =pre-command
-#        --postrun           -R    =post-command
-#        --log               -G    =log directory
-#        --regionnoise       -I    =shift
-#        --chunknoise        -N    =bytes
-#        --threaddelay       -T    =jiffies
-#        --verify            -V
-#        --zerocopy          -z
-#        --nowait            -O
-#        --human-readable    -H
-#        --verbose           -v    =increase verbosity
-#        --help              -?    =this help
-
-ZPIOS_CMD="${ZPIOS}                                              \
-       --load=dmuio,fpp                                         \
-       --pool=${ZPOOL_NAME}                                     \
-       --name=${ZPOOL_DESC}                                     \
-       --threadcount=128                                        \
-       --regioncount=4096                                       \
-       --regionsize=16M                                         \
-       --chunksize=1M                                           \
-       --offset=0M                                              \
-       --threaddelay=0                                          \
-       --cleanup                                                \
-       --human-readable                                         \
-       ${ZPIOS_OPTIONS}"
-
-zpios_start() {
-       if [ ${VERBOSE} ]; then
-               ZPIOS_CMD="${ZPIOS_CMD} --verbose"
-               echo ${ZPIOS_CMD}
-       fi
-
-       ${ZPIOS_CMD} || exit 1
-}
-
-zpios_stop() {
-       [ ${VERBOSE} ] && echo
-}
diff --git a/scripts/zpios-test/medium.sh b/scripts/zpios-test/medium.sh
deleted file mode 120000 (symlink)
index d81027b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-16th-8192rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/small.sh b/scripts/zpios-test/small.sh
deleted file mode 120000 (symlink)
index cbf03b5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4th-1024rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/tiny.sh b/scripts/zpios-test/tiny.sh
deleted file mode 120000 (symlink)
index ba8b7cd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1th-16rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios.sh b/scripts/zpios.sh
deleted file mode 100755 (executable)
index 0fcb88d..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-#!/bin/bash
-#
-# Wrapper script for easily running zpios based tests
-#
-
-basedir="$(dirname $0)"
-
-SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
-else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
-fi
-
-PROG=zpios.sh
-DATE=`date +%Y%m%d-%H%M%S`
-if [ "${ZPIOS_MODULES}" ]; then
-       MODULES=(${ZPIOS_MODULES[*]})
-else
-       MODULES=(zpios)
-fi
-
-usage() {
-cat << EOF
-USAGE:
-$0 [hvp] <-c config> <-t test>
-
-DESCRIPTION:
-        Helper script for easy zpios benchmarking.
-
-OPTIONS:
-        -h      Show this message
-        -v      Verbose
-        -f      Force everything
-        -p      Enable profiling
-        -c      Zpool configuration
-        -t      Zpios test
-        -o      Additional zpios options
-        -l      Additional zpool options
-        -s      Additional zfs options
-
-EOF
-}
-
-unload_die() {
-       unload_modules
-       while [ -c /dev/zpios ]; do
-               sleep 1
-       done
-
-       exit 1
-}
-
-print_header() {
-       echo --------------------- ZPIOS RESULTS ----------------------------
-       echo -n "Date: "; date
-       echo -n "Kernel: "; uname -r
-       dmesg | grep "Loaded Solaris Porting Layer" | tail -n1
-       dmesg | grep "Loaded ZFS Filesystem" | tail -n1
-       echo
-}
-
-print_spl_info() {
-       echo --------------------- SPL Tunings ------------------------------
-       ${SYSCTL} -A | grep spl
-
-       if [ -d /sys/module/spl/parameters ]; then
-               grep [0-9] /sys/module/spl/parameters/*
-       else
-               grep [0-9] /sys/module/spl/*
-       fi
-
-       echo
-}
-
-print_zfs_info() {
-       echo --------------------- ZFS Tunings ------------------------------
-       ${SYSCTL} -A | grep zfs
-
-       if [ -d /sys/module/zfs/parameters ]; then
-               grep [0-9] /sys/module/zfs/parameters/*
-       else
-               grep [0-9] /sys/module/zfs/*
-       fi
-
-       echo
-}
-
-print_stats() {
-       echo ---------------------- Statistics -------------------------------
-       ${SYSCTL} -A | grep spl | grep stack_max
-
-       if [ -d /proc/spl/kstat/ ]; then
-               if [ -f /proc/spl/kstat/zfs/arcstats ]; then
-                       echo "* ARC"
-                       cat /proc/spl/kstat/zfs/arcstats
-                       echo
-               fi
-
-               if [ -f /proc/spl/kstat/zfs/vdev_cache_stats ]; then
-                       echo "* VDEV Cache"
-                       cat /proc/spl/kstat/zfs/vdev_cache_stats
-                       echo
-               fi
-       fi
-
-       if [ -f /proc/spl/kmem/slab ]; then
-               echo "* SPL SLAB"
-               cat /proc/spl/kmem/slab
-               echo
-       fi
-
-       echo
-}
-
-check_test() {
-
-       if [ ! -f ${ZPIOS_TEST} ]; then
-               local NAME=`basename ${ZPIOS_TEST} .sh`
-               ERROR="Unknown test '${NAME}', available tests are:\n"
-
-               for TST in `ls ${ZPIOSDIR}/ | grep ".sh"`; do
-                       local NAME=`basename ${TST} .sh`
-                       ERROR="${ERROR}${NAME}\n"
-               done
-
-               return 1
-       fi
-
-       return 0
-}
-
-zpios_profile_config() {
-cat > ${PROFILE_DIR}/zpios-config.sh << EOF
-#
-# Zpios Profiling Configuration
-#
-
-PROFILE_DIR=/tmp/zpios/${ZPOOL_CONFIG}+${ZPIOS_TEST_ARG}+${DATE}
-PROFILE_PRE=${ZPIOSPROFILEDIR}/zpios-profile-pre.sh
-PROFILE_POST=${ZPIOSPROFILEDIR}/zpios-profile-post.sh
-PROFILE_USER=${ZPIOSPROFILEDIR}/zpios-profile.sh
-PROFILE_PIDS=${ZPIOSPROFILEDIR}/zpios-profile-pids.sh
-PROFILE_DISK=${ZPIOSPROFILEDIR}/zpios-profile-disk.sh
-PROFILE_ARC_PROC=/proc/spl/kstat/zfs/arcstats
-PROFILE_VDEV_CACHE_PROC=/proc/spl/kstat/zfs/vdev_cache_stats
-
-OPROFILE_KERNEL="/boot/vmlinux-`uname -r`"
-OPROFILE_KERNEL_DIR="/lib/modules/`uname -r`/kernel/"
-OPROFILE_SPL_DIR=${SPLBUILD}/module/
-OPROFILE_ZFS_DIR=${MODDIR}
-
-EOF
-}
-
-zpios_profile_start() {
-       PROFILE_DIR=/tmp/zpios/${ZPOOL_CONFIG}+${ZPIOS_TEST_ARG}+${DATE}
-
-       mkdir -p ${PROFILE_DIR}
-       zpios_profile_config
-       . ${PROFILE_DIR}/zpios-config.sh
-
-       ZPIOS_OPTIONS="${ZPIOS_OPTIONS} --log=${PROFILE_DIR}"
-       ZPIOS_OPTIONS="${ZPIOS_OPTIONS} --prerun=${PROFILE_PRE}"
-       ZPIOS_OPTIONS="${ZPIOS_OPTIONS} --postrun=${PROFILE_POST}"
-
-       /usr/bin/opcontrol --init
-       /usr/bin/opcontrol --setup --vmlinux=${OPROFILE_KERNEL}
-}
-
-zpios_profile_stop() {
-       /usr/bin/opcontrol --shutdown
-       /usr/bin/opcontrol --deinit
-}
-
-PROFILE=
-ZPOOL_CONFIG=zpool-config.sh
-ZPIOS_TEST=zpios-test.sh
-ZPOOL_NAME=zpios
-ZPIOS_OPTIONS=
-ZPOOL_OPTIONS=""
-ZFS_OPTIONS=""
-
-while getopts 'hvfpc:t:o:l:s:' OPTION; do
-       case $OPTION in
-       h)
-               usage
-               exit 1
-               ;;
-       v)
-               VERBOSE=1
-               VERBOSE_FLAG="-v"
-               ;;
-       f)
-               FORCE=1
-               FORCE_FLAG="-f"
-               ;;
-       p)
-               PROFILE=1
-               ;;
-       c)
-               ZPOOL_CONFIG=${OPTARG}
-               ;;
-       t)
-               ZPIOS_TEST_ARG=${OPTARG}
-               ZPIOS_TEST=${ZPIOSDIR}/${OPTARG}.sh
-               ;;
-       o)
-               ZPIOS_OPTIONS=${OPTARG}
-               ;;
-       l)      # Passed through to zpool-create.sh 
-               ZPOOL_OPTIONS=${OPTARG}
-               ;;
-       s)      # Passed through to zpool-create.sh
-               ZFS_OPTIONS=${OPTARG}
-               ;;
-       ?)
-               usage
-               exit
-               ;;
-       esac
-done
-
-if [ $(id -u) != 0 ]; then
-        die "Must run as root"
-fi
-
-# Validate and source your test config
-check_test || die "${ERROR}"
-. ${ZPIOS_TEST}
-
-# Pull in the zpios test module if not loaded.  If this fails, it is
-# likely because the full module stack was not yet loaded with zfs.sh
-if check_modules; then
-       if ! load_modules; then
-               die "Run 'zfs.sh' to ensure the full module stack is loaded"
-       fi
-fi
-
-# Wait for device creation
-while [ ! -c /dev/zpios ]; do
-       sleep 1
-done
-
-if [ ${VERBOSE} ]; then
-       print_header
-       print_spl_info
-       print_zfs_info
-fi
-
-# Create the zpool configuration
-${ZPOOL_CREATE_SH} ${VERBOSE_FLAG} ${FORCE_FLAG} \
-       -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} \
-       -l "${ZPOOL_OPTIONS}" -s "${ZFS_OPTIONS}" || unload_die
-
-if [ ${PROFILE} ]; then
-       zpios_profile_start
-fi
-
-zpios_start
-zpios_stop
-
-if [ ${PROFILE} ]; then
-       zpios_profile_stop
-fi
-
-if [ ${VERBOSE} ]; then
-       print_stats
-fi
-
-# Destroy the zpool configuration
-${ZPOOL_CREATE_SH} ${VERBOSE_FLAG} ${FORCE_FLAG} \
-       -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} -d || unload_die
-
-# Unload the test module stack and wait for device removal
-unload_modules
-while [ -c /dev/zpios ]; do
-       sleep 1
-done
-
-exit 0
diff --git a/scripts/zpool-config/Makefile.am b/scripts/zpool-config/Makefile.am
deleted file mode 100644 (file)
index 2d77994..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-pkgdataconfigdir = $(pkgdatadir)/zpool-config
-dist_pkgdataconfig_SCRIPTS = \
-       $(top_srcdir)/scripts/zpool-config/dm0-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/file-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/file-raid10.sh \
-       $(top_srcdir)/scripts/zpool-config/file-raidz2.sh \
-       $(top_srcdir)/scripts/zpool-config/file-raidz.sh \
-       $(top_srcdir)/scripts/zpool-config/hda-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-raid10.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-raidz2.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-raidz.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-faulty-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-faulty-raid10.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-faulty-raidz.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-faulty-raidz2.sh \
-       $(top_srcdir)/scripts/zpool-config/lo-faulty-raidz3.sh \
-       $(top_srcdir)/scripts/zpool-config/md0-raid10.sh \
-       $(top_srcdir)/scripts/zpool-config/md0-raid5.sh \
-       $(top_srcdir)/scripts/zpool-config/ram0-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/scsi_debug-noraid.sh \
-       $(top_srcdir)/scripts/zpool-config/scsi_debug-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/scsi_debug-raid10.sh \
-       $(top_srcdir)/scripts/zpool-config/scsi_debug-raidz.sh \
-       $(top_srcdir)/scripts/zpool-config/scsi_debug-raidz2.sh \
-       $(top_srcdir)/scripts/zpool-config/scsi_debug-raidz3.sh \
-       $(top_srcdir)/scripts/zpool-config/sda-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/zpool-raid0.sh \
-       $(top_srcdir)/scripts/zpool-config/zpool-raid10.sh \
-       $(top_srcdir)/scripts/zpool-config/zpool-raidz.sh
diff --git a/scripts/zpool-config/dm0-raid0.sh b/scripts/zpool-config/dm0-raid0.sh
deleted file mode 100644 (file)
index f7fa8f6..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/bash
-#
-# Four disk Raid-0 DM in a single Raid-0 Configuration
-#
-
-PVCREATE=${PVCREATE:-/sbin/pvcreate}
-PVREMOVE=${PVREMOVE:-/sbin/pvremove}
-PVDEVICES=${PVDEVICES:-"/dev/sd[abcd]"}
-
-VGCREATE=${VGCREATE:-/sbin/vgcreate}
-VGREMOVE=${VGREMOVE:-/sbin/vgremove}
-VGNAME=${VGNAME:-"vg_tank"}
-
-LVCREATE=${LVCREATE:-/sbin/lvcreate}
-LVREMOVE=${LVREMOVE:-/sbin/lvremove}
-LVNAME=${LVNAME:-"lv_tank"}
-LVSTRIPES=${LVSTRIPES:-4}
-LVSIZE=${LVSIZE:-32G}
-
-DEVICES="/dev/${VGNAME}/${LVNAME}"
-
-zpool_dm_destroy() {
-       msg ${LVREMOVE} -f ${VGNAME}/${LVNAME}
-       ${LVREMOVE} -f ${VGNAME}/${LVNAME} >/dev/null
-
-       msg ${VGREMOVE} -f ${VGNAME}
-       ${VGREMOVE} -f ${VGNAME} >/dev/null
-
-       msg ${PVREMOVE} ${PVDEVICES}
-       ${PVREMOVE} ${PVDEVICES} >/dev/null
-}
-
-zpool_create() {
-       # Remove EFI labels which cause pvcreate failure
-       for DEVICE in ${PVDEVICES}; do
-               dd if=/dev/urandom of=${DEVICE} bs=1k count=32 &>/dev/null
-       done
-
-       msg ${PVCREATE} -f ${PVDEVICES}
-       ${PVCREATE} -f ${PVDEVICES} >/dev/null || exit 1
-
-       msg ${VGCREATE} ${VGNAME} ${PVDEVICES}
-       ${VGCREATE} ${VGNAME} ${PVDEVICES} >/dev/null || exit 2
-
-       msg ${LVCREATE} --size=${LVSIZE} --stripes=${LVSTRIPES} \
-               --name=${LVNAME} ${VGNAME}
-       ${LVCREATE} --size=${LVSIZE} --stripes=${LVSTRIPES} \
-               --name=${LVNAME} ${VGNAME} >/dev/null || exit 3
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               ${DEVICES} || (zpool_dm_destroy && exit 4)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       zpool_dm_destroy
-}
diff --git a/scripts/zpool-config/file-raid0.sh b/scripts/zpool-config/file-raid0.sh
deleted file mode 100644 (file)
index 24b6aec..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-#
-# 4 File Raid-0 Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-
-zpool_create() {
-       for FILE in ${FILES}; do
-               msg "Creating ${FILE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${FILES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${FILES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               msg "Removing ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/file-raid10.sh b/scripts/zpool-config/file-raid10.sh
deleted file mode 100644 (file)
index 92b22c2..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-#
-# 4 File Raid-10 Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES_M1=${FILES_M1:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1"}
-FILES_M2=${FILES_M2:-"$FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-FILES="${FILES_M1} ${FILES_M2}"
-
-zpool_create() {
-       for FILE in ${FILES}; do
-               msg "Creating ${FILE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               mirror ${FILES_M1} mirror ${FILES_M2}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               mirror ${FILES_M1} mirror ${FILES_M2} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               msg "Removing ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/file-raidz.sh b/scripts/zpool-config/file-raidz.sh
deleted file mode 100644 (file)
index 4112deb..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-#
-# 4 File Raid-Z Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-
-zpool_create() {
-       for FILE in ${FILES}; do
-               msg "Creating ${FILE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${FILES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${FILES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               msg "Removing ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/file-raidz2.sh b/scripts/zpool-config/file-raidz2.sh
deleted file mode 100644 (file)
index 6e03da8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-#
-# 4 File Raid-Z2 Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-
-zpool_create() {
-       for FILE in ${FILES}; do
-               msg "Creating ${FILE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${FILES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${FILES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               msg "Removing ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/hda-raid0.sh b/scripts/zpool-config/hda-raid0.sh
deleted file mode 100644 (file)
index 0623963..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-#
-# Single disk /dev/hda Raid-0 Configuration
-#
-
-DEVICES="/dev/hda"
-
-zpool_create() {
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME} || exit 1
-}
diff --git a/scripts/zpool-config/lo-faulty-raid0.sh b/scripts/zpool-config/lo-faulty-raid0.sh
deleted file mode 100644 (file)
index 72894ee..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-#
-# 4 loopback devices using the md faulty level for easy
-# fault injection on top of which is layered raid0 (striped).
-#
-#     zpool-vdev0    zpool-vdev1    zpool-vdev2    zpool-vdev3
-#     loop0          loop1          loop2          loop3
-#     md0 (faulty)   md1 (faulty)   md2 (faulty)   md3 (faulty)
-#     <--------------------- raid0 zpool --------------------->
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-LODEVICES=""
-MDDEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_md_utils
-       check_md_partitionable || die "Error non-partitionable md devices"
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-               MDDEVICE=`unused_md_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1M count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || \
-                       die "Error $? creating ${LODEVICE} using ${FILE}"
-
-               LODEVICES="${LODEVICES} ${LODEVICE}"
-
-               # Setup the md device on the loopback device.
-               msg "Creating ${MDDEVICE} using ${LODEVICE}"
-               ${MDADM} --build ${MDDEVICE} --level=faulty                  \
-                       --raid-devices=1 ${LODEVICE} &>/dev/null ||          \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error $? creating ${MDDEVICE} using ${LODEVICE}")
-               wait_udev ${MDDEVICE} 30 ||                                  \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error udev never created ${MDDEVICE}")
-
-               # Check if the md device support partitions
-               ${BLOCKDEV} --rereadpt ${MDDEVICE} 2>/dev/null ||            \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error ${MDDEVICE} does not support partitions")
-
-               # Create a GPT/EFI partition table for ZFS to use.
-               ${PARTED} --script ${MDDEVICE} mklabel gpt
-               MDDEVICES="${MDDEVICES} ${MDDEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${MDDEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${MDDEVICES} ||          \
-               (destroy_md_devices "${MDDEVICES}" &&                        \
-               destroy_loop_devices "${LODEVICES}" && exit 1)
-
-       echo "$LODEVICES" >/tmp/zpool-lo.txt
-       echo "$MDDEVICES" >/tmp/zpool-md.txt
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-       destroy_md_devices "`cat /tmp/zpool-md.txt`"
-       destroy_loop_devices "`cat /tmp/zpool-lo.txt`"
-
-       rm -f /tmp/zpool-md.txt /tmp/zpool-lo.txt
-}
diff --git a/scripts/zpool-config/lo-faulty-raid10.sh b/scripts/zpool-config/lo-faulty-raid10.sh
deleted file mode 100644 (file)
index 1a523ec..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/bash
-#
-# 4 loopback devices using the md faulty level for easy
-# fault injection on top of which is layered raid10 (mirrored).
-#
-#     zpool-vdev0    zpool-vdev1    zpool-vdev2    zpool-vdev3
-#     loop0          loop1          loop2          loop3
-#     md0 (faulty)   md1 (faulty)   md2 (faulty)   md3 (faulty)
-#     <--------------------- raid10 zpool --------------------->
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES_M1=${FILES_M1:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1"}
-FILES_M2=${FILES_M2:-"$FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-FILES="${FILES_M1} ${FILES_M2}"
-LODEVICES=""
-MDDEVICES=""
-MDDEVICES_M1=""
-MDDEVICES_M2=""
-
-zpool_create() {
-       local COUNT=0
-
-       check_loop_utils
-       check_md_utils
-       check_md_partitionable || die "Error non-partitionable md devices"
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-               MDDEVICE=`unused_md_device`
-               let COUNT=${COUNT}+1
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1M count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || \
-                       die "Error $? creating ${LODEVICE} using ${FILE}"
-
-               LODEVICES="${LODEVICES} ${LODEVICE}"
-
-               # Setup the md device on the loopback device.
-               msg "Creating ${MDDEVICE} using ${LODEVICE}"
-               ${MDADM} --build ${MDDEVICE} --level=faulty                  \
-                       --raid-devices=1 ${LODEVICE} &>/dev/null ||          \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error $? creating ${MDDEVICE} using ${LODEVICE}")
-               wait_udev ${MDDEVICE} 30 ||                                  \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error udev never created ${MDDEVICE}")
-
-               # Create empty GPT/EFI partition table.
-               ${PARTED} --script ${MDDEVICE} mklabel gpt
-               MDDEVICES="${MDDEVICES} ${MDDEVICE}"
-               if [ $((COUNT % 2)) -eq 0 ]; then
-                       MDDEVICES_M2="${MDDEVICES_M2} ${MDDEVICE}"
-               else
-                       MDDEVICES_M1="${MDDEVICES_M1} ${MDDEVICE}"
-               fi 
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME}                      \
-               mirror ${MDDEVICES_M1} mirror ${MDDEVICES_M2}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME}                          \
-               mirror ${MDDEVICES_M1} mirror ${MDDEVICES_M2} ||             \
-               (destroy_md_devices "${MDDEVICES}" &&                        \
-               destroy_loop_devices "${LODEVICES}" && exit 1)
-
-       echo "$LODEVICES" >/tmp/zpool-lo.txt
-       echo "$MDDEVICES" >/tmp/zpool-md.txt
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-       destroy_md_devices "`cat /tmp/zpool-md.txt`"
-       destroy_loop_devices "`cat /tmp/zpool-lo.txt`"
-
-       rm -f /tmp/zpool-md.txt /tmp/zpool-lo.txt
-}
diff --git a/scripts/zpool-config/lo-faulty-raidz.sh b/scripts/zpool-config/lo-faulty-raidz.sh
deleted file mode 100644 (file)
index c8f88b3..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-#
-# 4 loopback devices using the md faulty level for easy
-# fault injection on top of which is layered raidz.
-#
-#     zpool-vdev0    zpool-vdev1    zpool-vdev2    zpool-vdev3
-#     loop0          loop1          loop2          loop3
-#     md0 (faulty)   md1 (faulty)   md2 (faulty)   md3 (faulty)
-#     <--------------------- raidz zpool --------------------->
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-LODEVICES=""
-MDDEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_md_utils
-       check_md_partitionable || die "Error non-partitionable md devices"
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-               MDDEVICE=`unused_md_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1M count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || \
-                       die "Error $? creating ${LODEVICE} using ${FILE}"
-
-               LODEVICES="${LODEVICES} ${LODEVICE}"
-
-               # Setup the md device on the loopback device.
-               msg "Creating ${MDDEVICE} using ${LODEVICE}"
-               ${MDADM} --build ${MDDEVICE} --level=faulty                  \
-                       --raid-devices=1 ${LODEVICE} &>/dev/null ||          \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error $? creating ${MDDEVICE} using ${LODEVICE}")
-               wait_udev ${MDDEVICE} 30 ||                                  \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error udev never created ${MDDEVICE}")
-
-               # Create empty GPT/EFI partition table.
-               ${PARTED} --script ${MDDEVICE} mklabel gpt
-               MDDEVICES="${MDDEVICES} ${MDDEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${MDDEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${MDDEVICES} ||    \
-               (destroy_md_devices "${MDDEVICES}" &&                        \
-               destroy_loop_devices "${LODEVICES}" && exit 1)
-
-       echo "$LODEVICES" >/tmp/zpool-lo.txt
-       echo "$MDDEVICES" >/tmp/zpool-md.txt
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-       destroy_md_devices "`cat /tmp/zpool-md.txt`"
-       destroy_loop_devices "`cat /tmp/zpool-lo.txt`"
-
-       rm -f /tmp/zpool-md.txt /tmp/zpool-lo.txt
-}
diff --git a/scripts/zpool-config/lo-faulty-raidz2.sh b/scripts/zpool-config/lo-faulty-raidz2.sh
deleted file mode 100644 (file)
index 85b7d46..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-#
-# 4 loopback devices using the md faulty level for easy
-# fault injection on top of which is layered raidz2.
-#
-#     zpool-vdev0    zpool-vdev1    zpool-vdev2    zpool-vdev3
-#     loop0          loop1          loop2          loop3
-#     md0 (faulty)   md1 (faulty)   md2 (faulty)   md3 (faulty)
-#     <--------------------- raidz2 zpool -------------------->
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-LODEVICES=""
-MDDEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_md_utils
-       check_md_partitionable || die "Error non-partitionable md devices"
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-               MDDEVICE=`unused_md_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1M count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || \
-                       die "Error $? creating ${LODEVICE} using ${FILE}"
-
-               LODEVICES="${LODEVICES} ${LODEVICE}"
-
-               # Setup the md device on the loopback device.
-               msg "Creating ${MDDEVICE} using ${LODEVICE}"
-               ${MDADM} --build ${MDDEVICE} --level=faulty                  \
-                       --raid-devices=1 ${LODEVICE} &>/dev/null ||          \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error $? creating ${MDDEVICE} using ${LODEVICE}")
-               wait_udev ${MDDEVICE} 30 ||                                  \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error udev never created ${MDDEVICE}")
-
-               # Create empty GPT/EFI partition table.
-               ${PARTED} --script ${MDDEVICE} mklabel gpt
-               MDDEVICES="${MDDEVICES} ${MDDEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${MDDEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${MDDEVICES} ||   \
-               (destroy_md_devices "${MDDEVICES}" &&                        \
-               destroy_loop_devices "${LODEVICES}" && exit 1)
-
-       echo "$LODEVICES" >/tmp/zpool-lo.txt
-       echo "$MDDEVICES" >/tmp/zpool-md.txt
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-       destroy_md_devices "`cat /tmp/zpool-md.txt`"
-       destroy_loop_devices "`cat /tmp/zpool-lo.txt`"
-
-       rm -f /tmp/zpool-md.txt /tmp/zpool-lo.txt
-}
diff --git a/scripts/zpool-config/lo-faulty-raidz3.sh b/scripts/zpool-config/lo-faulty-raidz3.sh
deleted file mode 100644 (file)
index 7836b5f..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/bash
-#
-# 4 loopback devices using the md faulty level for easy
-# fault injection on top of which is layered raidz3.
-#
-#     zpool-vdev0    zpool-vdev1    zpool-vdev2    zpool-vdev3
-#     loop0          loop1          loop2          loop3
-#     md0 (faulty)   md1 (faulty)   md2 (faulty)   md3 (faulty)
-#     <--------------------- raidz3 zpool -------------------->
-#
-
-FILES="/tmp/zpool-vdev0  \
-       /tmp/zpool-vdev1  \
-       /tmp/zpool-vdev2  \
-       /tmp/zpool-vdev3"
-LODEVICES=""
-MDDEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_md_utils
-       check_md_partitionable || die "Error non-partitionable md devices"
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-               MDDEVICE=`unused_md_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1M count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || \
-                       die "Error $? creating ${LODEVICE} using ${FILE}"
-
-               LODEVICES="${LODEVICES} ${LODEVICE}"
-
-               # Setup the md device on the loopback device.
-               msg "Creating ${MDDEVICE} using ${LODEVICE}"
-               ${MDADM} --build ${MDDEVICE} --level=faulty                  \
-                       --raid-devices=1 ${LODEVICE} &>/dev/null ||          \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error $? creating ${MDDEVICE} using ${LODEVICE}")
-               wait_udev ${MDDEVICE} 30 ||                                  \
-                       (destroy_md_devices "${MDDEVICES}" &&                \
-                       destroy_loop_devices "${LODEVICES}" &&               \
-                       die "Error udev never created ${MDDEVICE}")
-
-               # Create empty GPT/EFI partition table.
-               ${PARTED} --script ${MDDEVICE} mklabel gpt
-               MDDEVICES="${MDDEVICES} ${MDDEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz3 ${MDDEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz3 ${MDDEVICES} ||   \
-               (destroy_md_devices "${MDDEVICES}" &&                        \
-               destroy_loop_devices "${LODEVICES}" && exit 1)
-
-       echo "$LODEVICES" >/tmp/zpool-lo.txt
-       echo "$MDDEVICES" >/tmp/zpool-md.txt
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-       destroy_md_devices "`cat /tmp/zpool-md.txt`"
-       destroy_loop_devices "`cat /tmp/zpool-lo.txt`"
-
-       rm -f /tmp/zpool-md.txt /tmp/zpool-lo.txt
-}
diff --git a/scripts/zpool-config/lo-raid0.sh b/scripts/zpool-config/lo-raid0.sh
deleted file mode 100644 (file)
index 3f2cfe5..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-#
-# 4 Device Loopback Raid-0 Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-
-       for FILE in ${FILES}; do
-               DEVICE=`unused_loop_device`
-               msg "Creating ${FILE} using loopback device ${DEVICE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-               ${LOSETUP} ${DEVICE} ${FILE} ||
-                       die "Error $? creating ${FILE} -> ${DEVICE} loopback"
-               DEVICES="${DEVICES} ${DEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       # Delay to ensure device is closed before removing loop device
-       sleep 1
-
-       for FILE in ${FILES}; do
-               DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${FILE} using loopback device ${DEVICE}"
-               ${LOSETUP} -d ${DEVICE} ||
-                       die "Error $? destroying ${FILE} -> ${DEVICE} loopback"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/lo-raid10.sh b/scripts/zpool-config/lo-raid10.sh
deleted file mode 100644 (file)
index 580ed1f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-#
-# 4 Device Loopback Raid-0 Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES_M1=${FILES_M1:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1"}
-FILES_M2=${FILES_M2:-"$FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-FILES="${FILES_M1} ${FILES_M2}"
-DEVICES_M1=""
-DEVICES_M2=""
-
-zpool_create() {
-       check_loop_utils
-
-       for FILE in ${FILES_M1}; do
-               DEVICE=`unused_loop_device`
-               msg "Creating ${FILE} using loopback device ${DEVICE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-               ${LOSETUP} ${DEVICE} ${FILE} ||
-                       die "Error $? creating ${FILE} -> ${DEVICE} loopback"
-               DEVICES_M1="${DEVICES_M1} ${DEVICE}"
-       done
-
-       for FILE in ${FILES_M2}; do
-               DEVICE=`unused_loop_device`
-               msg "Creating ${FILE} using loopback device ${DEVICE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-               ${LOSETUP} ${DEVICE} ${FILE} ||
-                       die "Error $? creating ${FILE} -> ${DEVICE} loopback"
-               DEVICES_M2="${DEVICES_M2} ${DEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               mirror ${DEVICES_M1} mirror ${DEVICES_M2}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               mirror ${DEVICES_M1} mirror ${DEVICES_M2}
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       # Delay to ensure device is closed before removing loop device
-       sleep 1
-
-       for FILE in ${FILES}; do
-               DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${FILE} using loopback device ${DEVICE}"
-               ${LOSETUP} -d ${DEVICE} ||
-                       die "Error $? destroying ${FILE} -> ${DEVICE} loopback"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/lo-raidz.sh b/scripts/zpool-config/lo-raidz.sh
deleted file mode 100644 (file)
index 90b26c5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-#
-# 4 Device Loopback Raid-0 Configuration
-#
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-
-       for FILE in ${FILES}; do
-               DEVICE=`unused_loop_device`
-               msg "Creating ${FILE} using loopback device ${DEVICE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-               ${LOSETUP} ${DEVICE} ${FILE} ||
-                       die "Error $? creating ${FILE} -> ${DEVICE} loopback"
-               DEVICES="${DEVICES} ${DEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       # Delay to ensure device is closed before removing loop device
-       sleep 1
-
-       for FILE in ${FILES}; do
-               DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${FILE} using loopback device ${DEVICE}"
-               ${LOSETUP} -d ${DEVICE} ||
-                       die "Error $? destroying ${FILE} -> ${DEVICE} loopback"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/lo-raidz2.sh b/scripts/zpool-config/lo-raidz2.sh
deleted file mode 100644 (file)
index 9e58b2a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-#
-# 4 Device Loopback Raid-0 Configuration
-#
-
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \
-    $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"}
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-
-       for FILE in ${FILES}; do
-               DEVICE=`unused_loop_device`
-               msg "Creating ${FILE} using loopback device ${DEVICE}"
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
-                       &>/dev/null || die "Error $? creating ${FILE}"
-               ${LOSETUP} ${DEVICE} ${FILE} ||
-                       die "Error $? creating ${FILE} -> ${DEVICE} loopback"
-               DEVICES="${DEVICES} ${DEVICE}"
-       done
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       # Delay to ensure device is closed before removing loop device
-       sleep 1
-
-       for FILE in ${FILES}; do
-               DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${FILE} using loopback device ${DEVICE}"
-               ${LOSETUP} -d ${DEVICE} ||
-                       die "Error $? destroying ${FILE} -> ${DEVICE} loopback"
-               rm -f ${FILE} || exit 1
-       done
-}
diff --git a/scripts/zpool-config/md0-raid10.sh b/scripts/zpool-config/md0-raid10.sh
deleted file mode 100644 (file)
index 65cae6a..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-#
-# Four disk Raid-10 in a single Raid-0 Configuration
-#
-
-MDADM=${MDADM:-/sbin/mdadm}
-MDDEVICES=${MDDEVICES:-"/dev/sd[abcd]"}
-MDCOUNT=${MDCOUNT:-4}
-MDRAID=${MDRAID:-10}
-
-DEVICES="/dev/md0"
-
-zpool_md_destroy() {
-       msg ${MDADM} --manage --stop ${DEVICES}
-       ${MDADM} --manage --stop ${DEVICES} &>/dev/null
-
-       msg ${MDADM} --zero-superblock ${MDDEVICES}
-       ${MDADM} --zero-superblock ${MDDEVICES} >/dev/null
-}
-
-zpool_create() {
-       msg ${MDADM} --create ${DEVICES} --level=${MDRAID} \
-               --raid-devices=${MDCOUNT} ${MDDEVICES}
-       ${MDADM} --create ${DEVICES} --level=${MDRAID} \
-               --raid-devices=${MDCOUNT} ${MDDEVICES} \
-               &>/dev/null || (zpool_md_destroy && exit 1)
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               ${DEVICES} || (zpool_md_destroy && exit 2)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       zpool_md_destroy
-}
diff --git a/scripts/zpool-config/md0-raid5.sh b/scripts/zpool-config/md0-raid5.sh
deleted file mode 100644 (file)
index 373034b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-#
-# Four disk Raid-5 in a single Raid-0 Configuration
-#
-
-MDADM=${MDADM:-/sbin/mdadm}
-MDDEVICES=${MDDEVICES:-"/dev/sd[abcd]"}
-MDCOUNT=${MDCOUNT:-4}
-MDRAID=${MDRAID:-5}
-
-DEVICES="/dev/md0"
-
-zpool_md_destroy() {
-       msg ${MDADM} --manage --stop ${DEVICES}
-       ${MDADM} --manage --stop ${DEVICES} &>/dev/null
-
-       msg ${MDADM} --zero-superblock ${MDDEVICES}
-       ${MDADM} --zero-superblock ${MDDEVICES} >/dev/null
-}
-
-zpool_create() {
-       msg ${MDADM} --create ${DEVICES} --level=${MDRAID} \
-               --raid-devices=${MDCOUNT} ${MDDEVICES}
-       ${MDADM} --create ${DEVICES} --level=${MDRAID} \
-               --raid-devices=${MDCOUNT} ${MDDEVICES} \
-               &>/dev/null || (zpool_md_destroy && exit 1)
-
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} \
-               ${DEVICES} || (zpool_md_destroy && exit 2)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       zpool_md_destroy
-}
diff --git a/scripts/zpool-config/ram0-raid0.sh b/scripts/zpool-config/ram0-raid0.sh
deleted file mode 100644 (file)
index 801c912..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-#
-# Single ram disk /dev/ram0 Raid-0 Configuration
-#
-
-DEVICES="/dev/ram0"
-
-zpool_create() {
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME} || exit 1
-}
diff --git a/scripts/zpool-config/scsi_debug-noraid.sh b/scripts/zpool-config/scsi_debug-noraid.sh
deleted file mode 100644 (file)
index c508ffb..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash
-#
-# 1 scsi_debug devices on top of which is layered no raid.
-#
-
-SDSIZE=${SDSIZE:-128}
-SDHOSTS=${SDHOSTS:-1}
-SDTGTS=${SDTGTS:-1}
-SDLUNS=${SDLUNS:-1}
-LDMOD=/sbin/modprobe
-
-zpool_create() {
-       check_sd_utils
-
-       test `${LSMOD} | grep -c scsi_debug` -gt 0 && \
-               (echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
-               ${RMMOD} scsi_debug || exit 1)
-       udev_trigger
-
-       msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
-               "add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
-               "max_luns=${SDLUNS}"
-       ${LDMOD} scsi_debug                                                  \
-               dev_size_mb=${SDSIZE}                                        \
-               add_host=${SDHOSTS}                                          \
-               num_tgts=${SDTGTS}                                           \
-               max_luns=${SDLUNS} ||                                        \
-               die "Error $? creating scsi_debug devices"
-       udev_trigger
-       SDDEVICE=`${LSSCSI}|${AWK} '/scsi_debug/ { print $6; exit }'`
-
-       msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
-       ${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
-               (${RMMOD} scsi_debug && die "Error $? creating gpt label")
-
-       msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${SDDEVICE}"
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${SDDEVICE} ||           \
-               (${RMMOD} scsi_debug && exit 1)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-       msg "${RMMOD} scsi_debug"
-       ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
-}
diff --git a/scripts/zpool-config/scsi_debug-raid0.sh b/scripts/zpool-config/scsi_debug-raid0.sh
deleted file mode 100644 (file)
index 6672085..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-#
-# 1 scsi_debug device for fault injection and 3 loopback devices
-# on top of which is layered raid0 (striped).
-#
-
-SDSIZE=${SDSIZE:-256}
-SDHOSTS=${SDHOSTS:-1}
-SDTGTS=${SDTGTS:-1}
-SDLUNS=${SDLUNS:-1}
-LDMOD=/sbin/modprobe
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"}
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_sd_utils
-
-       test `${LSMOD} | grep -c scsi_debug` -gt 0 &&                        \
-               (echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
-               ${RMMOD} scsi_debug || exit 1)
-       udev_trigger
-
-       msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
-               "add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
-               "max_luns=${SDLUNS}"
-       ${LDMOD} scsi_debug                                                  \
-               dev_size_mb=${SDSIZE}                                        \
-               add_host=${SDHOSTS}                                          \
-               num_tgts=${SDTGTS}                                           \
-               max_luns=${SDLUNS} ||                                        \
-               die "Error $? creating scsi_debug devices"
-       udev_trigger
-
-       SDDEVICE=`${LSSCSI} | ${AWK} '/scsi_debug/ { print $6; exit }'`
-       msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
-       ${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
-               (${RMMOD} scsi_debug && die "Error $? creating gpt label")
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256         \
-                       &>/dev/null || (${RMMOD} scsi_debug &&               \
-                       die "Error $? creating ${FILE}")
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug       \
-                       die "Error $? creating ${LODEVICE} using ${FILE}")
-
-               DEVICES="${DEVICES} ${LODEVICE}"
-       done
-
-       DEVICES="${DEVICES} ${SDDEVICE}"
-
-       msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}"
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES} ||            \
-               (${RMMOD} scsi_debug && exit 1)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${LODEVICE} using ${FILE}"
-               ${LOSETUP} -d ${LODEVICE} ||
-                       die "Error $? destroying ${LODEVICE} using ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-
-       msg "${RMMOD} scsi_debug"
-       ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
-}
diff --git a/scripts/zpool-config/scsi_debug-raid10.sh b/scripts/zpool-config/scsi_debug-raid10.sh
deleted file mode 100644 (file)
index caff1a0..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-#
-# 1 scsi_debug device for fault injection and 3 loopback devices
-# on top of which is layered raid10 (mirrored).
-#
-
-SDSIZE=${SDSIZE:-256}
-SDHOSTS=${SDHOSTS:-1}
-SDTGTS=${SDTGTS:-1}
-SDLUNS=${SDLUNS:-1}
-LDMOD=/sbin/modprobe
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"}
-DEVICES_M1=""
-DEVICES_M2=""
-
-zpool_create() {
-       local COUNT=0
-
-       check_loop_utils
-       check_sd_utils
-
-       test `${LSMOD} | grep -c scsi_debug` -gt 0 &&                        \
-               (echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
-               ${RMMOD} scsi_debug || exit 1)
-       udev_trigger
-
-       msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
-               "add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
-               "max_luns=${SDLUNS}"
-       ${LDMOD} scsi_debug                                                  \
-               dev_size_mb=${SDSIZE}                                        \
-               add_host=${SDHOSTS}                                          \
-               num_tgts=${SDTGTS}                                           \
-               max_luns=${SDLUNS} ||                                        \
-               die "Error $? creating scsi_debug devices"
-       udev_trigger
-       SDDEVICE=`${LSSCSI}|${AWK} '/scsi_debug/ { print $6; exit }'`
-       msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
-       ${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
-               (${RMMOD} scsi_debug && die "Error $? creating gpt label")
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256         \
-                       &>/dev/null || (${RMMOD} scsi_debug &&               \
-                       die "Error $? creating ${FILE}")
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug       \
-                       die "Error $? creating ${LODEVICE} using ${FILE}")
-
-               DEVICES="${DEVICES} ${LODEVICE}"
-       done
-
-        DEVICES="${DEVICES} ${SDDEVICE}"
-
-        for DEVICE in ${DEVICES}; do
-               let COUNT=${COUNT}+1
-
-               if [ $((COUNT % 2)) -eq 0 ]; then
-                       DEVICES_M2="${DEVICES_M2} ${DEVICE}"
-               else
-                       DEVICES_M1="${DEVICES_M1} ${DEVICE}"
-               fi
-       done
-
-       msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} "                   \
-               "mirror ${DEVICES_M1} mirror ${DEVICES_M2}"
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME}                          \
-               mirror ${DEVICES_M1} mirror ${DEVICES_M2} ||                 \
-               (${RMMOD} scsi_debug && exit 1)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${LODEVICE} using ${FILE}"
-               ${LOSETUP} -d ${LODEVICE} ||
-                       die "Error $? destroying ${LODEVICE} using ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-
-       msg "${RMMOD} scsi_debug"
-       ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
-}
diff --git a/scripts/zpool-config/scsi_debug-raidz.sh b/scripts/zpool-config/scsi_debug-raidz.sh
deleted file mode 100644 (file)
index bc22d10..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-#
-# 1 scsi_debug device for fault injection and 3 loopback devices
-# on top of which is layered raidz.
-#
-
-SDSIZE=${SDSIZE:-256}
-SDHOSTS=${SDHOSTS:-1}
-SDTGTS=${SDTGTS:-1}
-SDLUNS=${SDLUNS:-1}
-LDMOD=/sbin/modprobe
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"}
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_sd_utils
-
-       test `${LSMOD} | grep -c scsi_debug` -gt 0 &&                        \
-               (echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
-               ${RMMOD} scsi_debug || exit 1)
-       udev_trigger
-
-       msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
-               "add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
-               "max_luns=${SDLUNS}"
-       ${LDMOD} scsi_debug                                                  \
-               dev_size_mb=${SDSIZE}                                        \
-               add_host=${SDHOSTS}                                          \
-               num_tgts=${SDTGTS}                                           \
-               max_luns=${SDLUNS} ||                                        \
-               die "Error $? creating scsi_debug devices"
-       udev_trigger
-
-       SDDEVICE=`${LSSCSI} | ${AWK} '/scsi_debug/ { print $6; exit }'`
-       msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
-       ${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
-               (${RMMOD} scsi_debug && die "Error $? creating gpt label")
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256         \
-                       &>/dev/null || (${RMMOD} scsi_debug &&               \
-                       die "Error $? creating ${FILE}")
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug       \
-                       die "Error $? creating ${LODEVICE} using ${FILE}")
-
-               DEVICES="${DEVICES} ${LODEVICE}"
-       done
-
-       DEVICES="${DEVICES} ${SDDEVICE}"
-
-       msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${DEVICES}"
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz ${DEVICES} ||      \
-               (${RMMOD} scsi_debug && exit 1)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${LODEVICE} using ${FILE}"
-               ${LOSETUP} -d ${LODEVICE} ||
-                       die "Error $? destroying ${LODEVICE} using ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-
-       msg "${RMMOD} scsi_debug"
-       ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
-}
diff --git a/scripts/zpool-config/scsi_debug-raidz2.sh b/scripts/zpool-config/scsi_debug-raidz2.sh
deleted file mode 100644 (file)
index 67a6f24..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-#
-# 1 scsi_debug device for fault injection and 3 loopback devices
-# on top of which is layered raidz2.
-#
-
-SDSIZE=${SDSIZE:-256}
-SDHOSTS=${SDHOSTS:-1}
-SDTGTS=${SDTGTS:-1}
-SDLUNS=${SDLUNS:-1}
-LDMOD=/sbin/modprobe
-FILEDIR=${FILEDIR:-/var/tmp}
-FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"}
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_sd_utils
-
-       test `${LSMOD} | grep -c scsi_debug` -gt 0 &&                        \
-               (echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
-               ${RMMOD} scsi_debug || exit 1)
-       udev_trigger
-
-       msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
-               "add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
-               "max_luns=${SDLUNS}"
-       ${LDMOD} scsi_debug                                                  \
-               dev_size_mb=${SDSIZE}                                        \
-               add_host=${SDHOSTS}                                          \
-               num_tgts=${SDTGTS}                                           \
-               max_luns=${SDLUNS} ||                                        \
-               die "Error $? creating scsi_debug devices"
-       udev_trigger
-
-       SDDEVICE=`${LSSCSI} | ${AWK} '/scsi_debug/ { print $6; exit }'`
-       msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
-       ${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
-               (${RMMOD} scsi_debug && die "Error $? creating gpt label")
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256         \
-                       &>/dev/null || (${RMMOD} scsi_debug &&               \
-                       die "Error $? creating ${FILE}")
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug       \
-                       die "Error $? creating ${LODEVICE} using ${FILE}")
-
-               DEVICES="${DEVICES} ${LODEVICE}"
-       done
-
-       DEVICES="${DEVICES} ${SDDEVICE}"
-
-       msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${DEVICES}"
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${DEVICES} ||     \
-               (${RMMOD} scsi_debug && exit 1)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${LODEVICE} using ${FILE}"
-               ${LOSETUP} -d ${LODEVICE} ||
-                       die "Error $? destroying ${LODEVICE} using ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-
-       msg "${RMMOD} scsi_debug"
-       ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
-}
diff --git a/scripts/zpool-config/scsi_debug-raidz3.sh b/scripts/zpool-config/scsi_debug-raidz3.sh
deleted file mode 100644 (file)
index d7ef209..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash
-#
-# 1 scsi_debug device for fault injection and 3 loopback devices
-# on top of which is layered raidz3.
-#
-
-SDSIZE=${SDSIZE:-256}
-SDHOSTS=${SDHOSTS:-1}
-SDTGTS=${SDTGTS:-1}
-SDLUNS=${SDLUNS:-1}
-LDMOD=/sbin/modprobe
-FILES="/tmp/zpool-vdev0  \
-       /tmp/zpool-vdev1  \
-       /tmp/zpool-vdev2"
-DEVICES=""
-
-zpool_create() {
-       check_loop_utils
-       check_sd_utils
-
-       test `${LSMOD} | grep -c scsi_debug` -gt 0 &&                        \
-               (echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
-               ${RMMOD} scsi_debug || exit 1)
-       udev_trigger
-
-       msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
-               "add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
-               "max_luns=${SDLUNS}"
-       ${LDMOD} scsi_debug                                                  \
-               dev_size_mb=${SDSIZE}                                        \
-               add_host=${SDHOSTS}                                          \
-               num_tgts=${SDTGTS}                                           \
-               max_luns=${SDLUNS} ||                                        \
-               die "Error $? creating scsi_debug devices"
-       udev_trigger
-
-       SDDEVICE=`${LSSCSI} | ${AWK} '/scsi_debug/ { print $6; exit }'`
-       msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
-       ${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
-               (${RMMOD} scsi_debug && die "Error $? creating gpt label")
-
-       for FILE in ${FILES}; do
-               LODEVICE=`unused_loop_device`
-
-               rm -f ${FILE} || exit 1
-               dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256         \
-                       &>/dev/null || (${RMMOD} scsi_debug &&               \
-                       die "Error $? creating ${FILE}")
-
-               # Setup the loopback device on the file.
-               msg "Creating ${LODEVICE} using ${FILE}"
-               ${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug       \
-                       die "Error $? creating ${LODEVICE} using ${FILE}")
-
-               DEVICES="${DEVICES} ${LODEVICE}"
-       done
-
-       DEVICES="${DEVICES} ${SDDEVICE}"
-
-       msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz3 ${DEVICES}"
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz3 ${DEVICES} ||     \
-               (${RMMOD} scsi_debug && exit 1)
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-
-       for FILE in ${FILES}; do
-               LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
-               msg "Removing ${LODEVICE} using ${FILE}"
-               ${LOSETUP} -d ${LODEVICE} ||
-                       die "Error $? destroying ${LODEVICE} using ${FILE}"
-               rm -f ${FILE} || exit 1
-       done
-
-       msg "${RMMOD} scsi_debug"
-       ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
-}
diff --git a/scripts/zpool-config/sda-raid0.sh b/scripts/zpool-config/sda-raid0.sh
deleted file mode 100644 (file)
index 48dc96d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-#
-# Single disk /dev/sda Raid-0 Configuration
-#
-
-DEVICES="/dev/sda"
-
-zpool_create() {
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME} || exit 1
-}
diff --git a/scripts/zpool-config/zpool-raid0.sh b/scripts/zpool-config/zpool-raid0.sh
deleted file mode 100644 (file)
index c757755..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-#
-# Zpool Raid-0 Configuration
-#
-# This script is used to test with the /dev/disk/by-vdev/[A-Z][1-n] devices.
-# It assumes that you have already populated /dev/disk/by-vdev/ by creating
-# an /etc/zfs/vdev_id.conf file based on your system design.
-#
-# You can then use either the zpool-create.sh or the zpios.sh test script to
-# test various Raid-0 configurations by adjusting the following tunables.
-# For example if you wanted to create and test a single 4-disk Raid-0
-# configuration using disks [A-D]1 with dedicated ZIL and L2ARC devices
-# you could run the following.
-#
-# ZIL="log A2" L2ARC="cache B2" RANKS=1 CHANNELS=4 \
-# zpool-create.sh -c zpool-raid0
-#
-# zpool status tank
-#   pool: tank
-#  state: ONLINE
-#  scan: none requested
-# config:
-# 
-#      NAME        STATE     READ WRITE CKSUM
-#      tank        ONLINE       0     0     0
-#        A1        ONLINE       0     0     0
-#        B1        ONLINE       0     0     0
-#        C1        ONLINE       0     0     0
-#        D1        ONLINE       0     0     0
-#      logs
-#        A2        ONLINE       0     0     0
-#      cache
-#        B2        ONLINE       0     0     0
-#
-# errors: No known data errors
-# 
-
-# Number of interior vdevs to create using the following rank ids.
-RANKS=${RANKS:-1}
-RANK_LIST=( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )
-
-# Number of devices per vdev using the following channel ids.
-CHANNELS=${CHANNELS:-8}
-CHANNEL_LIST=( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z )
-
-# Create a ZIL vdev as follows.
-ZIL=${ZIL:-}
-
-# Create an L2ARC vdev as follows.
-L2ARC=${L2ARC:-}
-
-
-raid0_setup() {
-        local RANKS=$1
-        local CHANNELS=$2
-
-        RAID0S=()
-       for (( i=0, k=0; i<${RANKS}; i++ )); do
-               RANK=${RANK_LIST[$i]}
-
-               for (( j=0; j<${CHANNELS}; j++, k++ )); do
-                        RAID0S[${k}]="${CHANNEL_LIST[$j]}${RANK}"
-                done
-        done
-
-        return 0
-}
-
-zpool_create() {
-        raid0_setup ${RANKS} ${CHANNELS}
-
-       ZPOOL_DEVICES="${RAID0S[*]} ${ZIL} ${L2ARC}"
-        msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES}
-        ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES} || exit 1
-}
-
-zpool_destroy() {
-        msg ${ZPOOL} destroy ${ZPOOL_NAME}
-        ${ZPOOL} destroy ${ZPOOL_NAME}
-}
diff --git a/scripts/zpool-config/zpool-raid10.sh b/scripts/zpool-config/zpool-raid10.sh
deleted file mode 100644 (file)
index d71c4d3..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/bash
-#
-# Zpool Raid-10 Configuration
-#
-# This script is used to test with the /dev/disk/by-vdev/[A-Z][1-n] devices.
-# It assumes that you have already populated /dev/disk/by-vdev/ by creating
-# an /etc/zfs/vdev_id.conf file based on your system design.
-#
-# You can then use either the zpool-create.sh or the zpios.sh test script to
-# test various Raid-10 configurations by adjusting the following tunables.
-# For example if you wanted to create and test a single 4-disk Raid-10
-# configuration using disks [A-D]1 with dedicated ZIL and L2ARC devices
-# you could run the following.
-#
-# ZIL="log A2" L2ARC="cache B2" RANKS=1 CHANNELS=4 \
-# zpool-create.sh -c zpool-raid10
-#
-# zpool status tank
-#   pool: tank
-#  state: ONLINE
-#  scan: none requested
-# config:
-# 
-#      NAME        STATE     READ WRITE CKSUM
-#      tank        ONLINE       0     0     0
-#        mirror-0  ONLINE       0     0     0
-#          A1      ONLINE       0     0     0
-#          B1      ONLINE       0     0     0
-#        mirror-1  ONLINE       0     0     0
-#          C1      ONLINE       0     0     0
-#          D1      ONLINE       0     0     0
-#      logs
-#        A2        ONLINE       0     0     0
-#      cache
-#        B2        ONLINE       0     0     0
-#
-# errors: No known data errors
-#
-
-# Number of interior vdevs to create using the following rank ids.
-RANKS=${RANKS:-1}
-RANK_LIST=( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )
-
-# Number of devices per vdev using the following channel ids.
-CHANNELS=${CHANNELS:-8}
-CHANNEL_LIST=( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z )
-
-# Create a ZIL vdev as follows.
-ZIL=${ZIL:-}
-
-# Create an L2ARC vdev as follows.
-L2ARC=${L2ARC:-}
-
-
-raid10_setup() {
-       local RANKS=$1
-       local CHANNELS=$2
-       local IDX=0
-
-       RAID10S=()
-       for (( i=0, l=0 ; i<${RANKS}; i++ )); do
-               RANK=${RANK_LIST[$i]}
-
-               for (( j=0, k=1; j<${CHANNELS}; j+=2,k+=2,l++ )); do
-                       DISK1="${CHANNEL_LIST[$j]}${RANK}"
-                       DISK2="${CHANNEL_LIST[$k]}${RANK}"
-                       RAID10S[$l]="mirror ${DISK1} ${DISK2}"
-               done
-       done
-
-       return 0
-}
-
-zpool_create() {
-       raid10_setup ${RANKS} ${CHANNELS}
-
-       ZPOOL_DEVICES="${RAID10S[*]} ${ZIL} ${L2ARC}"
-       msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES}
-       ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES} || exit 1
-}
-
-zpool_destroy() {
-       msg ${ZPOOL} destroy ${ZPOOL_NAME}
-       ${ZPOOL} destroy ${ZPOOL_NAME}
-}
diff --git a/scripts/zpool-config/zpool-raidz.sh b/scripts/zpool-config/zpool-raidz.sh
deleted file mode 100644 (file)
index b3f21a0..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/bash
-#
-# Zpool Raid-Z Configuration
-#
-# This script is used to test with the /dev/disk/by-vdev/[A-Z][1-n] devices.
-# It assumes that you have already populated /dev/disk/by-vdev/ by creating
-# an /etc/zfs/vdev_id.conf file based on your system design.
-#
-# You can then use either the zpool-create.sh or the zpios.sh test script to
-# test various Raid-Z configurations by adjusting the following tunables.
-# For example if you wanted to create and test a single 4-disk Raid-Z2
-# configuration using disks [A-D]1 with dedicated ZIL and L2ARC devices
-# you could run the following.
-#
-# ZIL="log A2" L2ARC="cache B2" RANKS=1 CHANNELS=4 LEVEL=2 \
-# zpool-create.sh -c zpool-raidz
-#
-# zpool status tank
-#   pool: tank
-#  state: ONLINE
-#  scan: none requested
-# config:
-# 
-#      NAME        STATE     READ WRITE CKSUM
-#      tank        ONLINE       0     0     0
-#        raidz2-0  ONLINE       0     0     0
-#          A1      ONLINE       0     0     0
-#          B1      ONLINE       0     0     0
-#          C1      ONLINE       0     0     0
-#          D1      ONLINE       0     0     0
-#      logs
-#        A2        ONLINE       0     0     0
-#      cache
-#        B2        ONLINE       0     0     0
-#  
-# errors: No known data errors
-# 
-
-# Number of interior vdevs to create using the following rank ids.
-RANKS=${RANKS:-1}
-RANK_LIST=( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )
-
-# Number of devices per vdev using the following channel ids.
-CHANNELS=${CHANNELS:-8}
-CHANNEL_LIST=( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z )
-
-# Raid-Z Level: 1, 2, or 3.
-LEVEL=${LEVEL:-2}
-
-# Create a ZIL vdev as follows.
-ZIL=${ZIL:-}
-
-# Create an L2ARC vdev as follows.
-L2ARC=${L2ARC:-}
-
-
-raidz_setup() {
-        local RANKS=$1
-        local CHANNELS=$2
-
-        RAIDZS=()
-        for (( i=0; i<${RANKS}; i++ )); do
-                RANK=${RANK_LIST[$i]}
-                RAIDZ=("raidz${LEVEL}")
-
-                for (( j=0, k=1; j<${CHANNELS}; j++, k++ )); do
-                        RAIDZ[$k]="${CHANNEL_LIST[$j]}${RANK}"
-                done
-
-                RAIDZS[$i]="${RAIDZ[*]}"
-        done
-
-        return 0
-}
-
-zpool_create() {
-        raidz_setup ${RANKS} ${CHANNELS}
-
-       ZPOOL_DEVICES="${RAIDZS[*]} ${ZIL} ${L2ARC}"
-        msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES}
-        ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES} || exit 1
-}
-
-zpool_destroy() {
-        msg ${ZPOOL} destroy ${ZPOOL_NAME}
-        ${ZPOOL} destroy ${ZPOOL_NAME}
-}
diff --git a/scripts/zpool-create.sh b/scripts/zpool-create.sh
deleted file mode 100755 (executable)
index 16ee671..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/bin/bash
-
-basedir="$(dirname $0)"
-
-SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
-else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
-fi
-
-PROG=zpool-create.sh
-
-usage() {
-cat << EOF
-USAGE:
-$0 [hvfxcp]
-
-DESCRIPTION:
-        Create one of several predefined zpool configurations.
-
-OPTIONS:
-        -h      Show this message
-        -v      Verbose
-        -f      Force everything
-        -x      Disable all zpool features
-        -c      Configuration for zpool
-        -p      Name for zpool
-        -d      Destroy zpool (default create)
-        -l      Additional zpool options
-        -s      Additional zfs options
-
-EOF
-}
-
-check_config() {
-
-       if [ ! -f ${ZPOOL_CONFIG} ]; then
-               local NAME=`basename ${ZPOOL_CONFIG} .sh`
-               ERROR="Unknown config '${NAME}', available configs are:\n"
-
-               for CFG in `ls ${ZPOOLDIR}/ | grep ".sh"`; do
-                       local NAME=`basename ${CFG} .sh`
-                       ERROR="${ERROR}${NAME}\n"
-               done
-
-               return 1
-       fi
-
-       return 0
-}
-
-ZPOOL_CONFIG=unknown
-ZPOOL_NAME=tank
-ZPOOL_DESTROY=
-ZPOOL_FLAGS=${ZPOOL_FLAGS:-""}
-ZPOOL_OPTIONS=""
-ZFS_OPTIONS=""
-
-while getopts 'hvfxc:p:dl:s:' OPTION; do
-       case $OPTION in
-       h)
-               usage
-               exit 1
-               ;;
-       v)
-               VERBOSE=1
-               VERBOSE_FLAG="-v"
-               ;;
-       f)
-               FORCE=1
-               ZPOOL_FLAGS="$ZPOOL_FLAGS -f"
-               ;;
-       x)
-               NO_FEATURES=1
-               ZPOOL_FLAGS="$ZPOOL_FLAGS -d"
-               ;;
-       c)
-               ZPOOL_CONFIG=${ZPOOLDIR}/${OPTARG}.sh
-               ;;
-       p)
-               ZPOOL_NAME=${OPTARG}
-               ;;
-       d)
-               ZPOOL_DESTROY=1
-               ;;
-       l)
-               ZPOOL_OPTIONS=${OPTARG}
-               ;;
-       s)
-               ZFS_OPTIONS=${OPTARG}
-               ;;
-       ?)
-               usage
-               exit 1
-               ;;
-       esac
-done
-
-if [ $(id -u) != 0 ]; then
-        die "Must run as root"
-fi
-
-check_config || die "${ERROR}"
-. ${ZPOOL_CONFIG}
-
-if [ ${ZPOOL_DESTROY} ]; then
-       zpool_destroy
-else
-       zpool_create
-
-       if [ "${ZPOOL_OPTIONS}" ]; then
-               if [ ${VERBOSE} ]; then
-                       echo
-                       echo "${ZPOOL} ${ZPOOL_OPTIONS} ${ZPOOL_NAME}"
-               fi
-               ${ZPOOL} ${ZPOOL_OPTIONS} ${ZPOOL_NAME} || exit 1
-       fi
-
-       if [ "${ZFS_OPTIONS}" ]; then
-               if [ ${VERBOSE} ]; then
-                       echo
-                       echo "${ZFS} ${ZFS_OPTIONS} ${ZPOOL_NAME}"
-               fi
-               ${ZFS} ${ZFS_OPTIONS} ${ZPOOL_NAME} || exit 1
-       fi
-
-       if [ ${VERBOSE} ]; then
-               echo
-               echo "zpool list"
-               ${ZPOOL} list || exit 1
-
-               echo
-               echo "zpool status ${ZPOOL_NAME}"
-               ${ZPOOL} status ${ZPOOL_NAME} || exit 1
-       fi
-fi
-
-exit 0
index 6a0d9ec298be2a3e700ea9f99f8b9c763aa526ab..db3d966142d66cd35caf477b81a6066c475e4e36 100644 (file)
@@ -1 +1 @@
-SUBDIRS = cmd include man
+SUBDIRS = bin include man
index 32749028c10f31d44e961a80592c170bc10bf844..e5ac7ef677caa210e3026a06feee5f54970df7bb 100644 (file)
@@ -135,7 +135,6 @@ export ZFS_FILES='zdb
     zinject
     zpool
     ztest
-    zpios
     raidz_test
     arc_summary.py
     arcstat.py
diff --git a/zfs-script-config.sh.in b/zfs-script-config.sh.in
deleted file mode 100644 (file)
index f1006b3..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-export KERNELSRC=@LINUX@
-export KERNELBUILD=@LINUX_OBJ@
-export KERNELSRCVER=@LINUX_VERSION@
-export KERNELMOD=/lib/modules/${KERNELSRCVER}/kernel
-
-export SPLSRC=@SPL@
-export SPLBUILD=@SPL_OBJ@
-export SPLSRCVER=@SPL_VERSION@
-
-export SRCDIR=@abs_top_srcdir@
-export BUILDDIR=@abs_top_builddir@
-export LIBDIR=${BUILDDIR}/lib
-export CMDDIR=${BUILDDIR}/cmd
-export MODDIR=${BUILDDIR}/module
-export SCRIPTDIR=${BUILDDIR}/scripts
-export ZPOOLDIR=${BUILDDIR}/scripts/zpool-config
-export ZPIOSDIR=${BUILDDIR}/scripts/zpios-test
-export ZPIOSPROFILEDIR=${BUILDDIR}/scripts/zpios-profile
-export ETCDIR=${SRCDIR}/etc
-export TESTSDIR=${SRCDIR}/tests
-export RUNFILEDIR=${TESTSDIR}/runfiles
-export UDEVRULEDIR=${BUILDDIR}/udev/rules.d
-
-export ZEDLET_ETC_DIR=${SRCDIR}/cmd/zed/zed.d
-export ZEDLET_LIBEXEC_DIR=${SRCDIR}/cmd/zed/zed.d
-export ZPOOL_SCRIPT_DIR=${SRCDIR}/cmd/zpool/zpool.d
-export ZPOOL_SCRIPTS_PATH=${SRCDIR}/cmd/zpool/zpool.d
-
-export ZDB=${CMDDIR}/zdb/zdb
-export ZFS=${CMDDIR}/zfs/zfs
-export ZHACK=${CMDDIR}/zhack/zhack
-export ZINJECT=${CMDDIR}/zinject/zinject
-export ZPOOL=${CMDDIR}/zpool/zpool
-export ZTEST=${CMDDIR}/ztest/ztest
-export ZPIOS=${CMDDIR}/zpios/zpios
-export RAIDZ_TEST=${CMDDIR}/raidz_test/raidz_test
-export ARC_SUMMARY=${CMDDIR}/arc_summary/arc_summary.py
-export ARCSTAT=${CMDDIR}/arcstat/arcstat.py
-export DBUFSTAT=${CMDDIR}/dbufstat/dbufstat.py
-export ZED=${CMDDIR}/zed/zed
-
-export COMMON_SH=${SCRIPTDIR}/common.sh
-export ZFS_SH=${SCRIPTDIR}/zfs.sh
-export ZPOOL_CREATE_SH=${SCRIPTDIR}/zpool-create.sh
-export ZPIOS_SH=${SCRIPTDIR}/zpios.sh
-export ZPIOS_SURVEY_SH=${SCRIPTDIR}/zpios-survey.sh
-
-# Test Suite Specific Commands
-export NOINUSE_CHECK=1
-export TEST_RUNNER=${TESTSDIR}/test-runner/cmd/test-runner.py
-export STF_TOOLS=${TESTSDIR}/test-runner
-export STF_SUITE=${TESTSDIR}/zfs-tests
-
-export CHG_USR_EXEC=${TESTSDIR}/zfs-tests/cmd/chg_usr_exec/chg_usr_exec
-export DEVNAME2DEVID=${TESTSDIR}/zfs-tests/cmd/devname2devid/devname2devid
-export DIR_RD_UPDATE=${TESTSDIR}/zfs-tests/cmd/dir_rd_update/dir_rd_update
-export FILE_CHECK=${TESTSDIR}/zfs-tests/cmd/file_check/file_check
-export FILE_TRUNC=${TESTSDIR}/zfs-tests/cmd/file_trunc/file_trunc
-export FILE_WRITE=${TESTSDIR}/zfs-tests/cmd/file_write/file_write
-export LARGEST_FILE=${TESTSDIR}/zfs-tests/cmd/largest_file/largest_file
-export MKBUSY=${TESTSDIR}/zfs-tests/cmd/mkbusy/mkbusy
-export MKFILE=${TESTSDIR}/zfs-tests/cmd/mkfile/mkfile
-export MKFILES=${TESTSDIR}/zfs-tests/cmd/mkfiles/mkfiles
-export MKTREE=${TESTSDIR}/zfs-tests/cmd/mktree/mktree
-export MMAP_EXEC=${TESTSDIR}/zfs-tests/cmd/mmap_exec/mmap_exec
-export MMAPWRITE=${TESTSDIR}/zfs-tests/cmd/mmapwrite/mmapwrite
-export RANDFREE_FILE=${TESTSDIR}/zfs-tests/cmd/randfree_file/randfree_file
-export READMMAP=${TESTSDIR}/zfs-tests/cmd/readmmap/readmmap
-export RENAME_DIR=${TESTSDIR}/zfs-tests/cmd/rename_dir/rename_dir
-export RM_LNKCNT_ZERO_FILE=${TESTSDIR}/zfs-tests/cmd/rm_lnkcnt_zero_file/rm_lnkcnt_zero_file
-export THREADSAPPEND=${TESTSDIR}/zfs-tests/cmd/threadsappend/threadsappend
-export XATTRTEST=${TESTSDIR}/zfs-tests/cmd/xattrtest/xattrtest
-
-export INTREE=1
-export LDMOD=/sbin/insmod
-export GDB="/usr/bin/libtool --mode=execute gdb"
-
-export ZED_PIDFILE=@runstatedir@/zed.pid
-
-export KERNEL_MODULES=(                               \
-        ${KERNELMOD}/lib/zlib_deflate/zlib_deflate.ko \
-        ${KERNELMOD}/lib/zlib_inflate/zlib_inflate.ko \
-)
-
-export SPL_MODULES=(                                  \
-        ${SPLBUILD}/module/spl/spl.ko                 \
-        ${SPLBUILD}/module/splat/splat.ko             \
-)
-
-export ZFS_MODULES=(                                  \
-        ${MODDIR}/avl/zavl.ko                         \
-        ${MODDIR}/nvpair/znvpair.ko                   \
-        ${MODDIR}/unicode/zunicode.ko                 \
-        ${MODDIR}/zcommon/zcommon.ko                  \
-        ${MODDIR}/icp/icp.ko                          \
-        ${MODDIR}/zfs/zfs.ko                          \
-)
-
-export ZPIOS_MODULES=(                                \
-        ${MODDIR}/zpios/zpios.ko                      \
-)
-
-export MODULES=(                                      \
-        ${SPL_MODULES[*]}                             \
-        ${ZFS_MODULES[*]}                             \
-)