Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Oct 2014 18:44:38 -0400
From:      Garrett Wollman <wollman@csail.mit.edu>
To:        freebsd-stable@freebsd.org, freebsd-fs@freebsd.org
Cc:        rmacklem@freebsd.org
Subject:   Definite NFS  bug
Message-ID:  <21586.48982.64913.250497@khavrinen.csail.mit.edu>

next in thread | raw e-mail | index | archive | help
Like many other users, I upgrade my FreeBSD servers by NFS-mounting
/usr/src and /usr/obj from a shared build server.[1]  Since I upgraded
the build server to 9.3, clients running 9.3 kernels have been
randomly erroring out during installkernel and installworld.  Today I
had some time to look more closely into this and found that the error
is definitely coming from the server: at some point, it just randomly
starts returning errors to client ACCESS and GETATTR operations.  The
errors are a mix of NFS3ERR_IO and NFS3ERR_ACCES, but there is nothing
on the server to indicate any kind of error, and restarting the
operation on the client causes it to fail in a different place.  With
enough patients and restarts, it's possible to complete the
installation in just four or five passes.

Needless to say this is a bit worrying.  Strangely, 9.1 and 9.2
clients don't see this issue at all; it's only 9.3 clients that
break.

It's easy to reproduce, just 'cd /usr/sc && find . -type f >/dev/null'.
It does not seem to depend on the client NFS version (3 or 4) or
implementation ("old" or "new").  I haven't tried the "old" server yet
-- I'll need to figure out how to do that first.

If anyone is willing to help debug this, I can share a packet trace,
but I don't think it's very informative.  Also, if anyone has a good
dtrace script that I could run on the server that would report what's
going on when that first NFS3ERR_IO is returned, that would be great.

-GAWollman

[1] I'd run my own freebsd-update server but unfortunately it is too
tied to building things that look like official FreeBSD security
updates, and isn't really designed for (e.g.) updating kernels when we
change a configuration option.  It also doesn't have any obvious knobs
for building with anything other than a default {make,src}.conf.
And with a pkg-able base just around the corner I don't really want to
put much effort into making freebsd-update do what I want.  NFS, on
the other hand, is a big deal and so I need to track down and fix
these bugs.



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