Skip to content

Commit

Permalink
[SCSI] megaraid_sas: do not process cmds if hw_crit_error is set
Browse files Browse the repository at this point in the history
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@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
Sumant Patro authored and James Bottomley committed Feb 16, 2007
1 parent a9b7320 commit af37acf
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion drivers/scsi/megaraid/megaraid_sas.c
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,11 @@ megasas_queue_command(struct scsi_cmnd *scmd, void (*done) (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;

Expand Down Expand Up @@ -1282,11 +1287,13 @@ megasas_deplete_reply_queue(struct megasas_instance *instance, u8 alt_status)
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;
}

Expand Down Expand Up @@ -1741,6 +1748,10 @@ static void megasas_complete_cmd_dpc(unsigned long instance_addr)
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;

Expand Down

0 comments on commit af37acf

Please sign in to comment.