Subject: kern/36030: K3b panics the machine while verifying written disc
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <svs+pr@grep.ru>
List: netbsd-bugs
Date: 03/18/2007 15:05:01
>Number: 36030
>Category: kern
>Synopsis: K3b panics the machine while verifying written disc
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Mar 18 15:05:00 +0000 2007
>Originator: User Svssvs+pr@grep.ru
>Release: NetBSD 4.0_BETA2
>Organization:
>Environment:
System: NetBSD mononoke.nyo 4.0_BETA2 NetBSD 4.0_BETA2 (MONONOKE-$Revision: 1.2 $) #2: Sat Mar 10 23:00:34 MSK 2007 svs@mononoke.nyo:/vol/2/b/obj/kernel/i386.M i386
Architecture: i386
Machine: i386
>Description:
K3b sends a READ 10 command for 128 2048-byte sectors and 4.0_BETA2 instantly panics:
pmap_unwire: wiring for pmap 0xcce97004 va 0x836e000 didn't change!
cd1(piixide0:0:1): physio split the request.. cannot proceed
panic: kernel diagnostic assertion "(bp->b_flags & B_ERROR) == 0" failed: file "/vol/2/s/src-4-0/sys/kern/kern_physio.c", line 201
$NetBSD: kern_physio.c,v 1.76 2006/11/01 10:17:58 yamt Exp $
>How-To-Repeat:
Write a data CD in K3b, be sure to enable data verification.
>Fix:
Only a workaround for K3b:
--- libk3b/jobs/k3bdatatrackreader.cpp.orig 2007-02-08 14:14:53.000000000 +0000
+++ libk3b/jobs/k3bdatatrackreader.cpp
@@ -216,7 +216,11 @@ void K3bDataTrackReader::WorkThread::run
//
m_device->setSpeed( 0xffff, 0xffff );
+#ifdef __NetBSD__
+ s_bufferSizeSectors = 31;
+#else
s_bufferSizeSectors = 128;
+#endif
unsigned char* buffer = new unsigned char[m_usedSectorSize*s_bufferSizeSectors];
while( s_bufferSizeSectors > 0 && read( buffer, m_firstSector.lba(), s_bufferSizeSectors ) < 0 ) {
kdDebug() << "(K3bDataTrackReader) determine max read sectors: "
>Unformatted: