scsi: megaraid_sas - stop cmd processing if hw_crit_error is set
Subsystems (2)
PATCH 1/5 scsi: megaraid_sas - stop cmd processing if hw_crit_error is set
Checks if hw_crit_error is set before processing cmds. Added in megasas_queue_command and command completion routines.
Signed-off-by Sumant Patro <[email protected]>
---drivers/scsi/megaraid/megaraid_sas.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletion(-)
drivers/scsi/megaraid/megaraid_sas.c +12 -1
@@ -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 megasif (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(unsstruct 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;
drivers/scsi/megaraid/megaraid_sas.c +12 -1
@@ -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 megasif (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(unsstruct 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;
Review
Quoted 2 lines · On Tue, 06 Feb 2007 13:49:24 -0800 Sumant Patro <[email protected]> wrote:
(quoted diff) +2
-0+ /* Don't process if we have already declared adapter dead */ + if(instance->hw_crit_error)
Preferred kernel coding style is "if (".
Quoted 1 line
[p1-crit_err.patch text/x-patch (1.3KB)]
argh. Please don't send two copies of the patch in the email. Because the result applies happily with `patch --dry-run' and then creates a great mess when you try to apply the patch for real.