kern/131342: [nfs] mounting/unmounting of disks causes NFS to fail

Andrey Simonenko simon at comsys.ntu-kpi.kiev.ua
Fri Jul 15 10:38:27 UTC 2011


On Fri, Jul 15, 2011 at 12:19:56PM +0200, Martin Birgmeier wrote:
> I do not think what you write has to do with the error condition I 
> describe, for two reasons: first, mountd is only consulted while doing 
> mounts, and the client is not doing a mount, but rather only a file 
> access on an already mounted file system; and second, this happens when 
> I mount a file system on the server which is not exported and thus does 
> not cause the exports list to be changed.

I completely understood the situation you have described.

The mountd is responsible for NFSv2/3 MOUNT requests (all procedures MNT,
DUMP, UMNT, UNMNTALL, EXPORT), and it is responsible for loading NFS
export settings into the kernel part of NFS server.

When one mounts any file system on the server, then the mount(8) utility
sends SIGHUP to mountd(8), see the src/sbin/mount/mount.c:restart_mountd()
function.

When mountd(8) re-reads exports(5) file(s), it 1) flushes all current
settings and 2) loads all new settings one-by-one.  So, mountd(8) reloads
all NFS export settings on each file system local mount, even if a file
system is being mounted is not NFS exported.  If a NFSv2/3/4 client is
active on some NFS exported file system, then it will get "access denied"
error, NFS export settings on a server side are incomplete.

If you do not believe me, then apply attached patch to src/sbin/mount/mount.c
and try to reproduce this error.

ps: I send CC to freebsd-fs as a separate email, because for some reason
my messages could not be delivered to freebsd-fs during last week.

> 
> Regards,
> 
> Martin
> 
> On 07/15/11 12:13, Andrey Simonenko wrote:
> > On Fri, Jul 08, 2011 at 01:10:03PM +0000, Martin Birgmeier wrote:
> >> The following reply was made to PR kern/131342; it has been noted by GNATS.
> >>
> >> From: Martin Birgmeier<Martin.Birgmeier at aon.at>
> >> To: bug-followup at FreeBSD.org
> >> Cc:
> >> Subject: Re: kern/131342: [nfs] mounting/unmounting of disks causes NFS to
> >>   fail
> >> Date: Fri, 08 Jul 2011 15:00:03 +0200
> >>
> >>   This is a friendly reminder that some kind soul with knowledge of the
> >>   relevant kernel parts look into this... the error can easily be
> >>   reproduced. I just had it on a 7.4 system which did heavy reading from
> >>   an 8.2 server. When I mounted something on the server, the client got a
> >>   "Permission denied" reply.
> >>
> >>   So, to recap the scenario:
> >>
> >>   7.4 NFS client
> >>   8.2 NFS server
> >>   client mounts a fs from the server (via IPv4, might be interesting to
> >>   look at http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/151681, too, but
> >>   that is unrelated)
> >>   client does heavy i/o on the mounted fs
> >>   server does a mount (on its side, in this case it was from an md device)
> >>
> >>   -->  error: client gets back some NFS error (in this case "permission
> >>   denied")
> >>
> > This is a well-known behaviour of NFS server on FreeBSD when some file
> > system is mounted on a server part.  This happens because when mount(8)
> > mounts something it sends the SIGHUP signal to mountd(8), it then re-reads
> > exports(5) file and loads new settings into NFS server.  Since mountd(8)
> > flushes current settings, loads new settings in a step-by-step style, all
> > these changes are happened in nonatomic way.  As a result exports settings
> > in the NFS server are incomplete in any point of time during configuration
> > loading or reloading.
> >
> > This time window allows "denied" clients to access not allowed parts of
> > exported file systems and "allowed" clients can get access denied errors.
> >
> > If you are interested in this topic, you can look on the kern/136865
> > and my messages related to this topic (information in [3] is outdated
> > and in [4] is very outdated):
> >
> > 1. NFS exports atomic and on-the-fly atomic updates
> >     http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/136865
> >
> > 2. NFSE: new NFS exports support for FreeBSD
> >     http://nfse.sourceforge.net/
> >
> > 3. NFS exports atomic and on-the-fly atomic updates
> >     http://lists.freebsd.org/pipermail/freebsd-hackers/2009-June/028782.html
> >
> > 4. Atomic updates of NFS export lists
> >     http://lists.freebsd.org/pipermail/freebsd-hackers/2006-April/016248.html
> >
> > 5. CFT: nfse compatible mode with mountd (NFS exports file)
> >     http://lists.freebsd.org/pipermail/freebsd-fs/2010-May/008421.html
> >
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mount.c.diff
Type: text/x-diff
Size: 370 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20110715/a286543c/mount.c.bin


More information about the freebsd-fs mailing list