summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/zvol
diff options
context:
space:
mode:
Diffstat (limited to 'etc/rc.d/zvol')
-rwxr-xr-xetc/rc.d/zvol48
1 files changed, 48 insertions, 0 deletions
diff --git a/etc/rc.d/zvol b/etc/rc.d/zvol
new file mode 100755
index 0000000..3179d42
--- /dev/null
+++ b/etc/rc.d/zvol
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: zvol
+# REQUIRE: hostid
+# BEFORE: fsck
+# KEYWORD: nojail
+
+. /etc/rc.subr
+
+name="zvol"
+rcvar="zfs_enable"
+start_cmd="zvol_start"
+stop_cmd="zvol_stop"
+required_modules="zfs"
+
+zvol_start()
+{
+ zfs volinit
+ # Enable swap on ZVOLs with property org.freebsd:swap=on.
+ zfs list -H -o org.freebsd:swap,name -t volume | \
+ while read state name; do
+ case "${state}" in
+ [oO][nN])
+ swapon /dev/zvol/${name}
+ ;;
+ esac
+ done
+}
+
+zvol_stop()
+{
+ # Disable swap on ZVOLs with property org.freebsd:swap=on.
+ zfs list -H -o org.freebsd:swap,name -t volume | \
+ while read state name; do
+ case "${state}" in
+ [oO][nN])
+ swapoff /dev/zvol/${name}
+ ;;
+ esac
+ done
+ zfs volfini
+}
+
+load_rc_config $name
+run_rc_command "$1"
OpenPOWER on IntegriCloud