Files
mirror_zfs/etc/init.d/zfs.gentoo.in
T

112 lines
2.3 KiB
Plaintext
Raw Normal View History

2011-05-02 15:39:59 -07:00
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Released under the 2-clause BSD license.
2011-05-02 15:39:59 -07:00
# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/files/zfs,v 0.9 2011/04/30 10:13:43 devsk Exp $
depend()
{
2011-07-04 14:58:51 -07:00
# bootmisc will log to /var which may be a different zfs than root.
before net bootmisc
2011-07-04 01:49:41 -07:00
after udev localmount
keyword -lxc -openvz -prefix -vserver
2011-05-02 15:39:59 -07:00
}
ZFS="@sbindir@/zfs"
ZPOOL="@sbindir@/zpool"
2011-08-22 15:58:54 -07:00
ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache"
2011-05-02 15:39:59 -07:00
ZFS_MODULE=zfs
checksystem() {
2011-07-04 14:58:51 -07:00
if [ ! -c /dev/zfs ]; then
einfo "Checking if ZFS modules present"
2012-04-03 00:21:22 -04:00
if ! modinfo zfs > /dev/null 2>&1 ; then
eerror "$ZFS_MODULE not found. Is the ZFS package installed?"
return 1
fi
2011-05-02 15:39:59 -07:00
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
2011-05-02 15:39:59 -07:00
return 0
}
start() {
2011-05-02 15:39:59 -07:00
ebegin "Starting ZFS"
checksystem || return 1
2011-06-30 14:45:33 -07:00
# Delay until all required block devices are present.
udevadm settle
if [ ! -c /dev/zfs ]; then
modprobe $ZFS_MODULE
2011-05-02 15:39:59 -07:00
rv=$?
if [ $rv -ne 0 ]; then
2011-05-02 15:39:59 -07:00
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 $ZPOOL_CACHE ]; then
2011-05-02 15:39:59 -07:00
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 $ZPOOL_CACHE -aN 2>/dev/null || true
2011-05-02 15:39:59 -07:00
rv=$?
if [ $rv -ne 0 ]; then
2011-05-02 15:39:59 -07:00
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
2011-05-02 15:39:59 -07:00
eerror "Failed to mount ZFS filesystems."
eend $rv
return $rv
fi
einfo "Exporting ZFS filesystems"
$ZFS share -a
rv=$?
if [ $rv -ne 0 ]; then
eerror "Failed to export ZFS filesystems."
eend $rv
return $rv
fi
2011-05-02 15:39:59 -07:00
eend 0
return 0
}
stop()
{
ebegin "Unmounting ZFS filesystems"
$ZFS umount -a
2011-05-11 00:22:35 +04:00
rv=$?
if [ $rv -ne 0 ]; then
2011-07-04 14:58:51 -07:00
einfo "Some ZFS filesystems not unmounted"
2011-05-02 15:39:59 -07:00
fi
2011-07-04 14:58:51 -07:00
# Don't fail if we couldn't umount everything. /usr might be in use.
eend 0
return 0
2011-05-02 15:39:59 -07:00
}
status()
{
# show pool status and list
$ZPOOL status && echo && $ZPOOL list
}