Disable 90-zfs.rules for test suite
authorBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 11 Oct 2011 21:36:42 +0000 (14:36 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 11 Oct 2011 21:45:37 +0000 (14:45 -0700)
When running the zconfig.sh, zpios-sanity.sh, and zfault.sh
from the installed packages the 90-zfs.rules can cause failures.
These will occur because the test suite assumes it has full
control over loading/unloading the module stack.  If the stack
gets asynchronously loaded by the udev rule the test suite
will treat it as a failure.  Resolve the issue by disabling
the offending rule during the tests and enabling it on exit.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
scripts/common.sh.in
scripts/zconfig.sh
scripts/zfault.sh
scripts/zpios-sanity.sh

index 51671eb..5670619 100644 (file)
@@ -36,6 +36,9 @@ libexecdir=@libexecdir@
 pkglibexecdir=${libexecdir}/@PACKAGE@
 bindir=@bindir@
 sbindir=@sbindir@
+udevdir=@udevdir@
+udevruledir=@udevruledir@
+sysconfdir=@sysconfdir@
 
 ETCDIR=${ETCDIR:-/etc}
 DEVDIR=${DEVDIR:-/dev/disk/zpool}
@@ -113,6 +116,19 @@ skip() {
        echo -e "${COLOR_BROWN}Skip${COLOR_RESET}"
 }
 
+init() {
+       # Disable the udev rule 90-zfs.rules to prevent the zfs module
+       # stack from being loaded due to the detection of a zfs device.
+       # This is important because the test scripts require full control
+       # over when and how the modules are loaded/unloaded.  A trap is
+       # set to ensure the udev rule is correctly replaced on exit.
+       local RULE=${udevruledir}/90-zfs.rules
+       if test -e  ${RULE}; then
+               trap "mv ${RULE}.disabled ${RULE}; exit $?" INT TERM EXIT
+               mv ${RULE} ${RULE}.disabled
+       fi
+}
+
 spl_dump_log() {
        ${SYSCTL} -w kernel.spl.debug.dump=1 &>/dev/null
        local NAME=`dmesg | tail -n 1 | cut -f5 -d' '`
index f635423..80f7e45 100755 (executable)
@@ -60,6 +60,9 @@ 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
index da4f16f..a5f1f3c 100755 (executable)
@@ -86,6 +86,9 @@ 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
index fcd91b6..0f44115 100755 (executable)
@@ -62,6 +62,9 @@ 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