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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to