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