svn commit: r251660 - in head/etc: defaults rc.d

Chris Rees crees at FreeBSD.org
Wed Jun 12 16:44:19 UTC 2013


Author: crees (doc,ports committer)
Date: Wed Jun 12 16:44:17 2013
New Revision: 251660
URL: http://svnweb.freebsd.org/changeset/base/251660

Log:
  Clean up swapfile memory disk on shutdown
  
  Make the md unit number configurable so that it can be predicted
  
  PR:		bin/168544
  Submitted by:	wblock (based on)
  Approved by:	kevlo

Modified:
  head/etc/defaults/rc.conf
  head/etc/rc.d/addswap

Modified: head/etc/defaults/rc.conf
==============================================================================
--- head/etc/defaults/rc.conf	Wed Jun 12 16:13:05 2013	(r251659)
+++ head/etc/defaults/rc.conf	Wed Jun 12 16:44:17 2013	(r251660)
@@ -33,6 +33,7 @@ always_force_depends="NO"	# Set to check
 				# running during boot (can increase boot time).
 
 swapfile="NO"		# Set to name of swapfile if aux swapfile desired.
+swapfile_mdunit="99"	# Swapfile md(4) unit number created by mdconfig(8).
 apm_enable="NO"		# Set to YES to enable APM BIOS functions (or NO).
 apmd_enable="NO"	# Run apmd to handle APM event from userland.
 apmd_flags=""		# Flags to apmd (if enabled).

Modified: head/etc/rc.d/addswap
==============================================================================
--- head/etc/rc.d/addswap	Wed Jun 12 16:13:05 2013	(r251659)
+++ head/etc/rc.d/addswap	Wed Jun 12 16:44:17 2013	(r251660)
@@ -8,13 +8,13 @@
 # PROVIDE: addswap
 # REQUIRE: FILESYSTEMS kld
 # BEFORE:  netif
-# KEYWORD: nojail
+# KEYWORD: nojail shutdown
 
 . /etc/rc.subr
 
 name="addswap"
 start_cmd="addswap_start"
-stop_cmd=":"
+stop_cmd="addswap_stop"
 
 addswap_start()
 {
@@ -23,8 +23,43 @@ addswap_start()
 		;;
 	*)
 		if [ -w "${swapfile}" ]; then
-			echo "Adding ${swapfile} as additional swap"
-			mdev=`mdconfig -a -t vnode -f ${swapfile}` && swapon /dev/${mdev}
+			check_startmsgs && echo "Adding ${swapfile} as additional swap"
+
+			if [ -n "${swapfile_mdunit}" ]; then
+				mdev="/dev/md${swapfile_mdunit#md}"
+				mdconfig -a -t vnode -f "${swapfile}" -u ${swapfile_mdunit}
+			else
+				mdev="/dev/`mdconfig -a -t vnode -f "${swapfile}"`"
+			fi
+
+			if [ $? -eq 0 ]; then
+				swapon ${mdev}
+			else
+				echo "error creating swapfile device"
+			fi
+		fi
+		;;
+	esac
+}
+
+addswap_stop()
+{
+	case ${swapfile} in
+	[Nn][Oo] | '')
+		;;
+	*)
+		if [ -n "${swapfile_mdunit}" ]; then
+			mdev="/dev/md${swapfile_mdunit#md}"
+		else
+			mdev="/dev/`mdconfig -lv | grep "${swapfile}" | cut -f1`"
+			swapfile_mdunit=${mdev#md}
+		fi
+		if [ -n "${swapfile_mdunit}" ]; then
+			swapctl -l | grep -q ${mdev}
+			if [ $? -eq 0 ]; then
+				echo "Dismounting swapfile ${swapfile}"
+				swapoff ${mdev} && mdconfig -d -u ${swapfile_mdunit}
+			fi
 		fi
 		;;
 	esac


More information about the svn-src-head mailing list