Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Feb 2001 21:55:40 +0000
From:      Ian Dowse <iedowse@maths.tcd.ie>
To:        scsi@freebsd.org
Cc:        iedowse@maths.tcd.ie
Subject:   Solved: Corruption on ahc reads - seems PCI latency related 
Message-ID:   <200102082155.aa15040@salmon.maths.tcd.ie>
In-Reply-To: Your message of "Wed, 31 Jan 2001 22:53:10 GMT." <200101312253.aa86550@salmon.maths.tcd.ie> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <200101312253.aa86550@salmon.maths.tcd.ie>, Ian Dowse writes:
>
>We have a heavily loaded 4.2-STABLE NFS fileserver machine that
>has recently developed a file corruption problem. The corruption
>seems to be occurring during reads from one SCSI disk (da0). It
>appears that small regions (usually 18 bytes) of a read are 'missed',
>so the buffer cache ends up with mostly the new data, but some
>bytes are from whatever happened to be in the buffer cache before
>the read.

Just so that this information goes into the archives:

Tor Egge spotted a case in the ahc sequencer code where a known
hardware bug in this card might not have been dealt with correctly.
Justin Gibbs suggested the patch below, which is a slight simplification
of Tor's proposal. The FIFOEMP status bit suffers from glitches,
so the optimisation removed by this patch would occasionally skip
a necessary manual flush operation.

Since applying this patch, we have seen no more corruption. Justin
has this fix in his local tree now, so it will get committed soon.

Ian

Index: aic7xxx.seq
===================================================================
RCS file: /FreeBSD/FreeBSD-CVS/src/sys/dev/aic7xxx/aic7xxx.seq,v
retrieving revision 1.94.2.8
diff -u -r1.94.2.8 aic7xxx.seq
--- aic7xxx.seq	2001/01/27 20:56:27	1.94.2.8
+++ aic7xxx.seq	2001/02/06 23:22:00
@@ -904,9 +904,6 @@
 		test	DFCNTRL, DIRECTION jnz ultra2_dmafifoempty;
 		and	DFCNTRL, ~SCSIEN;
 		test	DFCNTRL, SCSIEN jnz .;
-		if ((ahc->bugs & AHC_AUTOFLUSH_BUG) != 0) {
-			test	DFSTATUS, FIFOEMP jnz ultra2_dmafifoempty;
-		}
 ultra2_dmafifoflush:
 		if ((ahc->bugs & AHC_AUTOFLUSH_BUG) != 0) {
 			/*



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <200102082155.aa15040>