Commit 4e6b1825 authored by Mahesh Rajashekhara's avatar Mahesh Rajashekhara Committed by Greg Kroah-Hartman

SCSI: aacraid: Fix for arrays are going offline in the system. System hangs

commit c5bebd82 upstream.

One of the customer had reported that the set of raid logical arrays will
become unavailable (I/O offline) after a long hours of IO stress test.  The OS
wouldn`t be accessible afterwards and require a hard reset.

This driver patch has a fix for race condition between the doorbell and the
circular buffer. The driver is modified to do an extra read after clearing the
doorbell in case there had been a completion posted during the small timing
window.

With this fix, we ran IO stress for ~13 days. There were no IO failures.
Signed-off-by: default avatarMahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 98dcc294
...@@ -93,6 +93,9 @@ static irqreturn_t aac_src_intr_message(int irq, void *dev_id) ...@@ -93,6 +93,9 @@ static irqreturn_t aac_src_intr_message(int irq, void *dev_id)
int send_it = 0; int send_it = 0;
extern int aac_sync_mode; extern int aac_sync_mode;
src_writel(dev, MUnit.ODR_C, bellbits);
src_readl(dev, MUnit.ODR_C);
if (!aac_sync_mode) { if (!aac_sync_mode) {
src_writel(dev, MUnit.ODR_C, bellbits); src_writel(dev, MUnit.ODR_C, bellbits);
src_readl(dev, MUnit.ODR_C); src_readl(dev, MUnit.ODR_C);
......
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