Always unload zpios.ko on exit
authorBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 2 Jun 2011 17:25:35 +0000 (10:25 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 2 Jun 2011 17:25:35 +0000 (10:25 -0700)
We should always unload zpios.ko on exit.  This ensures
that subsequent calls to 'zfs.sh -u' from other utilities
will be able to unload the module stack and properly
cleanup.  This is important for the the --cleanup option
which can be passed to zconfig.sh and zfault.sh.

scripts/zpios.sh

index e16a58a..a5599a6 100755 (executable)
@@ -42,6 +42,15 @@ 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
@@ -242,7 +251,7 @@ fi
 # Create the zpool configuration
 ${ZPOOL_CREATE_SH} ${VERBOSE_FLAG} ${FORCE_FLAG} \
        -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} \
-       -l "${ZPOOL_OPTIONS}" -s "${ZFS_OPTIONS}" || exit 1
+       -l "${ZPOOL_OPTIONS}" -s "${ZFS_OPTIONS}" || unload_die
 
 if [ ${PROFILE} ]; then
        zpios_profile_start
@@ -261,7 +270,7 @@ fi
 
 # Destroy the zpool configuration
 ${ZPOOL_CREATE_SH} ${VERBOSE_FLAG} ${FORCE_FLAG} \
-       -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} -d || exit 1
+       -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} -d || unload_die
 
 # Unload the test module stack and wait for device removal
 unload_modules