From 8b0f49f52f8a3793197f0abf9f5be5d9eaac95c4 Mon Sep 17 00:00:00 2001 From: James Bottomley Date: Fri, 10 Sep 2004 09:52:44 -0400 Subject: [PATCH] [PATCH] Fix up scsi_test_unit_ready() to work correctly with CD-ROMs Olaf Hering noticed that SG_IO was no-longer working correctly on some CD-ROMS. The reason is a change in behaviour induced by switching to the new scsi_test_unit_ready() API. Apparently the CD-ROM special case needs to ignore both UNIT_ATTENTION and NOT_READY for removable media. Signed-off-by: James Bottomley --- drivers/scsi/scsi_lib.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index ac16f21dc3a12..47bf354d29579 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1585,11 +1585,12 @@ scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries) if (!sreq) return -ENOMEM; - sreq->sr_data_direction = DMA_NONE; - scsi_wait_req(sreq, cmd, NULL, 0, timeout, retries); + sreq->sr_data_direction = DMA_NONE; + scsi_wait_req(sreq, cmd, NULL, 0, timeout, retries); if ((driver_byte(sreq->sr_result) & DRIVER_SENSE) && - (sreq->sr_sense_buffer[2] & 0x0f) == UNIT_ATTENTION && + ((sreq->sr_sense_buffer[2] & 0x0f) == UNIT_ATTENTION || + (sreq->sr_sense_buffer[2] & 0x0f) == NOT_READY) && sdev->removable) { sdev->changed = 1; sreq->sr_result = 0; -- 2.53.0