summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2003-12-15 15:51:55 -0800
committerLinus Torvalds <torvalds@home.osdl.org>2003-12-15 15:51:55 -0800
commit314dc1544cc8f810bbe7afe5fcc61260d5ae46cb (patch)
treeaac25877a7aa94e03336d8ad0de2cbc532f9f61c
parent3f69168f9b568cdb0f125c56de48cd0e6c0de2fe (diff)
[PATCH] Fix IDE bus reset and DMA disable when reading blank DVD-R
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.
-rw-r--r--drivers/ide/ide-cd.c4
-rw-r--r--drivers/ide/ide-cd.h3
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index dfc01ebe4678..c332518996ef 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -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. */
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h
index 5b25f2e37ac1..030b39ea13e4 100644
--- a/drivers/ide/ide-cd.h
+++ b/drivers/ide/ide-cd.h
@@ -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",