nfs-server silent data corruption

pluknet pluknet at gmail.com
Wed Apr 23 09:52:11 UTC 2008


2008/4/23 Pyun YongHyeon <pyunyh at gmail.com>:
>
> On Wed, Apr 23, 2008 at 12:13:44AM +0400, pluknet wrote:
>   > On 22/04/2008, Mike Tancsa <mike at sentex.net> wrote:
>   > > At 02:00 PM 4/22/2008, Arno J. Klaassen wrote:
>   > >
>   > > > >
>   > > > > Are you using the latest RELENG_7, or at least the latest version of
>   > > > > nfe thats in RELENG_7 ?
>   > > >
>   > > >
>   > > > Think so :
>   > > >
>   > >
>   > >  OK, and it is the latest RELENG_7 ? Or just the if_nfe.c file has been
>   > > manually updated ? Also, you are using ULE or the 4BSD scheduler ?  I still
>   > > have 4BSD on the box I am testing on.
>   >
>   > Hi, I have the same problem with data corruption (with nfe on nfs server side),
>   > particularly when transferring large files.
>   > Maybe this is somehow associated with the topic.
>   >
>   > My simple test case:
>   > truncate -s 1000m bigfile
>   > ^^ here I get zero-filed file
>   > cp bigfile /nfs/mounted
>   > ^^ here I get not-at-all-zero-filed file, after uploading to nfs server
>   >
>   > I looked at the corrupted file. It contains a few ranges, filed with
>   > non-zero bytes:
>   > equal to zero?  real 4-byte value   offset
>   > ======================================
>   > not equal       1200355616     at pos=38797316
>   > ... <-- this range contains per-4bytes garbage, omit
>   > not equal       3879749905     at pos=38813696
>   >
>   > not equal       161160732      at pos=45613060
>   > ... <-- ditto
>   > not equal       575257183      at pos=45629440
>   >
>   > not equal       1943682165     at pos=59768836
>   > ... <-- ditto
>   > not equal       2843639625     at pos=59785216
>   >
>   > not equal       2653910121     at pos=60293124
>   > ... <-- ditto
>   > not equal       3462830780     at pos=60309504
>   >
>   > Some info:
>   >
>   > nfs server on 8-CURRENT as of Apr 17
>   > nfs client on 7.0-STABLE as of Apr 12
>   >
>   > dmesg | grep nfe
>   > nfe0: <NVIDIA nForce2 MCP2 Networking Adapter> port 0xe000-0xe007 mem
>   > 0xe2001000-0xe2001fff irq 20 at device 4.0 on pci0
>   > miibus0: <MII bus> on nfe0
>   > nfe0: Ethernet address: 00:04:61:6c:76:b1
>   > nfe0: [FILTER]
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > nfe0: tx v1 error 0x6001
>   > ^^^
>
>  I'm not sure it's related with data corruption issue but 0x6001
>  would mean Tx underflow error. I recall these Tx errors were seen
>  on nfe(4) if negotiated speed/duplex does not match with link
>  partner or MACs.
>  Does link partner also agree on speed/duplex settings of nfe(4)?

One unmanaged 10/100 switch is between them (which are both 100baseTX),
so I cannot say exactly :( Though I can achieve speed upto 100mbps.
I can test later directly on demand.

>  What PHY driver nfe(4) use?
>

$ kldload if_nfe
nfe0: <NVIDIA nForce2 MCP2 Networking Adapter> port 0xe000-0xe007 mem
0xe2001000-0xe2001fff irq 20 at device 4.0 on pci0
nfe0: Ethernet address: 00:04:61:6c:76:b1
nfe0: [FILTER]
miibus0: <MII bus> on nfe0
rlphy0: <RTL8201L 10/100 media interface> PHY 1 on miibus0
rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
nfe0: link state changed to DOWN
nfe0: link state changed to UP

So, it seems to be rlphy.

>
>   > This appears while cp'ing file to server.
>   > (btw they do not appear with disabled polling, probably it's an another issue)
>   >
>   > vmstat -i | grep nfe
>   > irq20: nfe0 ohci0                      1          0
>   >
>   > nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>   >         options=48<VLAN_MTU,POLLING>
>   >         ether 00:04:61:6c:76:b1
>   >         inet 192.168.200.137 netmask 0xffffff00 broadcast 192.168.200.255
>   >         media: Ethernet autoselect (100baseTX <full-duplex>)
>   >         status: active
>   > I can reproduce it regardless polling presence.
>   >
>   > nfe0 at pci0:0:4:0:        class=0x020000 card=0x10001695 chip=0x006610de
>   > rev=0xa1 hdr=0x00
>   >

wbr,
pluknet


More information about the freebsd-stable mailing list