tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: panic: ffs_valloc: dup alloc



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 ? */


Home | Main Index | Thread Index | Old Index