Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5b3a65f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by James Bottomley
Browse files

[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: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent f33b5d78
Loading
Loading
Loading
Loading
+6 −20
Original line number Diff line number Diff line
@@ -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,
};