[Pkg-zfsonlinux-devel] [SCM] zfs branch, master, updated. upstream/0.6.5.5-693-gd3acc7f
Petter Reinholdtsen
pere at hungry.com
Thu May 12 10:19:17 UTC 2016
The following commit has been merged in the master branch:
commit d3acc7fbc5ba39faaa4f08288a32776db6140dd2
Author: Petter Reinholdtsen <pere at hungry.com>
Date: Thu May 12 10:18:57 2016 +0000
Bring some files back to the upstream tarball content to get gbp buildpackage working.
diff --git a/TEST b/TEST
deleted file mode 100644
index eba35a3..0000000
--- a/TEST
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh
-
-### prepare
-#TEST_PREPARE_WATCHDOG="no"
-
-### SPLAT
-#TEST_SPLAT_SKIP="yes"
-#TEST_SPLAT_OPTIONS="-acvx"
-
-### ztest
-#TEST_ZTEST_SKIP="yes"
-#TEST_ZTEST_TIMEOUT=1800
-#TEST_ZTEST_DIR="/var/tmp/"
-#TEST_ZTEST_OPTIONS="-V"
-
-### ziltest
-#TEST_ZILTEST_SKIP="yes"
-#TEST_ZILTEST_OPTIONS=""
-
-### zconfig
-#TEST_ZCONFIG_SKIP="yes"
-TEST_ZCONFIG_OPTIONS="-c -s10"
-
-### zimport
-#TEST_ZIMPORT_SKIP="yes"
-#TEST_ZIMPORT_DIR="/var/tmp/zimport"
-#TEST_ZIMPORT_VERSIONS="master installed"
-#TEST_ZIMPORT_POOLS="zol-0.6.1 zol-0.6.2 master installed"
-#TEST_ZIMPORT_OPTIONS="-c"
-
-### xfstests
-#TEST_XFSTESTS_SKIP="yes"
-#TEST_XFSTESTS_URL="https://github.com/behlendorf/xfstests/archive/"
-#TEST_XFSTESTS_VER="zfs.tar.gz"
-#TEST_XFSTESTS_POOL="tank"
-#TEST_XFSTESTS_FS="xfstests"
-#TEST_XFSTESTS_VDEV="/var/tmp/vdev"
-#TEST_XFSTESTS_OPTIONS=""
-
-### filebench
-#TEST_FILEBENCH_SKIP="yes"
-#TEST_FILEBENCH_URL="http://build.zfsonlinux.org/"
-#TEST_FILEBENCH_VER="filebench-1.4.9.1.tar.gz"
-#TEST_FILEBENCH_RUNTIME=10
-#TEST_FILEBENCH_POOL="tank"
-#TEST_FILEBENCH_FS="filebench"
-#TEST_FILEBENCH_VDEV="/var/tmp/vdev"
-#TEST_FILEBENCH_DIR="/$TEST_FILEBENCH_POOL/$TEST_FILEBENCH_FS"
-#TEST_FILEBENCH_OPTIONS=""
-
-### zfsstress
-#TEST_ZFSSTRESS_SKIP="yes"
-#TEST_ZFSSTRESS_URL="https://github.com/nedbass/zfsstress/archive/"
-#TEST_ZFSSTRESS_VER="master.tar.gz"
-#TEST_ZFSSTRESS_RUNTIME=300
-#TEST_ZFSSTRESS_POOL="tank"
-#TEST_ZFSSTRESS_FS="fish"
-#TEST_ZFSSTRESS_VDEV="/var/tmp/vdev"
-#TEST_ZFSSTRESS_DIR="/$TEST_ZFSSTRESS_POOL/$TEST_ZFSSTRESS_FS"
-#TEST_ZFSSTRESS_OPTIONS=""
-
-### per-builder customization
-#
-# BB_NAME=builder-name <distribution-version-architecture-type>
-# - distribution=Amazon,Debian,Fedora,RHEL,SUSE,Ubuntu
-# - version=x.y
-# - architecture=x86_64,i686,arm,aarch64
-# - type=build,test
-#
-case "$BB_NAME" in
-Amazon*)
- ;;
-CentOS*)
- # Sporadic segmentation faults
- TEST_ZTEST_SKIP="yes"
- # Sporadic VERIFY(!zilog_is_dirty(zilog)) failed
- TEST_ZILTEST_SKIP="yes"
- ;;
-Debian*)
- ;;
-Fedora*)
- ;;
-RHEL*)
- ;;
-SUSE*)
- ;;
-Ubuntu*)
- ;;
-*)
- ;;
-esac
diff --git a/cmd/zed/zed.d/checksum-notify.sh b/cmd/zed/zed.d/checksum-notify.sh
deleted file mode 120000
index 9008738..0000000
--- a/cmd/zed/zed.d/checksum-notify.sh
+++ /dev/null
@@ -1 +0,0 @@
-io-notify.sh
\ No newline at end of file
diff --git a/cmd/zed/zed.d/checksum-notify.sh b/cmd/zed/zed.d/checksum-notify.sh
new file mode 100755
index 0000000..3ce918a
--- /dev/null
+++ b/cmd/zed/zed.d/checksum-notify.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# Send notification in response to a CHECKSUM, DATA, or IO error.
+#
+# Only one notification per ZED_NOTIFY_INTERVAL_SECS will be sent for a given
+# class/pool/[vdev] combination. This protects against spamming the recipient
+# should multiple events occur together in time for the same pool/[vdev].
+#
+# Exit codes:
+# 0: notification sent
+# 1: notification failed
+# 2: notification not configured
+# 3: notification suppressed
+# 9: internal error
+
+[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc"
+. "${ZED_ZEDLET_DIR}/zed-functions.sh"
+
+[ -n "${ZEVENT_POOL}" ] || exit 9
+[ -n "${ZEVENT_SUBCLASS}" ] || exit 9
+
+if [ "${ZEVENT_SUBCLASS}" != "checksum" ] \
+ && [ "${ZEVENT_SUBCLASS}" != "data" ] \
+ && [ "${ZEVENT_SUBCLASS}" != "io" ]; then
+ zed_log_err "unsupported event class \"${ZEVENT_SUBCLASS}\""
+ exit 9
+fi
+
+rate_limit_tag="${ZEVENT_POOL};${ZEVENT_VDEV_GUID:-0};${ZEVENT_SUBCLASS};notify"
+zed_rate_limit "${rate_limit_tag}" || exit 3
+
+umask 077
+note_subject="ZFS ${ZEVENT_SUBCLASS} error for ${ZEVENT_POOL} on $(hostname)"
+note_pathname="${TMPDIR:="/tmp"}/$(basename -- "$0").${ZEVENT_EID}.$$"
+{
+ [ "${ZEVENT_SUBCLASS}" = "io" ] && article="an" || article="a"
+
+ echo "ZFS has detected ${article} ${ZEVENT_SUBCLASS} error:"
+ echo
+ echo " eid: ${ZEVENT_EID}"
+ echo " class: ${ZEVENT_SUBCLASS}"
+ echo " host: $(hostname)"
+ echo " time: ${ZEVENT_TIME_STRING}"
+
+ [ -n "${ZEVENT_VDEV_TYPE}" ] && echo " vtype: ${ZEVENT_VDEV_TYPE}"
+ [ -n "${ZEVENT_VDEV_PATH}" ] && echo " vpath: ${ZEVENT_VDEV_PATH}"
+ [ -n "${ZEVENT_VDEV_GUID}" ] && echo " vguid: ${ZEVENT_VDEV_GUID}"
+
+ [ -n "${ZEVENT_VDEV_CKSUM_ERRORS}" ] \
+ && echo " cksum: ${ZEVENT_VDEV_CKSUM_ERRORS}"
+
+ [ -n "${ZEVENT_VDEV_READ_ERRORS}" ] \
+ && echo " read: ${ZEVENT_VDEV_READ_ERRORS}"
+
+ [ -n "${ZEVENT_VDEV_WRITE_ERRORS}" ] \
+ && echo " write: ${ZEVENT_VDEV_WRITE_ERRORS}"
+
+ echo " pool: ${ZEVENT_POOL}"
+
+} > "${note_pathname}"
+
+zed_notify "${note_subject}" "${note_pathname}"; rv=$?
+rm -f "${note_pathname}"
+exit "${rv}"
diff --git a/cmd/zed/zed.d/checksum-spare.sh b/cmd/zed/zed.d/checksum-spare.sh
deleted file mode 120000
index f564f93..0000000
--- a/cmd/zed/zed.d/checksum-spare.sh
+++ /dev/null
@@ -1 +0,0 @@
-io-spare.sh
\ No newline at end of file
diff --git a/cmd/zed/zed.d/checksum-spare.sh b/cmd/zed/zed.d/checksum-spare.sh
new file mode 100755
index 0000000..1835cb4
--- /dev/null
+++ b/cmd/zed/zed.d/checksum-spare.sh
@@ -0,0 +1,239 @@
+#!/bin/sh
+#
+# Replace a device with a hot spare in response to IO or CHECKSUM errors.
+# The following actions will be performed automatically when the number
+# of errors exceed the limit set by ZED_SPARE_ON_IO_ERRORS or
+# ZED_SPARE_ON_CHECKSUM_ERRORS.
+#
+# 1) FAULT the device on IO errors, no futher IO will be attempted.
+# DEGRADE the device on checksum errors, the device is still
+# functional and can be used to service IO requests.
+# 2) Set the SES fault beacon for the device.
+# 3) Replace the device with a hot spare if any are available.
+#
+# Once the hot sparing operation is complete either the failed device or
+# the hot spare must be manually retired using the 'zpool detach' command.
+# The 'autoreplace' functionality which would normally take care of this
+# under Illumos has not yet been implemented.
+#
+# Full support for autoreplace is planned, but it requires that the full
+# ZFS Diagnosis Engine be ported. In the meanwhile this script provides
+# the majority of the expected hot spare functionality.
+#
+# Exit codes:
+# 0: hot spare replacement successful
+# 1: hot spare device not available
+# 2: hot sparing disabled or threshold not reached
+# 3: device already faulted or degraded
+# 9: internal error
+
+[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc"
+. "${ZED_ZEDLET_DIR}/zed-functions.sh"
+
+# Disabled by default. Enable in the zed.rc file.
+: "${ZED_SPARE_ON_CHECKSUM_ERRORS:=0}"
+: "${ZED_SPARE_ON_IO_ERRORS:=0}"
+
+
+# query_vdev_status (pool, vdev)
+#
+# Given a [pool] and [vdev], return the matching vdev path & status on stdout.
+#
+# Warning: This function does not handle the case of [pool] or [vdev]
+# containing whitespace. Beware of ShellCheck SC2046. Caveat emptor.
+#
+# Arguments
+# pool: pool name
+# vdev: virtual device name
+#
+# StdOut
+# arg1: vdev pathname
+# arg2: vdev status
+#
+query_vdev_status()
+{
+ local pool="$1"
+ local vdev="$2"
+ local t
+
+ vdev="$(basename -- "${vdev}")"
+ ([ -n "${pool}" ] && [ -n "${vdev}" ]) || return
+ t="$(printf '\t')"
+
+ "${ZPOOL}" status "${pool}" 2>/dev/null | sed -n -e \
+ "s,^[ $t]*\(.*${vdev}\(-part[0-9]\+\)\?\)[ $t]*\([A-Z]\+\).*,\1 \3,p" \
+ | tail -1
+}
+
+
+# notify (old_vdev, new_vdev, num_errors)
+#
+# Send a notification regarding the hot spare replacement.
+#
+# Arguments
+# old_vdev: path of old vdev that has failed
+# new_vdev: path of new vdev used as the hot spare replacement
+# num_errors: number of errors that triggered this replacement
+#
+notify()
+{
+ local old_vdev="$1"
+ local new_vdev="$2"
+ local num_errors="$3"
+ local note_subject
+ local note_pathname
+ local s
+ local rv
+
+ umask 077
+ note_subject="ZFS hot spare replacement for ${ZEVENT_POOL} on $(hostname)"
+ note_pathname="${TMPDIR:="/tmp"}/$(basename -- "$0").${ZEVENT_EID}.$$"
+ {
+ [ "${num_errors}" -ne 1 ] 2>/dev/null && s="s"
+
+ echo "ZFS has replaced a failing device with a hot spare after" \
+ "${num_errors} ${ZEVENT_SUBCLASS} error${s}:"
+ echo
+ echo " eid: ${ZEVENT_EID}"
+ echo " class: ${ZEVENT_SUBCLASS}"
+ echo " host: $(hostname)"
+ echo " time: ${ZEVENT_TIME_STRING}"
+ echo " old: ${old_vdev}"
+ echo " new: ${new_vdev}"
+
+ "${ZPOOL}" status "${ZEVENT_POOL}"
+
+ } > "${note_pathname}"
+
+ zed_notify "${note_subject}" "${note_pathname}"; rv=$?
+ rm -f "${note_pathname}"
+ return "${rv}"
+}
+
+
+# main
+#
+# Arguments
+# none
+#
+# Return
+# see above
+#
+main()
+{
+ local num_errors
+ local action
+ local lockfile
+ local vdev_path
+ local vdev_status
+ local spare
+ local spare_path
+ local spare_status
+ local zpool_err
+ local zpool_rv
+ local rv
+
+ # Avoid hot-sparing a hot-spare.
+ #
+ # Note: ZEVENT_VDEV_PATH is not defined for ZEVENT_VDEV_TYPE=spare.
+ #
+ [ "${ZEVENT_VDEV_TYPE}" = "spare" ] && exit 2
+
+ [ -n "${ZEVENT_POOL}" ] || exit 9
+ [ -n "${ZEVENT_VDEV_GUID}" ] || exit 9
+ [ -n "${ZEVENT_VDEV_PATH}" ] || exit 9
+
+ zed_check_cmd "${ZPOOL}" "${ZINJECT}" || exit 9
+
+ # Fault the device after a given number of I/O errors.
+ #
+ if [ "${ZEVENT_SUBCLASS}" = "io" ]; then
+ if [ "${ZED_SPARE_ON_IO_ERRORS}" -gt 0 ]; then
+ num_errors=$((ZEVENT_VDEV_READ_ERRORS + ZEVENT_VDEV_WRITE_ERRORS))
+ [ "${num_errors}" -ge "${ZED_SPARE_ON_IO_ERRORS}" ] \
+ && action="fault"
+ fi 2>/dev/null
+
+ # Degrade the device after a given number of checksum errors.
+ #
+ elif [ "${ZEVENT_SUBCLASS}" = "checksum" ]; then
+ if [ "${ZED_SPARE_ON_CHECKSUM_ERRORS}" -gt 0 ]; then
+ num_errors="${ZEVENT_VDEV_CKSUM_ERRORS}"
+ [ "${num_errors}" -ge "${ZED_SPARE_ON_CHECKSUM_ERRORS}" ] \
+ && action="degrade"
+ fi 2>/dev/null
+
+ else
+ zed_log_err "unsupported event class \"${ZEVENT_SUBCLASS}\""
+ exit 9
+ fi
+
+ # Error threshold not reached.
+ #
+ if [ -z "${action}" ]; then
+ exit 2
+ fi
+
+ lockfile="zed.spare.lock"
+ zed_lock "${lockfile}"
+
+ # shellcheck disable=SC2046
+ set -- $(query_vdev_status "${ZEVENT_POOL}" "${ZEVENT_VDEV_PATH}")
+ vdev_path="$1"
+ vdev_status="$2"
+
+ # Device is already FAULTED or DEGRADED.
+ #
+ if [ "${vdev_status}" = "FAULTED" ] \
+ || [ "${vdev_status}" = "DEGRADED" ]; then
+ rv=3
+
+ else
+ rv=1
+
+ # 1) FAULT or DEGRADE the device.
+ #
+ "${ZINJECT}" -d "${ZEVENT_VDEV_GUID}" -A "${action}" "${ZEVENT_POOL}"
+
+ # 2) Set the SES fault beacon.
+ #
+ # TODO: Set the 'fault' or 'ident' beacon for the device. This can
+ # be done through the sg_ses utility. The only hard part is to map
+ # the sd device to its corresponding enclosure and slot. We may
+ # be able to leverage the existing vdev_id scripts for this.
+ #
+ # $ sg_ses --dev-slot-num=0 --set=ident /dev/sg3
+ # $ sg_ses --dev-slot-num=0 --clear=ident /dev/sg3
+
+ # 3) Replace the device with a hot spare.
+ #
+ # Round-robin through the spares trying those that are available.
+ #
+ for spare in ${ZEVENT_VDEV_SPARE_PATHS}; do
+
+ # shellcheck disable=SC2046
+ set -- $(query_vdev_status "${ZEVENT_POOL}" "${spare}")
+ spare_path="$1"
+ spare_status="$2"
+
+ [ "${spare_status}" = "AVAIL" ] || continue
+
+ zpool_err="$("${ZPOOL}" replace "${ZEVENT_POOL}" \
+ "${ZEVENT_VDEV_GUID}" "${spare_path}" 2>&1)"; zpool_rv=$?
+
+ if [ "${zpool_rv}" -ne 0 ]; then
+ [ -n "${zpool_err}" ] && zed_log_err "zpool ${zpool_err}"
+ else
+ notify "${vdev_path}" "${spare_path}" "${num_errors}"
+ rv=0
+ break
+ fi
+ done
+ fi
+
+ zed_unlock "${lockfile}"
+ exit "${rv}"
+}
+
+
+main "$@"
diff --git a/cmd/zed/zed.d/data-notify.sh b/cmd/zed/zed.d/data-notify.sh
deleted file mode 120000
index 9008738..0000000
--- a/cmd/zed/zed.d/data-notify.sh
+++ /dev/null
@@ -1 +0,0 @@
-io-notify.sh
\ No newline at end of file
diff --git a/cmd/zed/zed.d/data-notify.sh b/cmd/zed/zed.d/data-notify.sh
new file mode 100755
index 0000000..3ce918a
--- /dev/null
+++ b/cmd/zed/zed.d/data-notify.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# Send notification in response to a CHECKSUM, DATA, or IO error.
+#
+# Only one notification per ZED_NOTIFY_INTERVAL_SECS will be sent for a given
+# class/pool/[vdev] combination. This protects against spamming the recipient
+# should multiple events occur together in time for the same pool/[vdev].
+#
+# Exit codes:
+# 0: notification sent
+# 1: notification failed
+# 2: notification not configured
+# 3: notification suppressed
+# 9: internal error
+
+[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc"
+. "${ZED_ZEDLET_DIR}/zed-functions.sh"
+
+[ -n "${ZEVENT_POOL}" ] || exit 9
+[ -n "${ZEVENT_SUBCLASS}" ] || exit 9
+
+if [ "${ZEVENT_SUBCLASS}" != "checksum" ] \
+ && [ "${ZEVENT_SUBCLASS}" != "data" ] \
+ && [ "${ZEVENT_SUBCLASS}" != "io" ]; then
+ zed_log_err "unsupported event class \"${ZEVENT_SUBCLASS}\""
+ exit 9
+fi
+
+rate_limit_tag="${ZEVENT_POOL};${ZEVENT_VDEV_GUID:-0};${ZEVENT_SUBCLASS};notify"
+zed_rate_limit "${rate_limit_tag}" || exit 3
+
+umask 077
+note_subject="ZFS ${ZEVENT_SUBCLASS} error for ${ZEVENT_POOL} on $(hostname)"
+note_pathname="${TMPDIR:="/tmp"}/$(basename -- "$0").${ZEVENT_EID}.$$"
+{
+ [ "${ZEVENT_SUBCLASS}" = "io" ] && article="an" || article="a"
+
+ echo "ZFS has detected ${article} ${ZEVENT_SUBCLASS} error:"
+ echo
+ echo " eid: ${ZEVENT_EID}"
+ echo " class: ${ZEVENT_SUBCLASS}"
+ echo " host: $(hostname)"
+ echo " time: ${ZEVENT_TIME_STRING}"
+
+ [ -n "${ZEVENT_VDEV_TYPE}" ] && echo " vtype: ${ZEVENT_VDEV_TYPE}"
+ [ -n "${ZEVENT_VDEV_PATH}" ] && echo " vpath: ${ZEVENT_VDEV_PATH}"
+ [ -n "${ZEVENT_VDEV_GUID}" ] && echo " vguid: ${ZEVENT_VDEV_GUID}"
+
+ [ -n "${ZEVENT_VDEV_CKSUM_ERRORS}" ] \
+ && echo " cksum: ${ZEVENT_VDEV_CKSUM_ERRORS}"
+
+ [ -n "${ZEVENT_VDEV_READ_ERRORS}" ] \
+ && echo " read: ${ZEVENT_VDEV_READ_ERRORS}"
+
+ [ -n "${ZEVENT_VDEV_WRITE_ERRORS}" ] \
+ && echo " write: ${ZEVENT_VDEV_WRITE_ERRORS}"
+
+ echo " pool: ${ZEVENT_POOL}"
+
+} > "${note_pathname}"
+
+zed_notify "${note_subject}" "${note_pathname}"; rv=$?
+rm -f "${note_pathname}"
+exit "${rv}"
diff --git a/cmd/zed/zed.d/resilver.finish-notify.sh b/cmd/zed/zed.d/resilver.finish-notify.sh
deleted file mode 120000
index 2635dcc..0000000
--- a/cmd/zed/zed.d/resilver.finish-notify.sh
+++ /dev/null
@@ -1 +0,0 @@
-scrub.finish-notify.sh
\ No newline at end of file
diff --git a/cmd/zed/zed.d/resilver.finish-notify.sh b/cmd/zed/zed.d/resilver.finish-notify.sh
new file mode 100755
index 0000000..b4dd1dd
--- /dev/null
+++ b/cmd/zed/zed.d/resilver.finish-notify.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# Send notification in response to a RESILVER.FINISH or SCRUB.FINISH.
+#
+# By default, "zpool status" output will only be included for a scrub.finish
+# zevent if the pool is not healthy; to always include its output, set
+# ZED_NOTIFY_VERBOSE=1.
+#
+# Exit codes:
+# 0: notification sent
+# 1: notification failed
+# 2: notification not configured
+# 3: notification suppressed
+# 9: internal error
+
+[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc"
+. "${ZED_ZEDLET_DIR}/zed-functions.sh"
+
+[ -n "${ZEVENT_POOL}" ] || exit 9
+[ -n "${ZEVENT_SUBCLASS}" ] || exit 9
+
+if [ "${ZEVENT_SUBCLASS}" = "resilver.finish" ]; then
+ action="resilver"
+elif [ "${ZEVENT_SUBCLASS}" = "scrub.finish" ]; then
+ action="scrub"
+else
+ zed_log_err "unsupported event class \"${ZEVENT_SUBCLASS}\""
+ exit 9
+fi
+
+zed_check_cmd "${ZPOOL}" || exit 9
+
+# For scrub, suppress notification if the pool is healthy
+# and verbosity is not enabled.
+#
+if [ "${ZEVENT_SUBCLASS}" = "scrub.finish" ]; then
+ healthy="$("${ZPOOL}" status -x "${ZEVENT_POOL}" \
+ | grep "'${ZEVENT_POOL}' is healthy")"
+ [ -n "${healthy}" ] && [ "${ZED_NOTIFY_VERBOSE}" -eq 0 ] && exit 3
+fi
+
+umask 077
+note_subject="ZFS ${ZEVENT_SUBCLASS} event for ${ZEVENT_POOL} on $(hostname)"
+note_pathname="${TMPDIR:="/tmp"}/$(basename -- "$0").${ZEVENT_EID}.$$"
+{
+ echo "ZFS has finished a ${action}:"
+ echo
+ echo " eid: ${ZEVENT_EID}"
+ echo " class: ${ZEVENT_SUBCLASS}"
+ echo " host: $(hostname)"
+ echo " time: ${ZEVENT_TIME_STRING}"
+
+ "${ZPOOL}" status "${ZEVENT_POOL}"
+
+} > "${note_pathname}"
+
+zed_notify "${note_subject}" "${note_pathname}"; rv=$?
+rm -f "${note_pathname}"
+exit "${rv}"
diff --git a/config/suppressed-warnings.txt b/config/suppressed-warnings.txt
deleted file mode 100644
index 621e3cd..0000000
--- a/config/suppressed-warnings.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# Expected warnings which should be suppressed by buildbot
-#
-None : ^libtool: install: warning: relinking `.*'$
-None : ^libtool: install: warning: remember to run `libtool --finish .*'$
-None : ^libtool: install: warning: `.*' has not been installed in `.*'$
-None : ^warning: File listed twice:.*
diff --git a/etc/init.d/README.md b/etc/init.d/README.md
deleted file mode 100644
index 89edb1d..0000000
--- a/etc/init.d/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-DESCRIPTION
- These script were written with the primary intention of being portable and
- usable on as many systems as possible.
-
- This is, in practice, usually not possible. But the intention is there.
- And it is a good one.
-
- They have been tested successfully on:
-
- * Debian GNU/Linux Wheezy
- * Debian GNU/Linux Jessie
- * Ubuntu Trusty
- * CentOS 6.0
- * CentOS 6.6
- * Gentoo
-
-SUPPORT
- If you find that they don't work for your platform, please report this
- at the ZFS On Linux issue tracker at https://github.com/zfsonlinux/zfs/issues.
-
- Please include:
-
- * Distribution name
- * Distribution version
- * Where to find an install CD image
- * Architecture
-
- If you have code to share that fixes the problem, that is much better.
- But please remember to try your best keep portability in mind. If you
- suspect that what you're writing/modifying won't work on anything else
- than your distribution, please make sure to put that code in appropriate
- if/else/fi code.
-
- It currently MUST be bash (or fully compatible) for this to work.
-
- If you're making your own distribution and you want the scripts to
- work on that, the biggest problem you'll (probably) have is the part
- at the beginning of the "zfs-functions.in" file which sets up the
- logging output.
-
-INSTALLING INIT SCRIPT LINKS
- To setup the init script links in /etc/rc?.d manually on a Debian GNU/Linux
- (or derived) system, run the following commands (the order is important!):
-
- update-rc.d zfs-import start 07 S . stop 07 0 1 6 .
- update-rc.d zfs-mount start 02 2 3 4 5 . stop 06 0 1 6 .
- update-rc.d zfs-zed start 07 2 3 4 5 . stop 08 0 1 6 .
- update-rc.d zfs-share start 27 2 3 4 5 . stop 05 0 1 6 .
-
- To do the same on RedHat, Fedora and/or CentOS:
-
- chkconfig zfs-import
- chkconfig zfs-mount
- chkconfig zfs-zed
- chkconfig zfs-share
-
- On Gentoo:
-
- rc-update add zfs-import boot
- rc-update add zfs-mount boot
- rc-update add zfs-zed default
- rc-update add zfs-share default
-
- The idea here is to make sure all of the ZFS filesystems, including possibly
- separate datasets like /var, are mounted before anything else is started.
-
- Then, ZED, which depends on /var, can be started. It will consume and act
- on events that occurred before it started. ZED may also play a role in
- sharing filesystems in the future, so it is important to start before the
- 'share' service.
-
- Finally, we share filesystems configured with the share\* property.
diff --git a/rpm/redhat/zfs-dkms.spec.in b/rpm/redhat/zfs-dkms.spec.in
deleted file mode 120000
index ffa051b..0000000
--- a/rpm/redhat/zfs-dkms.spec.in
+++ /dev/null
@@ -1 +0,0 @@
-../generic/zfs-dkms.spec.in
\ No newline at end of file
diff --git a/rpm/redhat/zfs-dkms.spec.in b/rpm/redhat/zfs-dkms.spec.in
new file mode 100644
index 0000000..a379f7d
--- /dev/null
+++ b/rpm/redhat/zfs-dkms.spec.in
@@ -0,0 +1,71 @@
+%{?!packager: %define packager Brian Behlendorf <behlendorf1 at llnl.gov>}
+
+%define module @PACKAGE@
+%define mkconf scripts/dkms.mkconf
+
+Name: %{module}-dkms
+
+Version: @VERSION@
+Release: @RELEASE@%{?dist}
+Summary: Kernel module(s) (dkms)
+
+Group: System Environment/Kernel
+License: @ZFS_META_LICENSE@
+URL: http://zfsonlinux.org/
+Source0: %{module}-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch: noarch
+
+Requires: dkms >= 2.2.0.3-20
+Requires: spl-dkms = %{version}
+Requires: gcc, make, perl
+Requires: kernel-devel
+Provides: %{module}-kmod = %{version}
+
+%description
+This package contains the dkms ZFS kernel modules.
+
+%prep
+%setup -q -n %{module}-%{version}
+
+%build
+%{mkconf} -n %{module} -v %{version} -f dkms.conf
+
+%install
+if [ "$RPM_BUILD_ROOT" != "/" ]; then
+ rm -rf $RPM_BUILD_ROOT
+fi
+mkdir -p $RPM_BUILD_ROOT/usr/src/
+cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/
+
+%clean
+if [ "$RPM_BUILD_ROOT" != "/" ]; then
+ rm -rf $RPM_BUILD_ROOT
+fi
+
+%files
+%defattr(-,root,root)
+/usr/src/%{module}-%{version}
+
+%post
+for POSTINST in /usr/lib/dkms/common.postinst; do
+ if [ -f $POSTINST ]; then
+ $POSTINST %{module} %{version}
+ exit $?
+ fi
+ echo "WARNING: $POSTINST does not exist."
+done
+echo -e "ERROR: DKMS version is too old and %{module} was not"
+echo -e "built with legacy DKMS support."
+echo -e "You must either rebuild %{module} with legacy postinst"
+echo -e "support or upgrade DKMS to a more current version."
+exit 1
+
+%preun
+echo -e "Uninstall of %{module} module (version %{version}) beginning:"
+dkms remove -m %{module} -v %{version} --all --rpm_safe_upgrade
+exit 0
+
+%changelog
+* %(date "+%a %b %d %Y") %packager %{version}-%{release}
+- Automatic build by DKMS
diff --git a/rpm/redhat/zfs.spec.in b/rpm/redhat/zfs.spec.in
deleted file mode 120000
index 4c80791..0000000
--- a/rpm/redhat/zfs.spec.in
+++ /dev/null
@@ -1 +0,0 @@
-../generic/zfs.spec.in
\ No newline at end of file
diff --git a/rpm/redhat/zfs.spec.in b/rpm/redhat/zfs.spec.in
new file mode 100644
index 0000000..55289df
--- /dev/null
+++ b/rpm/redhat/zfs.spec.in
@@ -0,0 +1,391 @@
+%global _sbindir /sbin
+%global _libdir /%{_lib}
+
+# Set the default udev directory based on distribution.
+%if %{undefined _udevdir}
+%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
+%global _udevdir %{_prefix}/lib/udev
+%else
+%global _udevdir /lib/udev
+%endif
+%endif
+
+# Set the default udevrule directory based on distribution.
+%if %{undefined _udevruledir}
+%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
+%global _udevruledir %{_prefix}/lib/udev/rules.d
+%else
+%global _udevruledir /lib/udev/rules.d
+%endif
+%endif
+
+# Set the default dracut directory based on distribution.
+%if %{undefined _dracutdir}
+%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
+%global _dracutdir %{_prefix}/lib/dracut
+%else
+%global _dracutdir %{_prefix}/share/dracut
+%endif
+%endif
+
+# Set the default _initconfdir when undefined.
+%if %{undefined _initconfdir}
+%global _initconfdir /etc/sysconfig
+%endif
+
+%bcond_with debug
+%bcond_with blkid
+%bcond_with systemd
+
+# Generic enable switch for systemd
+%if %{with systemd}
+%define _systemd 1
+%endif
+
+# RHEL >= 7 comes with systemd
+%if 0%{?rhel} >= 7
+%define _systemd 1
+%endif
+
+# Fedora >= 15 comes with systemd, but only >= 18 has
+# the proper macros
+%if 0%{?fedora} >= 18
+%define _systemd 1
+%endif
+
+# opensuse >= 12.1 comes with systemd, but only >= 13.1
+# has the proper macros
+%if 0%{?suse_version} >= 1310
+%define _systemd 1
+%endif
+
+Name: @PACKAGE@
+Version: @VERSION@
+Release: @RELEASE@%{?dist}
+Summary: Commands to control the kernel modules and libraries
+
+Group: System Environment/Kernel
+License: @ZFS_META_LICENSE@
+URL: http://zfsonlinux.org/
+Source0: %{name}-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Requires: spl = %{version}
+Requires: libzpool2 = %{version}
+Requires: libnvpair1 = %{version}
+Requires: libuutil1 = %{version}
+Requires: libzfs2 = %{version}
+Requires: %{name}-kmod = %{version}
+Provides: %{name}-kmod-common = %{version}
+
+# zfs-fuse provides the same commands and man pages that ZoL does. Renaming
+# those on either side would conflict with all available documentation.
+Conflicts: zfs-fuse
+
+%if 0%{?rhel}%{?fedora}%{?suse_version}
+BuildRequires: zlib-devel
+BuildRequires: libuuid-devel
+%if %{with blkid}
+BuildRequires: libblkid-devel
+%endif
+%endif
+%if 0%{?_systemd}
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+BuildRequires: systemd
+%endif
+
+%description
+This package contains the ZFS command line utilities.
+
+%package -n libzpool2
+Summary: Native ZFS pool library for Linux
+Group: System Environment/Kernel
+
+%description -n libzpool2
+This package contains the zpool library, which provides support
+for managing zpools
+
+%post -n libzpool2 -p /sbin/ldconfig
+%postun -n libzpool2 -p /sbin/ldconfig
+
+%package -n libnvpair1
+Summary: Solaris name-value library for Linux
+Group: System Environment/Kernel
+
+%description -n libnvpair1
+This package contains routines for packing and unpacking name-value
+pairs. This functionality is used to portably transport data across
+process boundaries, between kernel and user space, and can be used
+to write self describing data structures on disk.
+
+%post -n libnvpair1 -p /sbin/ldconfig
+%postun -n libnvpair1 -p /sbin/ldconfig
+
+%package -n libuutil1
+Summary: Solaris userland utility library for Linux
+Group: System Environment/Kernel
+
+%description -n libuutil1
+This library provides a variety of compatibility functions for ZFS on Linux:
+ * libspl: The Solaris Porting Layer userland library, which provides APIs
+ that make it possible to run Solaris user code in a Linux environment
+ with relatively minimal modification.
+ * libavl: The Adelson-Velskii Landis balanced binary tree manipulation
+ library.
+ * libefi: The Extensible Firmware Interface library for GUID disk
+ partitioning.
+ * libshare: NFS, SMB, and iSCSI service integration for ZFS.
+
+%post -n libuutil1 -p /sbin/ldconfig
+%postun -n libuutil1 -p /sbin/ldconfig
+
+%package -n libzfs2
+Summary: Native ZFS filesystem library for Linux
+Group: System Environment/Kernel
+
+%description -n libzfs2
+This package provides support for managing ZFS filesystems
+
+%post -n libzfs2 -p /sbin/ldconfig
+%postun -n libzfs2 -p /sbin/ldconfig
+
+%package -n libzfs2-devel
+Summary: Development headers
+Group: System Environment/Kernel
+Requires: libzfs2 = %{version}
+Requires: libzpool2 = %{version}
+Requires: libnvpair1 = %{version}
+Requires: libuutil1 = %{version}
+Provides: libzpool2-devel
+Provides: libnvpair1-devel
+Provides: libuutil1-devel
+Obsoletes: zfs-devel
+
+%description -n libzfs2-devel
+This package contains the header files needed for building additional
+applications against the ZFS libraries.
+
+%package test
+Summary: Test infrastructure
+Group: System Environment/Kernel
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: parted
+Requires: lsscsi
+Requires: mdadm
+Requires: bc
+
+%description test
+This package contains test infrastructure and support scripts for
+validating the file system.
+
+%package dracut
+Summary: Dracut module
+Group: System Environment/Kernel
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: dracut
+
+%description dracut
+This package contains a dracut module used to construct an initramfs
+image which is ZFS aware.
+
+%if 0%{?_initramfs}
+%package initramfs
+Summary: Initramfs module
+Group: System Environment/Kernel
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: initramfs-tools
+
+%description initramfs
+This package contains a initramfs module used to construct an initramfs
+image which is ZFS aware.
+%endif
+
+%prep
+%if %{with debug}
+ %define debug --enable-debug
+%else
+ %define debug --disable-debug
+%endif
+%if %{with blkid}
+ %define blkid --with-blkid
+%else
+ %define blkid --without-blkid
+%endif
+%if 0%{?_systemd}
+ %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --disable-sysvinit
+%else
+ %define systemd --enable-sysvinit --disable-systemd
+%endif
+
+%setup -q
+
+%build
+%configure \
+ --with-config=user \
+ --with-udevdir=%{_udevdir} \
+ --with-udevruledir=%{_udevruledir} \
+ --with-dracutdir=%{_dracutdir} \
+ --disable-static \
+ %{debug} \
+ %{blkid} \
+ %{systemd}
+make %{?_smp_mflags}
+
+%install
+%{__rm} -rf $RPM_BUILD_ROOT
+make install DESTDIR=%{?buildroot}
+find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
+
+%post
+%if 0%{?_systemd}
+%systemd_post zfs.target
+%else
+if [ -x /sbin/chkconfig ]; then
+ /sbin/chkconfig --add zfs-import
+ /sbin/chkconfig --add zfs-mount
+ /sbin/chkconfig --add zfs-share
+ /sbin/chkconfig --add zfs-zed
+fi
+%endif
+exit 0
+
+%preun
+%if 0%{?_systemd}
+%systemd_preun zfs.target
+%else
+if [ $1 -eq 0 ] && [ -x /sbin/chkconfig ]; then
+ /sbin/chkconfig --del zfs-import
+ /sbin/chkconfig --del zfs-mount
+ /sbin/chkconfig --del zfs-share
+ /sbin/chkconfig --del zfs-zed
+fi
+%endif
+exit 0
+
+%postun
+%if 0%{?_systemd}
+%systemd_postun zfs.target
+%endif
+
+%files
+%{_sbindir}/*
+%{_bindir}/*
+%{_libexecdir}/%{name}
+%{_mandir}/man1/*
+%{_mandir}/man5/*
+%{_mandir}/man8/*
+%{_udevdir}/vdev_id
+%{_udevdir}/zvol_id
+%{_udevdir}/rules.d/*
+%if 0%{?_systemd}
+/usr/lib/modules-load.d/*
+%{_unitdir}/*
+%{_presetdir}/*
+%else
+%config(noreplace) %{_sysconfdir}/init.d/*
+%config(noreplace) %{_initconfdir}/zfs
+%endif
+%config(noreplace) %{_sysconfdir}/%{name}
+
+%files -n libzpool2
+%{_libdir}/libzpool.so.*
+
+%files -n libnvpair1
+%{_libdir}/libnvpair.so.*
+
+%files -n libuutil1
+%{_libdir}/libuutil.so.*
+
+%files -n libzfs2
+%{_libdir}/libzfs*.so.*
+
+%files -n libzfs2-devel
+%{_datadir}/pkgconfig/libzfs.pc
+%{_datadir}/pkgconfig/libzfs_core.pc
+%{_libdir}/*.so
+%{_includedir}/*
+%doc AUTHORS COPYRIGHT DISCLAIMER
+%doc OPENSOLARIS.LICENSE README.markdown
+
+%files test
+%{_datadir}/%{name}
+
+%files dracut
+%doc contrib/dracut/README.dracut.markdown
+%{_dracutdir}/modules.d/*
+
+%if 0%{?_initramfs}
+%files initramfs
+%doc contrib/initramfs/README.initramfs.markdown
+/usr/share/initramfs-tools/*
+%else
+# Since we're not building the initramfs package,
+# ignore those files.
+%exclude /usr/share/initramfs-tools
+%endif
+
+%changelog
+* Tue Mar 22 2016 Ned Bass <bass6 at llnl.gov> - 0.6.5.6-1
+- Remove artificial architecture restrictions in packaging
+- Add support for s390[x] zfsonlinux/zfs#4425
+- Handle negative dentries in case insensitive filesystem zfsonlinux/zfs#4243
+- Fix casesensitivity=insensitive deadlock zfsonlinux/zfs#4136
+- Correctly parse zdb -R flag arguments zfsonlinux/zfs#4304
+- Fix lock order inversion with zvol_open() zfsonlinux/zfs#3681
+- Add support for asynchronous zvol minor operations zfsonlinux/zfs#2217
+- Make zvol minor functionality more robust zfsonlinux/zfs#4344
+- Prevent zpool_find_vdev() from truncating vdev path zfsonlinux/zfs#4312
+- Add -gLP to zpool subcommands for alt vdev names zfsonlinux/zfs#4341
+- Fix zpool list -v output for spares and log devices zfsonlinux/zfs#4313
+* Wed Mar 9 2016 Ned Bass <bass6 at llnl.gov> - 0.6.5.5-1
+- Linux 4.5 compatibility zfsonlinux/zfs#4228
+- Create working debuginfo packages on Red Hat zfsonlinux/zfs#4224
+- Make arc_summary.py and dbufstat.py compatible with python3
+- musl libc compatibility for option parsing zfsonlinux/zfs#4222
+- Prevent arc_c collapse and possible panic zfsonlinux/zfs#3904
+- Prevent duplicated xattr between SA and dir zfsonlinux/zfs#4153
+- Fix zsb->z_hold_mtx deadlock zfsonlinux/zfs#4106
+- Prevent SA header corruption zfsonlinux/zfs#4150
+* Fri Jan 8 2016 Ned Bass <bass6 at llnl.gov> - 0.6.5.4-1
+- Linux 4.4 compat
+- Assorted stability fixes
+- Fixes for NFS-exported snapshots
+- Fix kernel warning in unlock_new_inode() and deadlock
+- Fix overflow in P2ROUNDUP_TYPED macro
+- Fix write performance issue due to bad zfs_dirty_data_max calculation
+- Fix builtin kernel builds
+- Fix deadlock during direct memory reclaim
+* Tue Oct 13 2015 Ned Bass <bass6 at llnl.gov> - 0.6.5.3-1
+- Don't import all visible pools in zfs-import init script zfsonlinux/zfs#3777
+- Fix use-after-free in vdev_disk_physio_completion zfsonlinux/zfs#3920
+- Fix avl_is_empty(&dn->dn_dbufs) assertion zfsonlinux/zfs#3865
+* Wed Sep 30 2015 Ned Bass <bass6 at llnl.gov> - 0.6.5.2-1
+- Init script fixes zfsonlinux/zfs#3816
+- Fix uioskip crash when skip to end zfsonlinux/zfs#3806 zfsonlinux/zfs#3850
+- Userspace can trigger an assertion zfsonlinux/zfs#3792
+- Fix quota userused underflow bug zfsonlinux/zfs#3789
+- Fix performance regression from unwanted synchronous I/O zfsonlinux/zfs#3780
+- Fix deadlock during ARC reclaim zfsonlinux/zfs#3808 zfsonlinux/zfs#3834
+- Fix deadlock with zfs receive and clamscan zfsonlinux/zfs#3719
+- Allow NFS activity to defer snapshot unmounts zfsonlinux/zfs#3794
+- Linux 4.3 compatibility zfsonlinux/zfs#3799
+- Zed reload fixes zfsonlinux/zfs#3773
+- Fix PAX Patch/Grsec SLAB_USERCOPY panic zfsonlinux/zfs#3796
+- Always remove during dkms uninstall/update zfsonlinux/spl#476
+* Sat Sep 19 2015 Ned Bass <bass6 at llnl.gov> - 0.6.5.1-1
+- Fix zvol corruption with TRIM/discard zfsonlinux/zfs#3798
+- Fix NULL as mount(2) syscall data parameter zfsonlinux/zfs#3804
+- Fix xattr=sa dataset property not honored zfsonlinux/zfs#3787
+* Fri Sep 11 2015 Brian Behlendorf <behlendorf1 at llnl.gov> - 0.6.5-1
+- Released 0.6.5-1, detailed release notes are available at:
+- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.6.5
+* Wed Apr 8 2015 Brian Behlendorf <behlendorf1 at llnl.gov> - 0.6.4-1
+- Released 0.6.4-1
+* Thu Jun 12 2014 Brian Behlendorf <behlendorf1 at llnl.gov> - 0.6.3-1
+- Released 0.6.3-1
+* Wed Aug 21 2013 Brian Behlendorf <behlendorf1 at llnl.gov> - 0.6.2-1
+- Released 0.6.2-1
+* Fri Mar 22 2013 Brian Behlendorf <behlendorf1 at llnl.gov> - 0.6.1-1
+- First official stable release.
diff --git a/scripts/zpios-test/large-thread-survey.sh b/scripts/zpios-test/large-thread-survey.sh
deleted file mode 120000
index 90b6e3c..0000000
--- a/scripts/zpios-test/large-thread-survey.sh
+++ /dev/null
@@ -1 +0,0 @@
-1x256th-65536rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/large-thread-survey.sh b/scripts/zpios-test/large-thread-survey.sh
new file mode 100755
index 0000000..743e97b
--- /dev/null
+++ b/scripts/zpios-test/large-thread-survey.sh
@@ -0,0 +1,65 @@
+#!/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/large.sh b/scripts/zpios-test/large.sh
deleted file mode 120000
index b8e22bf..0000000
--- a/scripts/zpios-test/large.sh
+++ /dev/null
@@ -1 +0,0 @@
-256th-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
new file mode 100755
index 0000000..92a3b77
--- /dev/null
+++ b/scripts/zpios-test/large.sh
@@ -0,0 +1,65 @@
+#!/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/medium.sh b/scripts/zpios-test/medium.sh
deleted file mode 120000
index d81027b..0000000
--- a/scripts/zpios-test/medium.sh
+++ /dev/null
@@ -1 +0,0 @@
-16th-8192rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/medium.sh b/scripts/zpios-test/medium.sh
new file mode 100755
index 0000000..cbd9c69
--- /dev/null
+++ b/scripts/zpios-test/medium.sh
@@ -0,0 +1,65 @@
+#!/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/small.sh b/scripts/zpios-test/small.sh
deleted file mode 120000
index cbf03b5..0000000
--- a/scripts/zpios-test/small.sh
+++ /dev/null
@@ -1 +0,0 @@
-4th-1024rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/small.sh b/scripts/zpios-test/small.sh
new file mode 100755
index 0000000..0db952c
--- /dev/null
+++ b/scripts/zpios-test/small.sh
@@ -0,0 +1,65 @@
+#!/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/tiny.sh b/scripts/zpios-test/tiny.sh
deleted file mode 120000
index ba8b7cd..0000000
--- a/scripts/zpios-test/tiny.sh
+++ /dev/null
@@ -1 +0,0 @@
-1th-16rc-4rs-1cs-4off.sh
\ No newline at end of file
diff --git a/scripts/zpios-test/tiny.sh b/scripts/zpios-test/tiny.sh
new file mode 100755
index 0000000..cd3c50b
--- /dev/null
+++ b/scripts/zpios-test/tiny.sh
@@ -0,0 +1,66 @@
+#!/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
+}
--
OpenZFS on Linux
More information about the Pkg-zfsonlinux-devel
mailing list