]> git.hungrycats.org Git - linux/commitdiff
[PATCH] Fix IDE bus reset and DMA disable when reading blank DVD-R
authorJens Axboe <axboe@suse.de>
Mon, 15 Dec 2003 23:51:55 +0000 (15:51 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Mon, 15 Dec 2003 23:51:55 +0000 (15:51 -0800)
From Jon Burgess:

  There is a problems with blank DVD media using the ide-cd driver.

  When we attempt to read the blank disk, the drive responds to the read
  request by returning a "blank media" error.  The kernel doesn't have
  any special case handling for this sense value and retries the request
  a couple of times, then gives up and does a bus reset and disables DMA
  to the device.

  Which obviously doesn't help the situation.

  The sense key value of 8 isn't listed in ide-cd.h, but it is listed in
  scsi.h as a "BLANK_CHECK" error.

  This trivial patch treats this error condition as a reason to abort
  the request.  This behaviour is the same as what we do with a blank CD-R.

  It looks like the same fix might be desired for 2.4 as well, although
  is perhaps not so important since scsi-ide is normally used instead.

drivers/ide/ide-cd.c
drivers/ide/ide-cd.h

index dfc01ebe467824e048974a5c13adca19468883a3..c332518996efd847e9d4be5c4558cfa1314fe39f 100644 (file)
@@ -799,6 +799,10 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
                         * sector...  If we got here the error is not correctable */
                        ide_dump_status (drive, "media error (bad sector)", stat);
                        do_end_request = 1;
+               } else if (sense_key == BLANK_CHECK) {
+                       /* Disk appears blank ?? */
+                       ide_dump_status (drive, "media error (blank)", stat);
+                       do_end_request = 1;
                } else if ((err & ~ABRT_ERR) != 0) {
                        /* Go to the default handler
                           for other errors. */
index 5b25f2e37ac1caf2df983b71532178af4067b123..030b39ea13e4520113bd71d624f1d72fac7334b8 100644 (file)
@@ -501,6 +501,7 @@ struct cdrom_info {
 #define ILLEGAL_REQUEST         0x05
 #define UNIT_ATTENTION          0x06
 #define DATA_PROTECT            0x07
+#define BLANK_CHECK             0x08
 #define ABORTED_COMMAND         0x0b
 #define MISCOMPARE              0x0e
 
@@ -578,7 +579,7 @@ const char * const sense_key_texts[16] = {
        "Illegal request",
        "Unit attention",
        "Data protect",
-       "(reserved)",
+       "Blank check",
        "(reserved)",
        "(reserved)",
        "Aborted command",