summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStas Sergeev <stsp@aknet.ru>2005-01-07 21:41:19 -0800
committerLinus Torvalds <torvalds@evo.osdl.org>2005-01-07 21:41:19 -0800
commitb2abed6ae9d1d484748c062e4b407e9ce3ea9686 (patch)
treeb197be2a56b5cf1c059ecbeb71852d141761f421
parent25620d2c7f50120e7b5f7c56d56938e56e47e4ea (diff)
[PATCH] fix cdrom autoclose
The attached patch fixes the CD-ROM autoclose. It is broken in recent kernels for CD-ROMs that do not properly report that the tray is opened. Now on such a drives the kernel will do one close attempt and check for the disc again. This is how it used to work in the past. Signed-off-by: Stas Sergeev <stsp@aknet.ru> Acked-by: Alexander Kern <alex.kern@gmx.de> Acked-by: Jens Axboe <axboe@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/cdrom/cdrom.c2
-rw-r--r--drivers/ide/ide-cd.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index fc4e07a4e8fa..fda53bb07ffb 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -1076,6 +1076,8 @@ int open_for_data(struct cdrom_device_info * cdi)
}
cdinfo(CD_OPEN, "the tray is now closed.\n");
}
+ /* the door should be closed now, check for the disc */
+ ret = cdo->drive_status(cdi, CDSL_CURRENT);
if (ret!=CDS_DISC_OK) {
ret = -ENOMEDIUM;
goto clean_up_and_return;
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 7bf6d7e2ab33..912dfca74e15 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -2688,9 +2688,9 @@ int ide_cdrom_drive_status (struct cdrom_device_info *cdi, int slot_nr)
*/
if (sense.sense_key == NOT_READY) {
if (sense.asc == 0x3a) {
- if (sense.ascq == 0 || sense.ascq == 1)
+ if (sense.ascq == 1)
return CDS_NO_DISC;
- else if (sense.ascq == 2)
+ else if (sense.ascq == 0 || sense.ascq == 2)
return CDS_TRAY_OPEN;
}
}