[PATCH 1/6] scsi: megaraid_sas - donot process cmds ifhw_crit_error is set

From: Sumant Patro
Date: Wed Feb 14 2007 - 20:44:37 EST



Checks if hw_crit_error is set.
If it is set, we donot process commands.
Checks added in megasas_queue_command and command completion routines.

Signed-off-by: Sumant Patro <sumant.patro@xxxxxxx>
---

drivers/scsi/megaraid/megaraid_sas.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletion(-)

diff -uprN linux-feb13-orig/drivers/scsi/megaraid/megaraid_sas.c linux-feb13-new-p1/drivers/scsi/megaraid/megaraid_sas.c
--- linux-feb13-orig/drivers/scsi/megaraid/megaraid_sas.c 2007-02-13 06:44:46.000000000 -0800
+++ linux-feb13-new-p1/drivers/scsi/megaraid/megaraid_sas.c 2007-02-13 07:18:39.000000000 -0800
@@ -841,6 +841,11 @@ megasas_queue_command(struct scsi_cmnd *

instance = (struct megasas_instance *)
scmd->device->host->hostdata;
+
+ /* Don't process if we have already declared adapter dead */
+ if (instance->hw_crit_error)
+ return SCSI_MLQUEUE_HOST_BUSY;
+
scmd->scsi_done = done;
scmd->result = 0;

@@ -1282,11 +1287,13 @@ megasas_deplete_reply_queue(struct megas
if(instance->instancet->clear_intr(instance->reg_set))
return IRQ_NONE;

+ if (instance->hw_crit_error)
+ goto out_done;
/*
* Schedule the tasklet for cmd completion
*/
tasklet_schedule(&instance->isr_tasklet);
-
+out_done:
return IRQ_HANDLED;
}

@@ -1741,6 +1748,10 @@ static void megasas_complete_cmd_dpc(uns
struct megasas_cmd *cmd;
struct megasas_instance *instance = (struct megasas_instance *)instance_addr;

+ /* If we have already declared adapter dead, donot complete cmds */
+ if (instance->hw_crit_error)
+ return;
+
producer = *instance->producer;
consumer = *instance->consumer;



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/