Commit 849ac6a5 authored by Raghava Aditya Renukunta's avatar Raghava Aditya Renukunta Committed by Martin K. Petersen

scsi: aacraid: Skip wellness sync on controller failure

aac_command_thread checks on the health of controller periodically,
using aac_check_health. If the status is an error state KERNEL_PANIC or
anything else. The driver will attempt to restart the adapter, but the
response is not checked in aac_command_thread. This allows the periodic
sync to go thru and lead the driver to a hung state.

Fixed by terminating the periodic loop(intended per original design),
if the controller is not restored to a healthy state.

Cc: stable@vger.kernel.org
Fixes: 3d77d840 (scsi: aacraid: Added support for periodic wellness sync)
Signed-off-by: default avatarRaghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Reviewed-by: default avatarDavid Carroll <David.Carroll@microsemi.com>
Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent a7e2c642
...@@ -2481,7 +2481,7 @@ int aac_command_thread(void *data) ...@@ -2481,7 +2481,7 @@ int aac_command_thread(void *data)
/* Don't even try to talk to adapter if its sick */ /* Don't even try to talk to adapter if its sick */
ret = aac_check_health(dev); ret = aac_check_health(dev);
if (!dev->queues) if (ret || !dev->queues)
break; break;
next_check_jiffies = jiffies next_check_jiffies = jiffies
+ ((long)(unsigned)check_interval) + ((long)(unsigned)check_interval)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment