NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/43169: sys/dev/ata/wd.c doesn't call disk_unbusy in case of errors/retries
>Number: 43169
>Category: kern
>Synopsis: sys/dev/ata/wd.c doesn't call disk_unbusy in case of
>errors/retries
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Apr 16 12:25:00 +0000 2010
>Originator: leo%marco.de@localhost
>Release: NetBSD 5.99.26
>Organization:
Matthias Pfaller Software Entwicklung
marco Systemanalyse und Entwicklung GmbH Tel +49 8131 5161 41
Hans-Böckler-Str. 2, D 85221 Dachau Fax +49 8131 5161 66
http://www.marco.de/ Email leo%marco.de@localhost
>Environment:
System: NetBSD zork 5.99.26 NetBSD 5.99.26 (ZORK) #0: Sat Apr 10 14:30:43 CEST
2010 leo@zork:/usr/src-current/sys/arch/amd64/compile/ZORK amd64
Architecture: x86_64
Machine: amd64
>Description:
When wd.c retries a request (e.g. after a timeout because the drive
is powered down), it will issue a callout to wdrestart and return
without doing an disk_unbusy. wdrestart will call __wdstart which
will call disk_busy a second time while wddone will call disk_unbusy
only one time.
The same problem applies to ATACMD_TRY_AGAIN.
>How-To-Repeat:
Provoke a disk errror and watch the disk beeing 100% busy all the time
afterwards.
>Fix:
Maybe it would be best to move disk_busy from __wdstart to wdstart?
In that case it would be called only one time per request, but the
disk still would be marked busy until the callout is serviced
(I'm not sure if this should be considered a bug or a feature...).
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index