lkml.org 
[lkml]   [2011]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] [247/275] cciss: fix lost command issue
Date
2.6.35-longterm review patch.  If anyone has any objections, please let me know.

------------------
From: Bud Brown <bud.brown@redhat.com>

commit 1ddd5049545e0aa1a0ed19bca4d9c9c3ce1ac8a2 upstream.

Under certain workloads a command may seem to get lost. IOW, the Smart Array
thinks all commands have been completed but we still have commands in our
completion queue. This may lead to system instability, filesystems going
read-only, or even panics depending on the affected filesystem. We add an
extra read to force the write to complete.

Testing shows this extra read avoids the problem.

Signed-off-by: Mike Miller <mike.miller@hp.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Andi Kleen <ak@linux.intel.com>

---
drivers/block/cciss.h | 1 +
1 file changed, 1 insertion(+)

Index: linux-2.6.35.y/drivers/block/cciss.h
===================================================================
--- linux-2.6.35.y.orig/drivers/block/cciss.h 2011-03-29 22:50:13.312917773 -0700
+++ linux-2.6.35.y/drivers/block/cciss.h 2011-03-29 23:03:03.435212271 -0700
@@ -173,6 +173,7 @@
printk("Sending %x - down to controller\n", c->busaddr );
#endif /* CCISS_DEBUG */
writel(c->busaddr, h->vaddr + SA5_REQUEST_PORT_OFFSET);
+ readl(h->vaddr + SA5_REQUEST_PORT_OFFSET);
h->commands_outstanding++;
if ( h->commands_outstanding > h->max_outstanding)
h->max_outstanding = h->commands_outstanding;

\
 
 \ /
  Last update: 2011-03-30 23:19    [W:0.974 / U:1.644 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site