• A
    [PATCH] IDE CD end-of media error fix · dbe217af
    Alan Cox 提交于
    This is a patch from Alan that fixes a real ide-cd.c regression causing
    bogus "Media Check" failures for perfectly valid Fedora install ISOs, on
    certain CD-ROM drives.
    
    This is a forward port to 2.6.16 (from RHEL) of the minimal changes for the
    end of media problem.  It may not be sufficient for some controllers
    (promise notably) and it does not touch the locking so the error path
    locking is as horked as in mainstream.
    
    From: Ingo Molnar <mingo@elte.hu>
    
    I have ported the patch to 2.6.17-rc4 and tested it by provoking
    end-of-media IO errors with an unaligned ISO image.  Unlike the vanilla
    kernel, the patched kernel interpreted the error condition correctly with
    512 byte granularity:
    
     hdc: command error: status=0x51 { DriveReady SeekComplete Error }
     hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
     ide: failed opcode was: unknown
     ATAPI device hdc:
       Error: Illegal request -- (Sense key=0x05)
       Illegal mode for this track or incompatible medium -- (asc=0x64, ascq=0x00)
       The failed "Read 10" packet command was:
       "28 00 00 04 fb 78 00 00 06 00 00 00 00 00 00 00 "
     end_request: I/O error, dev hdc, sector 1306080
     Buffer I/O error on device hdc, logical block 163260
     Buffer I/O error on device hdc, logical block 163261
     Buffer I/O error on device hdc, logical block 163262
    
    the unpatched kernel produces an incorrect error dump:
    
     hdc: command error: status=0x51 { DriveReady SeekComplete Error }
     hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
     ide: failed opcode was: unknown
     end_request: I/O error, dev hdc, sector 1306080
     Buffer I/O error on device hdc, logical block 163260
     hdc: command error: status=0x51 { DriveReady SeekComplete Error }
     hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
     ide: failed opcode was: unknown
     end_request: I/O error, dev hdc, sector 1306088
     Buffer I/O error on device hdc, logical block 163261
     hdc: command error: status=0x51 { DriveReady SeekComplete Error }
     hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
     ide: failed opcode was: unknown
     end_request: I/O error, dev hdc, sector 1306096
     Buffer I/O error on device hdc, logical block 163262
    
    I do not have the right type of CD-ROM drive to reproduce the end-of-media
    data corruption bug myself, but this same patch in RHEL solved it.
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
    Cc: Jens Axboe <axboe@suse.de>
    Cc: Matt Mackall <mpm@selenic.com>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    dbe217af
ide-io.c 50.1 KB