From nobody@FreeBSD.org  Fri Jun  1 22:43:53 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 618B4106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Fri,  1 Jun 2012 22:43:53 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 4CD078FC08
	for <freebsd-gnats-submit@FreeBSD.org>; Fri,  1 Jun 2012 22:43:53 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q51Mhr1U090474
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 1 Jun 2012 22:43:53 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id q51MhrYR090473;
	Fri, 1 Jun 2012 22:43:53 GMT
	(envelope-from nobody)
Message-Id: <201206012243.q51MhrYR090473@red.freebsd.org>
Date: Fri, 1 Jun 2012 22:43:53 GMT
From: Warren Block <wblock@FreeBSD.org>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] rc: addswap-mounted swapfiles cause panic on shutdown
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         168544
>Category:       bin
>Synopsis:       [patch] [rc]: addswap-mounted swapfiles cause panic on shutdown
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-rc
>State:          patched
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun 01 22:50:10 UTC 2012
>Closed-Date:    
>Last-Modified:  Wed Jun 12 16:50:00 UTC 2013
>Originator:     Warren Block
>Release:        9-STABLE
>Organization:
>Environment:
FreeBSD lightning 9.0-STABLE FreeBSD 9.0-STABLE #0 r236402: Fri Jun  1 10:17:43 MDT 2012     root@lightning:/usr/obj/usr/src/sys/LIGHTNING  amd64
>Description:
If swap is not empty on shutdown, swapfiles cause a panic after disks are synced.
>How-To-Repeat:
Without any other swap, add a swapfile in /etc/rc.conf:

swapfile="/usr/swap/swap"

Use system until swap is not empty, as shown by top(1).  Shut down system.
>Fix:
Apply patch, which dismounts the swap file on shutdown.  Patch lightly tested on 9-stable, looks like it should also apply to head, stable/8, and stable/7.

Patch attached with submission follows:

Index: stable/9/etc/rc.d/addswap
===================================================================
--- stable/9/etc/rc.d/addswap	(revision 236424)
+++ stable/9/etc/rc.d/addswap	(working copy)
@@ -7,13 +7,13 @@
 
 # PROVIDE: addswap
 # REQUIRE: FILESYSTEMS kld
-# KEYWORD: nojail
+# KEYWORD: nojail shutdown
 
 . /etc/rc.subr
 
 name="addswap"
 start_cmd="addswap_start"
-stop_cmd=":"
+stop_cmd="addswap_stop"
 
 addswap_start()
 {
@@ -29,5 +29,21 @@
 	esac
 }
 
+addswap_stop()
+{
+	case ${swapfile} in
+	[Nn][Oo] | '')
+		;;
+	*)
+		mdev=`mdconfig -lv | grep "${swapfile}" | cut -f1`
+		swapctl -l | grep -q "/dev/$mdev"
+		if [ $? -eq 0 ]; then
+			echo "Dismounting swapfile ${swapfile}"
+			swapoff "/dev/$mdev" && mdconfig -d -u "$mdev"
+		fi
+		;;
+	esac
+}
+
 load_rc_config $name
 run_rc_command "$1"


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-rc 
Responsible-Changed-By: wblock 
Responsible-Changed-When: Sat Jun 9 06:08:26 UTC 2012 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=168544 

From: Warren Block <wblock@wonkity.com>
To: bug-followup@FreeBSD.org, wblock@FreeBSD.org
Cc:  
Subject: Re: bin/168544: [patch] [rc]: addswap-mounted swapfiles cause panic
 on shutdown
Date: Mon, 11 Mar 2013 19:41:41 -0600 (MDT)

   This message is in MIME format.  The first part should be readable text,
   while the remaining parts are likely unreadable without MIME-aware tools.
 
 --269406509-38401472-1363052501=:91728
 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII
 
 This updated patch adds a user-configurable md unit number and sets the 
 default value to 99.  This moves the md swap drive out of the range 
 normally used by users, so they won't be surprised that the new unit 
 created by mdconfig starts with 1 rather than zero.
 
 Thanks to crees for rewriting and improving parts.
 --269406509-38401472-1363052501=:91728
 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=addswap99.diff.txt
 Content-Transfer-Encoding: BASE64
 Content-ID: <alpine.BSF.2.00.1303111941410.91728@lightning.wonkity.com>
 Content-Description: 
 Content-Disposition: attachment; filename=addswap99.diff.txt
 
 SW5kZXg6IC91c3Ivc3JjL2V0Yy9yYy5kL2FkZHN3YXANCj09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT0NCi0tLSAvdXNyL3NyYy9ldGMvcmMuZC9hZGRzd2FwCShy
 ZXZpc2lvbiAyNDgxNTMpDQorKysgL3Vzci9zcmMvZXRjL3JjLmQvYWRkc3dh
 cAkod29ya2luZyBjb3B5KQ0KQEAgLTgsMTMgKzgsMTMgQEANCiAjIFBST1ZJ
 REU6IGFkZHN3YXANCiAjIFJFUVVJUkU6IEZJTEVTWVNURU1TIGtsZA0KICMg
 QkVGT1JFOiAgbmV0aWYNCi0jIEtFWVdPUkQ6IG5vamFpbA0KKyMgS0VZV09S
 RDogbm9qYWlsIHNodXRkb3duDQogDQogLiAvZXRjL3JjLnN1YnINCiANCiBu
 YW1lPSJhZGRzd2FwIg0KIHN0YXJ0X2NtZD0iYWRkc3dhcF9zdGFydCINCi1z
 dG9wX2NtZD0iOiINCitzdG9wX2NtZD0iYWRkc3dhcF9zdG9wIg0KIA0KIGFk
 ZHN3YXBfc3RhcnQoKQ0KIHsNCkBAIC0yMywxMiArMjMsNDcgQEANCiAJCTs7
 DQogCSopDQogCQlpZiBbIC13ICIke3N3YXBmaWxlfSIgXTsgdGhlbg0KLQkJ
 CWVjaG8gIkFkZGluZyAke3N3YXBmaWxlfSBhcyBhZGRpdGlvbmFsIHN3YXAi
 DQotCQkJbWRldj1gbWRjb25maWcgLWEgLXQgdm5vZGUgLWYgJHtzd2FwZmls
 ZX1gICYmIHN3YXBvbiAvZGV2LyR7bWRldn0NCisJCQljaGVja19zdGFydG1z
 Z3MgJiYgZWNobyAiQWRkaW5nICR7c3dhcGZpbGV9IGFzIGFkZGl0aW9uYWwg
 c3dhcCINCisNCisJCQlpZiBbIC1uICIke3N3YXBmaWxlX21kdW5pdH0iIF07
 IHRoZW4NCisJCQkJbWRldj0iL2Rldi9tZCR7c3dhcGZpbGVfbWR1bml0I21k
 fSINCisJCQkJbWRjb25maWcgLWEgLXQgdm5vZGUgLWYgIiR7c3dhcGZpbGV9
 IiAtdSAke3N3YXBmaWxlX21kdW5pdH0NCisJCQllbHNlDQorCQkJCW1kZXY9
 Ii9kZXYvYG1kY29uZmlnIC1hIC10IHZub2RlIC1mICIke3N3YXBmaWxlfSJg
 Ig0KKwkJCWZpDQorDQorCQkJaWYgWyAkPyAtZXEgMCBdOyB0aGVuDQorCQkJ
 CXN3YXBvbiAke21kZXZ9DQorCQkJZWxzZQ0KKwkJCQllY2hvICJlcnJvciBj
 cmVhdGluZyBzd2FwZmlsZSBkZXZpY2UiDQorCQkJZmkNCiAJCWZpDQogCQk7
 Ow0KIAllc2FjDQogfQ0KIA0KK2FkZHN3YXBfc3RvcCgpDQorew0KKwljYXNl
 ICR7c3dhcGZpbGV9IGluDQorCVtObl1bT29dIHwgJycpDQorCQk7Ow0KKwkq
 KQ0KKwkJaWYgWyAtbiAiJHtzd2FwZmlsZV9tZHVuaXR9IiBdOyB0aGVuDQor
 CQkJbWRldj0iL2Rldi9tZCR7c3dhcGZpbGVfbWR1bml0I21kfSINCisJCWVs
 c2UNCisJCQltZGV2PSIvZGV2L2BtZGNvbmZpZyAtbHYgfCBncmVwICIke3N3
 YXBmaWxlfSIgfCBjdXQgLWYxYCINCisJCQlzd2FwZmlsZV9tZHVuaXQ9JHtt
 ZGV2I21kfQ0KKwkJZmkNCisJCWlmIFsgLW4gIiR7c3dhcGZpbGVfbWR1bml0
 fSIgXTsgdGhlbg0KKwkJCXN3YXBjdGwgLWwgfCBncmVwIC1xICR7bWRldn0N
 CisJCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4NCisJCQkJZWNobyAiRGlzbW91
 bnRpbmcgc3dhcGZpbGUgJHtzd2FwZmlsZX0iDQorCQkJCXN3YXBvZmYgJHtt
 ZGV2fSAmJiBtZGNvbmZpZyAtZCAtdSAke3N3YXBmaWxlX21kdW5pdH0NCisJ
 CQlmaQ0KKwkJZmkNCisJCTs7DQorCWVzYWMNCit9DQorDQogbG9hZF9yY19j
 b25maWcgJG5hbWUNCiBydW5fcmNfY29tbWFuZCAiJDEiDQo=
 
 --269406509-38401472-1363052501=:91728--

From: Warren Block <wblock@wonkity.com>
To: bug-followup@FreeBSD.org, wblock@FreeBSD.org
Cc:  
Subject: Re: bin/168544: [patch] [rc]: addswap-mounted swapfiles cause panic
 on shutdown
Date: Mon, 11 Mar 2013 20:28:57 -0600 (MDT)

   This message is in MIME format.  The first part should be readable text,
   while the remaining parts are likely unreadable without MIME-aware tools.
 
 --269406509-1901305935-1363055337=:92071
 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII
 
 Diff for /etc/defaults/rc.conf to set the md unit number.
 --269406509-1901305935-1363055337=:92071
 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=addswap99-2.diff.txt
 Content-Transfer-Encoding: BASE64
 Content-ID: <alpine.BSF.2.00.1303112028570.92071@lightning.wonkity.com>
 Content-Description: 
 Content-Disposition: attachment; filename=addswap99-2.diff.txt
 
 SW5kZXg6IC91c3Ivc3JjL2V0Yy9kZWZhdWx0cy9yYy5jb25mDQo9PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09DQotLS0gL3Vzci9zcmMvZXRjL2RlZmF1bHRzL3Jj
 LmNvbmYJKHJldmlzaW9uIDI0ODE1MykNCisrKyAvdXNyL3NyYy9ldGMvZGVm
 YXVsdHMvcmMuY29uZgkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDYgKzMzLDcg
 QEANCiAJCQkJIyBydW5uaW5nIGR1cmluZyBib290IChjYW4gaW5jcmVhc2Ug
 Ym9vdCB0aW1lKS4NCiANCiBzd2FwZmlsZT0iTk8iCQkjIFNldCB0byBuYW1l
 IG9mIHN3YXBmaWxlIGlmIGF1eCBzd2FwZmlsZSBkZXNpcmVkLg0KK3N3YXBm
 aWxlX21kdW5pdD0iOTkiCSMgU3dhcGZpbGUgbWQoNCkgdW5pdCBudW1iZXIg
 Y3JlYXRlZCBieSBtZGNvbmZpZyg4KS4NCiBhcG1fZW5hYmxlPSJOTyIJCSMg
 U2V0IHRvIFlFUyB0byBlbmFibGUgQVBNIEJJT1MgZnVuY3Rpb25zIChvciBO
 TykuDQogYXBtZF9lbmFibGU9Ik5PIgkjIFJ1biBhcG1kIHRvIGhhbmRsZSBB
 UE0gZXZlbnQgZnJvbSB1c2VybGFuZC4NCiBhcG1kX2ZsYWdzPSIiCQkjIEZs
 YWdzIHRvIGFwbWQgKGlmIGVuYWJsZWQpLg0K
 
 --269406509-1901305935-1363055337=:92071--
State-Changed-From-To: open->patched 
State-Changed-By: crees 
State-Changed-When: Wed Jun 12 16:44:55 UTC 2013 
State-Changed-Why:  
Fixed in head 

http://www.freebsd.org/cgi/query-pr.cgi?pr=168544 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/168544: commit references a PR
Date: Wed, 12 Jun 2013 16:44:26 +0000 (UTC)

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