From 3256534776203d4d86fea508e66cfde2b06d39a2 Mon Sep 17 00:00:00 2001 From: Willem Riede Date: Mon, 31 Oct 2005 00:03:49 +0000 Subject: [SCSI] ide-scsi fails to call idescsi_check_condition for things like "Medium not present" This patch started life as a response to fedora specific ide subsystem changes that made error handling of my ATAPI tape drive fail; the specifics are in https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=160868 The insertion of the statement rq->errors = err; near the end of ide_end_drive_cmd() in drivers/ide/ide-io.c means that rq->errors does not contain what it needs to in idescsi_end_request() in drivers/scsi/ide-scsi.c anymore. Recent mainline kernels now also have this change. Signed-off-by: Willem Riede Signed-off-by: James Bottomley --- drivers/scsi/ide-scsi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'drivers/scsi/ide-scsi.c') diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index f04f3289938..50d0cec5477 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c @@ -395,6 +395,7 @@ static int idescsi_end_request (ide_drive_t *drive, int uptodate, int nrsecs) int log = test_bit(IDESCSI_LOG_CMD, &scsi->log); struct Scsi_Host *host; u8 *scsi_buf; + int errors = rq->errors; unsigned long flags; if (!(rq->flags & (REQ_SPECIAL|REQ_SENSE))) { @@ -421,11 +422,11 @@ static int idescsi_end_request (ide_drive_t *drive, int uptodate, int nrsecs) printk (KERN_WARNING "ide-scsi: %s: timed out for %lu\n", drive->name, pc->scsi_cmd->serial_number); pc->scsi_cmd->result = DID_TIME_OUT << 16; - } else if (rq->errors >= ERROR_MAX) { + } else if (errors >= ERROR_MAX) { pc->scsi_cmd->result = DID_ERROR << 16; if (log) printk ("ide-scsi: %s: I/O error for %lu\n", drive->name, pc->scsi_cmd->serial_number); - } else if (rq->errors) { + } else if (errors) { if (log) printk ("ide-scsi: %s: check condition for %lu\n", drive->name, pc->scsi_cmd->serial_number); if (!idescsi_check_condition(drive, rq)) -- cgit v1.2.3 From f64a181d898e0518d5ae90c4870069510de977e1 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Mon, 31 Oct 2005 18:32:08 +0100 Subject: [SCSI] remove Scsi_Device typedef Signed-off-by: James Bottomley --- drivers/scsi/ide-scsi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/scsi/ide-scsi.c') diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 3553da0e1cd..e1960d69fb9 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c @@ -882,7 +882,7 @@ static inline int should_transform(ide_drive_t *drive, struct scsi_cmnd *cmd) struct gendisk *disk = cmd->request->rq_disk; if (disk) { - struct Scsi_Device_Template **p = disk->private_data; + struct struct scsi_device_Template **p = disk->private_data; if (strcmp((*p)->scsi_driverfs_driver.name, "sg") == 0) return test_bit(IDESCSI_SG_TRANSFORM, &scsi->transform); } -- cgit v1.2.3