* [PATCH] megaraid_sas: fix extended timeout handling
@ 2006-02-06 14:14 Christoph Hellwig
2006-03-10 16:08 ` Christoph Hellwig
0 siblings, 1 reply; 2+ messages in thread
From: Christoph Hellwig @ 2006-02-06 14:14 UTC (permalink / raw)
To: Sreenivas.Bagalkote, Sumant.Patro; +Cc: linux-scsi
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.
Applies ontop of the previous physical device attachment fix which
introduces megasas_slave_configure.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: linux-2.6/drivers/scsi/megaraid/megaraid_sas.c
===================================================================
--- linux-2.6.orig/drivers/scsi/megaraid/megaraid_sas.c 2006-02-06 14:59:13.000000000 +0100
+++ linux-2.6/drivers/scsi/megaraid/megaraid_sas.c 2006-02-06 15:11:43.000000000 +0100
@@ -686,8 +686,6 @@
goto out_return_cmd;
cmd->scmd = scmd;
- scmd->SCp.ptr = (char *)cmd;
- scmd->SCp.sent_command = jiffies;
/*
* Issue the command to the FW
@@ -714,6 +712,12 @@
*/
if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && sdev->type == TYPE_DISK)
sdev->no_uld_attach = 1;
+
+ /*
+ * The RAID firmware may require extended timeouts.
+ */
+ if (sdev->channel >= MEGASAS_MAX_PD_CHANNELS)
+ sdev->timeout = 90 * HZ;
return 0;
}
@@ -785,23 +789,6 @@
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
*/
@@ -872,7 +859,6 @@
.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,
};
@@ -976,10 +962,6 @@
struct megasas_header *hdr = &cmd->frame->hdr;
unsigned long flags;
- if (cmd->scmd) {
- cmd->scmd->SCp.ptr = (char *)0;
- }
-
switch (hdr->cmd) {
case MFI_CMD_PD_SCSI_IO:
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] megaraid_sas: fix extended timeout handling
2006-02-06 14:14 [PATCH] megaraid_sas: fix extended timeout handling Christoph Hellwig
@ 2006-03-10 16:08 ` Christoph Hellwig
0 siblings, 0 replies; 2+ messages in thread
From: Christoph Hellwig @ 2006-03-10 16:08 UTC (permalink / raw)
To: Sreenivas.Bagalkote, Sumant.Patro; +Cc: linux-scsi
On Mon, Feb 06, 2006 at 03:14:52PM +0100, Christoph Hellwig wrote:
> 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.
>
> Applies ontop of the previous physical device attachment fix which
> introduces megasas_slave_configure.
Here's a resend against current mainline. Note that scsi-misc is
missing the hidep physical disks patch so it needs another mainline
merge before this patch applies.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: scsi-misc-2.6/drivers/scsi/megaraid/megaraid_sas.c
===================================================================
--- scsi-misc-2.6.orig/drivers/scsi/megaraid/megaraid_sas.c 2006-03-10 11:58:06.000000000 +0100
+++ scsi-misc-2.6/drivers/scsi/megaraid/megaraid_sas.c 2006-03-10 11:59:35.000000000 +0100
@@ -772,8 +772,6 @@
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 @@
*/
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 @@
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 @@
.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,
};
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-03-10 16:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-06 14:14 [PATCH] megaraid_sas: fix extended timeout handling Christoph Hellwig
2006-03-10 16:08 ` Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).