X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=etc%2Finit.d%2Fzfs.lsb.in;fp=etc%2Finit.d%2Fzfs.lsb.in;h=c781f05f4d939280dd8461168fb0680ea8272e46;hb=5faa9c0367e8d6b1ee1c45f1ebeffd3e53ef35e8;hp=0000000000000000000000000000000000000000;hpb=7f4afd300b753ee7e0ce1f8d12c098119193001b;p=zfs.git diff --git a/etc/init.d/zfs.lsb.in b/etc/init.d/zfs.lsb.in new file mode 100644 index 0000000..c781f05 --- /dev/null +++ b/etc/init.d/zfs.lsb.in @@ -0,0 +1,132 @@ +#!/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 +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Should-Stop: +# 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. +. /lib/lsb/init-functions + +# Source zfs configuration. +[ -f /etc/defaults/zfs ] && . /etc/defaults/zfs + +RETVAL=0 + +LOCKFILE=/var/lock/zfs +ZFS="@sbindir@/zfs" +ZPOOL="@sbindir@/zpool" +ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache" + +[ -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 + + log_failure_msg "SELinux ZFS policy required" + return 4 + fi + + # Delay until all required block devices are present. + udevadm settle + + # 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 $ZPOOL_CACHE ] ; then + log_begin_msg "Importing ZFS pools" + $ZPOOL import -c $ZPOOL_CACHE -aN 2>/dev/null + log_end_msg $? + + log_begin_msg "Mounting ZFS filesystems" + $ZFS mount -a + log_end_msg $? + + log_begin_msg "Exporting ZFS filesystems" + $ZFS share -a + log_end_msg $? + fi + + touch $LOCKFILE +} + +stop() +{ + [ ! -f $LOCKFILE ] && return 3 + + log_begin_msg "Unmounting ZFS filesystems" + $ZFS umount -a + log_end_msg $? + + 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