Mountd, why not use the '-S' flag by default

Rick Macklem rmacklem at uoguelph.ca
Tue Dec 9 03:25:21 UTC 2014


Mark Schouten wrote:
> Hi,
> 
> 
> I'm using a FreeBSD nfs-server as storage for my Linux KVM-based
> VPS-platform. The images reside on the NFS-server.
> 
> 
> I'm been noticing errors in my VPS disks when running 'zfs set
> sharenfs=XYZ', probably because of reloads of mountd.
> 
> 
> While trying to debug that, I ran acros this message in mountd(8):
> 
>      -S      Tell mountd to suspend/resume execution of the nfsd
>      threads when-
>              ever the exports list is being reloaded.  This avoids
>              intermit-
>              tent access errors for clients that do NFS RPCs while
>              the exports
>              are being reloaded, but introduces a delay in RPC
>              response while
>              the reload is in progress.  If mountd crashes while an
>              exports
>              load is in progress, mountd must be restarted to get the
>              nfsd
>              threads running again, if this option is used.
> 
> 
> I can't think of a reason why you wouldn't want to use -S by
> default.. An '/etc/rc.d/mountd reload' without it causes even my
> running Bonnie on a normal NFS-share (not via a diskimage) to stop
> with 'input/output error'. Can someone enlighten me with the
> drawbacks of using -S ?
> 
Well, there are a couple of things:
With "-S" all nfsd threads get suspended/resumed whenever exports
changes. This can result in a "pause" in NFS server response and
that might be considered a POLA violation.

It only works for the new NFS server and not the old one and the
old one is still used by some. If it was the default, then the
old and new NFS servers would have had different behaviour.
(Again, this could be considered a POLA violation.)

When "-S" was introduced by me, it was done as a "stop gap", since I
had thought that mountd would eventually be replaced by nfse
(and nfse did allow exports to be updated "atomically" so the problem
 didn't occur). It now appears that no variant of nfse will end up
in FreeBSD.

The last one is noted in the description. If, for some reason, mountd
crashes during a reload, then all the nfsd threads could be stuck
suspended. (I don't know if this occurs in practice.)

Basically, I am a coward w.r.t. POLA and almost never change a
default. (The one case I did change was making rsize, wsize
default to MAX_BSIZE instead of 32K. By some strange twist of
fate, this caused a lot of grief, since there was a bug related
to TSO segments just under 64K for network interfaces that are
limited to 32 transmit segments. I am still saying "disable TSO"
to people running older FreeBSD systems because of this.;-)

rick

> 
> Met vriendelijke groeten,
> 
> --
> Kerio Operator in de Cloud? https://www.kerioindecloud.nl/
> Mark Schouten  | Tuxis Internet Engineering
> KvK: 61527076 | http://www.tuxis.nl/
> T: 0318 200208 | info at tuxis.nl


More information about the freebsd-fs mailing list