On Tue, Oct 05, 2010 at 04:23:39PM -0500, KAMADA Ken'ichi wrote: > At Fri, 19 Mar 2010 17:51:46 -0500, myself wrote: > > > > I'm seeing a panic: ffs_valloc: dup alloc. > > Does anyone have a similar panic? > > > > The kernel is -current from March 15. > > I cannot repeat the panic reliably, but it seems to occur after > > suspend/resume (immediately or several minutes later). > > The panic occured in /home, which is a ffs on cgd on wd. > > "fsck -f" does not report any error on it. > > I finally found a clue for this problem. > With the attached patch [1], my system seems to be stable again. That patch will break some things. Try this patch, instead? Dave -- David Young OJC Technologies dyoung%ojctech.com@localhost Urbana, IL * (217) 278-3933
Index: sys/dev/ata/wd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ata/wd.c,v
retrieving revision 1.384
diff -u -p -r1.384 wd.c
--- sys/dev/ata/wd.c 24 Feb 2010 22:37:57 -0000 1.384
+++ sys/dev/ata/wd.c 12 Oct 2010 16:28:40 -0000
@@ -489,9 +489,10 @@ wdstrategy(struct buf *bp)
}
/* If device invalidated (e.g. media change, door open,
- * device suspension), then error.
+ * device detachment), then error.
*/
- if ((wd->sc_flags & WDF_LOADED) == 0 || !device_is_active(wd->sc_dev)) {
+ if ((wd->sc_flags & WDF_LOADED) == 0 ||
+ !device_is_enabled(wd->sc_dev)) {
bp->b_error = EIO;
goto done;
}
@@ -573,6 +574,10 @@ wdstart(void *arg)
ATADEBUG_PRINT(("wdstart %s\n", device_xname(wd->sc_dev)),
DEBUG_XFERS);
+
+ if (!device_is_active(wd->sc_dev))
+ return;
+
while (wd->openings > 0) {
/* Is there a buf for us ? */