important NFS client patch for FreeBSD8.n

Jeremy Chadwick freebsd at jdc.parodius.com
Tue Jan 11 08:17:08 UTC 2011


On Mon, Jan 10, 2011 at 11:40:37PM -0800, Chris H wrote:
> Greetings, and thank you for the "heads up".
> On Mon, January 10, 2011 2:22 pm, Rick Macklem wrote:
> > I just commited a patch (r217242) to head. Anyone who is using client
> > side NFS on FreeBSD8.n should apply this patch. It is also available at:
> > http://people.freebsd.org/~rmacklem/krpc.patch
> >
> >
> > It fixes a problem where the kernel rpc assumes that 4 bytes of data
> > exists in the first mbuf without checking. If the data straddles multiple mbufs,
> > it uses garbage and then a typical case will wedge for a minute or so until it
> > times out and establishes a new TCP connection. It also replaces m_pullup() with
> > m_copydata(), since m_pullup() can fail for rare cases when there is data
> > available. (m_pullup() uses MGET(, M_DONTWAIT,) which can fail when mbuf
> > allocation is constrainted, for example.)
> >
> > Thanks to john.gemignani at isilon.com for spotting this problem, rick
> 
> I just fired a message off to @amd64 && @net because I am seeing messages like:
> 
> nfe0: tx v2 error 0x6204<UNDERFLOW>
> 
> on a recent 8.1/amd64 install which is connected to an 8.0/i386 via NFS.
> They both run NFS client && server, and they both utilize mount points
> on each other. They are only 2 of several interconnected servers. The
> others are all 7x/i386. But I only see these messages on the 8.1/amd64,
> and only when connected to, and utilizing mounts on the 8.0/i386, and even
> then, only when the data exceeds ~1.5Mb.
> I guess I'm asking if the messages I'm receiving are related to the
> corrections your patch provides. Or should I keep looking for the answer
> for the messages I am seeing.

The above message is coming from the nfe(4) NIC driver, not from NFS.
It's possible that NFS tickles some kind of I/O throughput quirk in
drivers such as nfe(4), given that they're intended for cheap desktops.

CC'ing Yong-Hyeon Pyun to assist in debugging/explaining the above
error.

In the interim, can you please provide output from the following
commands:

# uname -a
# dmesg           (please include relevant nfe details and miibus)
# pciconf -lvcb   (please only include nfe-related output)
# netstat -ind    (you can XX-out MACs and/or IPs)
# ifconfig -a     (you can XX-out MACs and/or IPs)

Thanks.

-- 
| Jeremy Chadwick                                   jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.               PGP 4BD6C0CB |



More information about the freebsd-stable mailing list