diff options
| author | Stas Sergeev <stsp@aknet.ru> | 2005-01-07 21:41:19 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@evo.osdl.org> | 2005-01-07 21:41:19 -0800 |
| commit | b2abed6ae9d1d484748c062e4b407e9ce3ea9686 (patch) | |
| tree | b197be2a56b5cf1c059ecbeb71852d141761f421 | |
| parent | 25620d2c7f50120e7b5f7c56d56938e56e47e4ea (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.c | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-cd.c | 4 |
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; } } |
