stop_devices ()
{
local labels=$*
- local result=0
local label devtype
for label in $labels; do
devtype=`$LDEV -t $label`
args="$args -c $cache"
elif [ -n "$ZPOOL_IMPORT_DIR" ] ; then
args="$args -d $ZPOOL_IMPORT_DIR"
- elif [ -d "/dev/disk/by-vdev" ] ; then
- args="$args -d /dev/disk/by-vdev"
- elif [ -d "/dev/mapper" ] ; then
- args="$args -d /dev/mapper"
fi
if zpool status $pool >/dev/null 2>&1 ; then
zpool import $pool $args 2>/dev/null
result=$?
fi
+ if [ $result -ne 0 ] ; then
+ echo "Unexpected return code from import of pool $pool: $result"
+ fi
return $result
}
{
local labels=$*
local result=0
+ local pids=""
local dir dev label
for label in $labels; do
# no error
continue
fi
+
echo "Unmounting $dir"
- umount $dir || result=2
+ umount $dir &
+
+ if [ -z "$pids" ]; then
+ pids="$!"
+ else
+ pids="$pids $!"
+ fi
+ done
+
+ # wait for all umount processes to complete, report any errors
+ for pid in $pids; do
+ wait $pid || result=2
done
+
# double check!
for label in $labels; do
if mountpt_is_active $label; then