return 0
else
einfo "Checking if ZFS modules present"
- if [ -e $(modprobe -l $ZFS_MODULE | grep -q $ZFS_MODULE) ]; then
+ if [ "x$(modprobe -l $ZFS_MODULE | grep $ZFS_MODULE)" == "x" ]; then
eerror "$ZFS_MODULE not found. Is the ZFS package installed?"
return 1
fi
start() {
ebegin "Starting ZFS"
checksystem || return 1
+
+ # Delay until all required block devices are present.
+ udevadm settle
+
if [ ! -c /dev/zfs ]; then
modprobe $ZFS_MODULE
rv=$?
return $rv
fi
- # hack to read mounted file systems because otherwise
- # zfs returns EPERM when a non-root user reads a mounted filesystem before root did
- savepwd="$PWD"
- mount | grep " type zfs " | sed 's/.*on //' | sed 's/ type zfs.*$//' | \
- while read line
- do
- cd "$line" &> /dev/null
- ls &> /dev/null
- done
- cd "$savepwd"
-
eend 0
return 0
}
{
ebegin "Unmounting ZFS filesystems"
$ZFS umount -a
+ rv=$?
if [ $rv -ne 0 ]; then
eerror "Failed to umount ZFS filesystems."
fi