diff options
Diffstat (limited to 'drivers/scsi/aacraid/commsup.c')
-rw-r--r-- | drivers/scsi/aacraid/commsup.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index abce48ccc85b..cb9a92f894ab 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c | |||
@@ -1217,12 +1217,13 @@ int aac_reset_adapter(struct aac_dev * aac, int forced) | |||
1217 | } | 1217 | } |
1218 | 1218 | ||
1219 | /* Quiesce build, flush cache, write through mode */ | 1219 | /* Quiesce build, flush cache, write through mode */ |
1220 | aac_send_shutdown(aac); | 1220 | if (forced < 2) |
1221 | aac_send_shutdown(aac); | ||
1221 | spin_lock_irqsave(host->host_lock, flagv); | 1222 | spin_lock_irqsave(host->host_lock, flagv); |
1222 | retval = _aac_reset_adapter(aac, forced); | 1223 | retval = _aac_reset_adapter(aac, forced ? forced : ((aac_check_reset != 0) && (aac_check_reset != 1))); |
1223 | spin_unlock_irqrestore(host->host_lock, flagv); | 1224 | spin_unlock_irqrestore(host->host_lock, flagv); |
1224 | 1225 | ||
1225 | if (retval == -ENODEV) { | 1226 | if ((forced < 2) && (retval == -ENODEV)) { |
1226 | /* Unwind aac_send_shutdown() IOP_RESET unsupported/disabled */ | 1227 | /* Unwind aac_send_shutdown() IOP_RESET unsupported/disabled */ |
1227 | struct fib * fibctx = aac_fib_alloc(aac); | 1228 | struct fib * fibctx = aac_fib_alloc(aac); |
1228 | if (fibctx) { | 1229 | if (fibctx) { |
@@ -1372,14 +1373,14 @@ int aac_check_health(struct aac_dev * aac) | |||
1372 | 1373 | ||
1373 | printk(KERN_ERR "%s: Host adapter BLINK LED 0x%x\n", aac->name, BlinkLED); | 1374 | printk(KERN_ERR "%s: Host adapter BLINK LED 0x%x\n", aac->name, BlinkLED); |
1374 | 1375 | ||
1375 | if (!aac_check_reset || | 1376 | if (!aac_check_reset || ((aac_check_reset != 1) && |
1376 | (aac->supplement_adapter_info.SupportedOptions2 & | 1377 | (aac->supplement_adapter_info.SupportedOptions2 & |
1377 | le32_to_cpu(AAC_OPTION_IGNORE_RESET))) | 1378 | le32_to_cpu(AAC_OPTION_IGNORE_RESET)))) |
1378 | goto out; | 1379 | goto out; |
1379 | host = aac->scsi_host_ptr; | 1380 | host = aac->scsi_host_ptr; |
1380 | if (aac->thread->pid != current->pid) | 1381 | if (aac->thread->pid != current->pid) |
1381 | spin_lock_irqsave(host->host_lock, flagv); | 1382 | spin_lock_irqsave(host->host_lock, flagv); |
1382 | BlinkLED = _aac_reset_adapter(aac, 0); | 1383 | BlinkLED = _aac_reset_adapter(aac, aac_check_reset != 1); |
1383 | if (aac->thread->pid != current->pid) | 1384 | if (aac->thread->pid != current->pid) |
1384 | spin_unlock_irqrestore(host->host_lock, flagv); | 1385 | spin_unlock_irqrestore(host->host_lock, flagv); |
1385 | return BlinkLED; | 1386 | return BlinkLED; |