[SCSI] megaraid_sas: fix extended timeout handling
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>
This commit is contained in:
parent
f33b5d783b
commit
e5b3a65fd7
1 changed files with 6 additions and 20 deletions
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue