Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Mar 96 10:51:27 PST
From:      peter@thirdeye.com (Peter Rowell)
To:        freebsd-hardware@FreeBSD.ORG
Subject:   File corruption (Sun=>BSD w/3c590 + vx driver)
Message-ID:  <9603251851.AA07514@thirdeye.com>

next in thread | raw e-mail | index | archive | help

I come seeking wisdom.  The problem descibed involves file corruption
when copying from a Sun to a BSD machine using NFS, a 3com 3c590 and
the if_vx driver code.

Please excuse the longish message, but I wanted to give enough
specifics that a light might go on in someone's head.

Possible culprits (in order of decreasing probability):

    BSD vx driver for the 3c590
    3com 3c590 board
    BSD nfs server code
    Sun nfs client code
    Sun cp command
    Bad Karma
    Extremely Selective Cosmic Rays

In an exchange with Eric Varsanyi <ewv@boom.bsdi.com>, he mentioned a
FIFO overrun problem with certain 3c590 boards.  However, his observed
pattern of corruption (every other 16-bit word (including the IP
headers) 0's) differs markedly from what I am seeing.

Suggestions/insights/enlightening ridicule/lunch offers are solicited.

    TIA,

    Peter Rowell
    peter@thirdeye.com

----------------------------------------------------------------------------

The BSD system is fully described below.  It is on a network with a
Sparc II running SunOS 4.1.3 and a DEC ALPHA running OSF1 V3.2.

When I got my new system, I eagerly cross-mounted a bunch of file
systems and, from the Sun, did:

    cp -r /SUN/big/honking/directory/tree /BSD/usr/home/someplace

to put a goof-around copy of our product on the BSD machine.
Everything seemed to go fine.  I rlogin'd to the BSD machine, ran our
configure script, and started a make.

It immediately started throwing compile errors left and right.  I
looked at the files involved and noticed that they were all corrupted in
a most peculiar way.

I did a "diff -r" bewteen the Sun and BSD copies and saw that there
were about 200 lines (out of about 130,000 lines) that were corrupted.
The corruption was *always* the deletion of 2 characters or the repetition
of 2 characters.  Sometimes both would happen in the same file.  E.g.:

In the first case, the ",l" is repeated.
In the second case, the "al" is deleted.

    diff BSD/node.c SUN/node.c
    108c108
    <     {tkCmp,   "<=>",          asmiNil,l,      PvFRelopNode}, 
    ---                                     ^^ 2 repeated characters
    >     {tkCmp,   "<=>",          asmiNil,        PvFRelopNode}, 
    112c112
    <     {tkEqu,   "==",           asmiNil,        PvFRelopNode}, 
    ---         ^ "al" is missing
    >     {tkEqual, "==",           asmiNil,        PvFRelopNode}, 


I tried a number of things and found that this problem manifests
consistently (but not with the same files/lines!) when "pushing" from
the Sun to the BSD machine using "cp -r".  (i.e. I was ON the Sun and
was writing TO an NFS mounted filesystem on the BSD machine.)  It does
NOT happen (apparently) when using FTP.  It happened once (I think,
have not been able to repeat) when ON the BSD machine I was pulling
FROM the Sun.  I have not gotten it to happen at all bewteen the Alpha
and the BSD machine.  I will continue to try combinations to see if
there is any other pattern to what is going on.

tar-pipe ::=	tar cf - /Sun/dir | (cd /nfs/BSD/test ; tar xBf -)
			Command
			From
    Command		Host	Status
    ----------------	----	-------------------------------------
    cp -r /SUN /BSD	Sun	multiple files corrupted
    cp -r /SUN /BSD	BSD	OK
    cp -r /DEC /BSD	DEC	OK
    tar-pipe		Sun	multiple files corrupted
    tar-pipe		BSD	multiple files corrupted
    cp dir.tar		Sun	Corrupted, no complaints from tar!
    cp dir.tar		BSD	OK
    cp dir.tar		DEC	OK
    cp dir.tar.gz	Sun	OK !?!?!?!
    cp dir.tar.gz	BSD	OK
    cp dir.tar.gz	DEC	OK

========================================================================

The BSD system is composed of:

Motherboard	ASUS P55TP4N
		512KB pipeline burst cache
		Pentium-S 150 MHz
Memory		32MB, 60ns, no parity
video		Number Nine 9FX771 w/ 2MB
controller	ASUS PCI-SC200 (NCR 53c810 chip)
disk1 (sd0)	Seagate ST32550N, 2.1 GB Barracuda
disk2 (sd1)	Seagate ST15230N, 4.1 GB Hawk
cdrom		Plextor PX43CE, 4plex Plus
tape		HP 1536A 4mm DAT
NIC		3Com 3c590 Combo
audio		Sound Blaster AWE/32

OS		FreeBsd 2.1 (Walnut Creek CD-ROM)
		Using Fred Gray's <fgray@owlnet.rice.edu> if_vx driver
		for the 3c590 board.  (Thanks, Fred!) Note that this is
		the copy from Fred's home page (~ 2/1/96), not the
		modified one in 2.1-current.



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