diff options
Diffstat (limited to 'etc/init.d/zfs.fedora')
-rw-r--r-- | etc/init.d/zfs.fedora | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/etc/init.d/zfs.fedora b/etc/init.d/zfs.fedora new file mode 100644 index 000000000..275160355 --- /dev/null +++ b/etc/init.d/zfs.fedora @@ -0,0 +1,120 @@ +#!/bin/bash +# +# zfs This script will mount/umount the zfs filesystems. +# +# chkconfig: 2345 01 99 +# description: This script will mount/umount the zfs filesystems during +# system boot/shutdown. Configuration of which filesystems +# should be mounted is handled by the zfs 'mountpoint' and +# 'canmount' properties. See the zfs(8) man page for details. +# It is also responsible for all userspace zfs services. +# +### BEGIN INIT INFO +# Provides: zfs +# Required-Start: $local_fs +# Required-Stop: $local_fs +# Should-Start: +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: Mount/umount the zfs filesystems +# Description: ZFS is an advanced filesystem designed to simplify managing +# and protecting your data. This service mounts the ZFS +# filesystems and starts all related zfs services. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +# Source zfs configuration. +[ -f /etc/sysconfig/zfs ] && . /etc/sysconfig/zfs + +RETVAL=0 + +LOCKFILE=/var/lock/subsys/zfs +CACHEFILE=/etc/zfs/zpool.cache +ZPOOL=/usr/sbin/zpool +ZFS=/usr/sbin/zfs + +[ -x $ZPOOL ] || exit 1 +[ -x $ZFS ] || exit 2 + +start() +{ + [ -f $LOCKFILE ] && return 3 + + # Requires selinux policy which has not been written. + if [ -r "/selinux/enforce" ] && + [ "$(cat /selinux/enforce)" = "1" ]; then + action "SELinux ZFS policy required: " /bin/false + return 4 + fi + + # Load the zfs module stack + /sbin/modprobe zfs + + # Ensure / exists in /etc/mtab, if not update mtab accordingly. + # This should be handled by rc.sysinit but lets be paranoid. + awk '$2 == "/" { exit 1 }' /etc/mtab + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + /bin/mount -f / + fi + + # Import all pools described by the cache file, and then mount + # all filesystem based on their properties. + if [ -f $CACHEFILE ] ; then + action $"Importing ZFS pools: " \ + $ZPOOL import -c $CACHEFILE -aN 2>/dev/null + action $"Mounting ZFS filesystems: " \ + $ZFS mount -a + fi + + touch $LOCKFILE +} + +stop() +{ + [ ! -f $LOCKFILE ] && return 3 + + action $"Unmounting ZFS filesystems: " $ZFS umount -a + + rm -f $LOCKFILE +} + +status() +{ + [ ! -f $LOCKFILE ] && return 3 + + $ZPOOL status && echo && $ZPOOL list +} + +case "$1" in + start) + start + RETVAL=$? + ;; + stop) + stop + RETVAL=$? + ;; + status) + status + RETVAL=$? + ;; + restart) + stop + start + ;; + condrestart) + if [ -f $LOCKFILE ]; then + stop + start + fi + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart}" + ;; +esac + +exit $RETVAL |