Linux compat 2.6.39: security_inode_init_security()
[zfs.git] / etc / init.d / zfs.gentoo
index 5c329ce..a33d9dc 100644 (file)
@@ -21,7 +21,7 @@ checksystem() {
                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
@@ -41,6 +41,10 @@ checksystem() {
 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=$?
@@ -75,17 +79,6 @@ start() {
                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
 }
@@ -94,6 +87,7 @@ stop()
 {
        ebegin "Unmounting ZFS filesystems"
        $ZFS umount -a
+       rv=$?
        if [ $rv -ne 0 ]; then
                eerror "Failed to umount ZFS filesystems."
        fi