Current-Users archive

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

Re: panic: biodone2 already



On Sat, Sep 13, 2008 at 06:13:52PM +0200, Lars Nordlund wrote:
> On Thu, 11 Sep 2008 15:20:11 +0200
> Juergen Hannken-Illjes <hannken%eis.cs.tu-bs.de@localhost> wrote:
> 
> > On Mon, Sep 01, 2008 at 07:22:15PM +0200, Lars Nordlund wrote:
> > > Hi
> > > 
> > > Got this panic while writing a DVD+RW last night. I am running NetBSD
> > > 4.99.72/amd64. Kernel message hand-copied from screen..
> > > 
> > > panic: biodone2 already
> > 
> > Lars,
> > please check if you see this or a related panic with the diff attached.
> 
> Hi again
> 
> While testing stuff this week I noticed that my wd0 disk was slower
> than usual. It was only doing 5-10MiB/s instead of the more normal
> 50MiB/s. It turned out to be caused by a BIOS setting change I made
> some weeks ago while hunting for some 2000 lost sectors. Anyway,
> changing SATA/RAID mode from 'disabled' to 'AHCI' gave back the
> proper disk performance.
> 
> Since I am writing the DVDs from an ISO on wd0 I wanted to
> re-test with and without your patch. Without patch I got a hang
> within "half a DVD-RW". With your patch the computer has been able to
> write DVD-RWs all day long.

Ok, so there is no UDF involved and a plain vanilla kernel hangs writing
a DVD.

Could you try the attached diff instead of my first diff.  If possible
both with 'disabled' and 'AHCI' BIOS setting.

-- 
Juergen Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig 
(Germany)

Index: ../kern/kern_physio.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kern_physio.c,v
retrieving revision 1.87
diff -p -u -2 -r1.87 kern_physio.c
--- ../kern/kern_physio.c       15 Feb 2008 13:46:04 -0000      1.87
+++ ../kern/kern_physio.c       14 Sep 2008 10:43:49 -0000
@@ -388,5 +388,7 @@ physio(void (*strategy)(struct buf *), s
 
                        /* [call strategy to start the transfer] */
+                       KERNEL_LOCK(1, NULL);
                        (*strategy)(bp);
+                       KERNEL_UNLOCK_ONE(NULL);
                        bp = NULL;
 


Home | Main Index | Thread Index | Old Index