diff options
Diffstat (limited to 'init.d/swapfiles.in')
-rw-r--r-- | init.d/swapfiles.in | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/init.d/swapfiles.in b/init.d/swapfiles.in new file mode 100644 index 00000000..f46f3c86 --- /dev/null +++ b/init.d/swapfiles.in @@ -0,0 +1,45 @@ +#!@PREFIX@/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> +# Released under the 2-clause BSD license. + +depend() +{ + need localmount + keyword -jail -openvz -prefix -vserver -lxc +} + +start() +{ + ebegin "Activating additional swap space" + case "$RC_UNAME" in + NetBSD|OpenBSD) swapctl -A -t noblk >/dev/null;; + *) swapon -a >/dev/null;; + esac + eend 0 # If swapon has nothing todo it errors, so always return 0 +} + +stop() +{ + ebegin "Deactivating additional swap space" + + # Try to unmount all tmpfs filesystems not in use, else a deadlock may + # occur. As $RC_SVCDIR may also be tmpfs we cd to it to lock it + # fixme: Do we need this here since we are only unmounting swap files + # and loopback swap? + cd "$RC_SVCDIR" + umount -a -t tmpfs 2>/dev/null + + case "$RC_UNAME" in + Linux) + while read filename type rest; do + case "$type" in + file) swapoff $filename >/dev/null;; + esac + case "$filename" in + /dev/loop*) swapoff $filename >/dev/null;; + esac + done < /proc/swaps + ;; + esac + eend 0 +} |