|
@@ -1471,6 +1471,14 @@ megasas_queue_command_lck(struct scsi_cmnd *scmd, void (*done) (struct scsi_cmnd
|
|
|
return SCSI_MLQUEUE_HOST_BUSY;
|
|
|
|
|
|
spin_lock_irqsave(&instance->hba_lock, flags);
|
|
|
+
|
|
|
+ if (instance->adprecovery == MEGASAS_HW_CRITICAL_ERROR) {
|
|
|
+ spin_unlock_irqrestore(&instance->hba_lock, flags);
|
|
|
+ scmd->result = DID_ERROR << 16;
|
|
|
+ done(scmd);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
if (instance->adprecovery != MEGASAS_HBA_OPERATIONAL) {
|
|
|
spin_unlock_irqrestore(&instance->hba_lock, flags);
|
|
|
return SCSI_MLQUEUE_HOST_BUSY;
|