Disable 90-zfs.rules for test suite
[zfs.git] / scripts / common.sh.in
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' '`