[SCSI] megaraid_sas: fix extended timeout handling
authorChristoph Hellwig <hch@lst.de>
Fri, 10 Mar 2006 16:08:57 +0000 (17:08 +0100)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Tue, 14 Mar 2006 20:18:51 +0000 (14:18 -0600)
Replace the eh_timed_out method usage with setting sdev->timeout in
slave_configure.  Also only use the extended timeout for raid volumes,
physical devices shouldn't need it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/megaraid/megaraid_sas.c

index 4f39dd01936dc30cf44145cc1edc73a0109b7c00..38ede24b22a65fc28d419bd2254ecd4fce24b1d8 100644 (file)
@@ -772,8 +772,6 @@ megasas_queue_command(struct scsi_cmnd *scmd, void (*done) (struct scsi_cmnd *))
                goto out_return_cmd;
 
        cmd->scmd = scmd;
-       scmd->SCp.ptr = (char *)cmd;
-       scmd->SCp.sent_command = jiffies;
 
        /*
         * Issue the command to the FW
@@ -804,6 +802,12 @@ static int megasas_slave_configure(struct scsi_device *sdev)
         */
        if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && sdev->type == TYPE_DISK)
                return -ENXIO;
+
+       /*
+        * The RAID firmware may require extended timeouts.
+        */
+       if (sdev->channel >= MEGASAS_MAX_PD_CHANNELS)
+               sdev->timeout = 90 * HZ;
        return 0;
 }
 
@@ -875,23 +879,6 @@ static int megasas_generic_reset(struct scsi_cmnd *scmd)
        return ret_val;
 }
 
-static enum scsi_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
-{
-       unsigned long seconds;
-
-       if (scmd->SCp.ptr) {
-               seconds = (jiffies - scmd->SCp.sent_command) / HZ;
-
-               if (seconds < 90) {
-                       return EH_RESET_TIMER;
-               } else {
-                       return EH_NOT_HANDLED;
-               }
-       }
-
-       return EH_HANDLED;
-}
-
 /**
  * megasas_reset_device -      Device reset handler entry point
  */
@@ -962,7 +949,6 @@ static struct scsi_host_template megasas_template = {
        .eh_device_reset_handler = megasas_reset_device,
        .eh_bus_reset_handler = megasas_reset_bus_host,
        .eh_host_reset_handler = megasas_reset_bus_host,
-       .eh_timed_out = megasas_reset_timer,
        .use_clustering = ENABLE_CLUSTERING,
 };