Date: Mon, 1 Jun 1998 23:27:48 +0000 (GMT) From: Terry Lambert <tlambert@primenet.com> To: toasty@home.dragondata.com (Kevin Day) Cc: tlambert@primenet.com, mi@video-collage.com, current@FreeBSD.ORG Subject: Re: NFS discovery Message-ID: <199806012327.QAA00473@usr05.primenet.com> In-Reply-To: <199806012317.SAA20375@home.dragondata.com> from "Kevin Day" at Jun 1, 98 06:17:15 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> > The freeze on server crash comes from an outstanding RPC call that > > was made, the call was ack'ed, but the response had not yet been sent. > > > > Because the call was ack'ed, the client doesn't retry the call. > > This is arguably a bug in the client code. > > > > The easiest workaround is to use UDP NFS instead of TCP. > > I am using UDP.... (TCP seemed much much worse) I'm resigned to the fact > that NFS does freeze and never come back... What I was curious about was why > the `mount -u -o async /blah` 'unfroze' it. The remount flushes all data and restarts all transactions. It is the transaction restart that is causing you to recover. The unmount stat transaction fails to trigger a restart because it doesn't get an ESTALE back for the mount point reference because the NFS VOP_LOCK can't be reentered. To see this better, look at how the client builds cookies and makes transaction requests, and what it sleeps on inre the remount case. This is a well known problem that crept in under cover of some of the macrotized "goto"'s in the 4.4 code. It is not trivial to resolve, mostly because the NFS code is such crap right now. One thing that would help greatly is to view the NFS server as a peer of other VFS consumers (like the syscall layer is a VFS consumer) on the server side, and the NFS client as a reeentrant finite state automaton (an idea that the NFS VOP_LOCK thwarts because of lack of reentrancy being inherent in its design). Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199806012327.QAA00473>
