Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 May 2003 22:35:57 -0700
From:      David Schultz <das@FreeBSD.ORG>
To:        Giorgos Keramidas <keramida@ceid.upatras.gr>
Cc:        current@FreeBSD.ORG
Subject:   Re: Panic with swap-backed md devices
Message-ID:  <20030518053557.GA223@HAL9000.homeunix.com>
In-Reply-To: <20030514232428.GA731@gothmog.gr>
References:  <20030514232428.GA731@gothmog.gr>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 15, 2003, Giorgos Keramidas wrote:
> Trying to create and destroy a swap-backed md device results in panics
> with today's CURRENT.  I was trying to make a new -t swap md disk to
> test the problem described in a PR.  Using the following small shell
> script I noticed that it always causes a panic when mdconfig -d is run:
> 
> 	mdconfig -a -t swap -s 100m -u 10
> 	disklabel -r -w md10 auto
> 	newfs -O 1 -b 8192 -s 1024 md10
> 	mount /dev/md10 /mnt
> 	mount
> 	umount /mnt
> 	mount
> 	mdconfig -d -u 10

The following patch should fix the panic, but there's a small
vm_object leak that's still unfixed.  I'll look into that.

Index: sys/dev/md/md.c
===================================================================
RCS file: /cvs/src/sys/dev/md/md.c,v
retrieving revision 1.98
diff -u -r1.98 md.c
--- sys/dev/md/md.c	2 May 2003 06:18:58 -0000	1.98
+++ sys/dev/md/md.c	18 May 2003 04:04:23 -0000
@@ -932,7 +932,9 @@
 	if (sc->cred != NULL)
 		crfree(sc->cred);
 	if (sc->object != NULL) {
+		VM_OBJECT_LOCK(sc->object);
 		vm_pager_deallocate(sc->object);
+		VM_OBJECT_UNLOCK(sc->object);
 	}
 	if (sc->indir)
 		destroy_indir(sc, sc->indir);
@@ -990,7 +992,9 @@
 	sc->flags = mdio->md_options & MD_FORCE;
 	if (mdio->md_options & MD_RESERVE) {
 		if (swap_pager_reserve(sc->object, 0, sc->nsect) < 0) {
+			VM_OBJECT_LOCK(sc->object);
 			vm_pager_deallocate(sc->object);
+			VM_OBJECT_UNLOCK(sc->object);
 			sc->object = NULL;
 			mddestroy(sc, td);
 			return (EDOM);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030518053557.GA223>