mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 10:21:01 +03:00
6f582dc708
This workaround was introduced to workaround issue #164. This
issue was fixed by commit 5f35b19
so the workaround can be safely
dropped from both the zfs.fedora and zfs.gentoo init scripts.
99 lines
2.0 KiB
Plaintext
99 lines
2.0 KiB
Plaintext
#!/sbin/runscript
|
|
# Copyright 1999-2011 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/files/zfs,v 0.9 2011/04/30 10:13:43 devsk Exp $
|
|
|
|
depend()
|
|
{
|
|
before net
|
|
after udev
|
|
keyword -lxc -openvz -prefix -vserver
|
|
}
|
|
|
|
CACHEFILE=/etc/zfs/zpool.cache
|
|
ZPOOL=/usr/sbin/zpool
|
|
ZFS=/usr/sbin/zfs
|
|
ZFS_MODULE=zfs
|
|
|
|
checksystem() {
|
|
if [ -c /dev/zfs ]; then
|
|
einfo "ZFS modules already loaded"
|
|
return 0
|
|
else
|
|
einfo "Checking if ZFS modules present"
|
|
if [ "x$(modprobe -l $ZFS_MODULE | grep $ZFS_MODULE)" == "x" ]; then
|
|
eerror "$ZFS_MODULE not found. Is the ZFS package installed?"
|
|
return 1
|
|
fi
|
|
fi
|
|
einfo "Checking if zfs userspace tools present"
|
|
if [ ! -x $ZPOOL ]; then
|
|
eerror "$ZPOOL binary not found."
|
|
return 1
|
|
fi
|
|
if [ ! -x $ZFS ]; then
|
|
eerror "$ZFS binary not found."
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
start() {
|
|
ebegin "Starting ZFS"
|
|
checksystem || return 1
|
|
if [ ! -c /dev/zfs ]; then
|
|
modprobe $ZFS_MODULE
|
|
rv=$?
|
|
if [ $rv -ne 0 ]; then
|
|
eerror "Failed to load the $ZFS_MODULE module, check 'dmesg|tail'."
|
|
eend $rv
|
|
return $rv
|
|
fi
|
|
fi
|
|
|
|
# Import all pools described by the cache file, and then mount
|
|
# all filesystem based on their properties.
|
|
if [ -f $CACHEFILE ]; then
|
|
einfo "Importing ZFS pools"
|
|
# as per fedora script, import can fail if all pools are already imported
|
|
# The check for $rv makes no sense...but someday, it will work right.
|
|
$ZPOOL import -c $CACHEFILE -aN 2>/dev/null || true
|
|
rv=$?
|
|
if [ $rv -ne 0 ]; then
|
|
eerror "Failed to import not-yet imported pools."
|
|
eend $rv
|
|
return $rv
|
|
fi
|
|
fi
|
|
|
|
einfo "Mounting ZFS filesystems"
|
|
$ZFS mount -a
|
|
rv=$?
|
|
if [ $rv -ne 0 ]; then
|
|
eerror "Failed to mount ZFS filesystems."
|
|
eend $rv
|
|
return $rv
|
|
fi
|
|
|
|
eend 0
|
|
return 0
|
|
}
|
|
|
|
stop()
|
|
{
|
|
ebegin "Unmounting ZFS filesystems"
|
|
$ZFS umount -a
|
|
rv=$?
|
|
if [ $rv -ne 0 ]; then
|
|
eerror "Failed to umount ZFS filesystems."
|
|
fi
|
|
|
|
eend $rv
|
|
}
|
|
|
|
status()
|
|
{
|
|
# show pool status and list
|
|
$ZPOOL status && echo && $ZPOOL list
|
|
}
|