From owner-freebsd-fs@FreeBSD.ORG Fri Jul 15 10:45:34 2011 Return-Path: Delivered-To: freebsd-fs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 21EE9106566C for ; Fri, 15 Jul 2011 10:45:34 +0000 (UTC) (envelope-from Martin.Birgmeier@aon.at) Received: from email.aon.at (smtpout01.highway.telekom.at [195.3.96.112]) by mx1.freebsd.org (Postfix) with ESMTP id 537A38FC08 for ; Fri, 15 Jul 2011 10:45:32 +0000 (UTC) Received: (qmail 15360 invoked from network); 15 Jul 2011 10:45:30 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.0 (2007-05-01) on WARSBL503.highway.telekom.at X-Spam-Level: Received: from 188-23-47-138.adsl.highway.telekom.at (HELO gandalf.xyzzy) ([188.23.47.138]) (envelope-sender ) by smarthub95.highway.telekom.at (qmail-ldap-1.03) with SMTP for ; 15 Jul 2011 10:45:30 -0000 Received: from atpcdvvc.xyzzy (atpcdvvc.xyzzy [IPv6:fec0:0:0:4d42::84]) by gandalf.xyzzy (8.14.4/8.14.4) with ESMTP id p6FAjTBO010203; Fri, 15 Jul 2011 12:45:29 +0200 (CEST) (envelope-from Martin.Birgmeier@aon.at) Message-ID: <4E201A49.5060700@aon.at> Date: Fri, 15 Jul 2011 12:45:29 +0200 From: Martin Birgmeier User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:5.0) Gecko/20110708 Thunderbird/5.0 MIME-Version: 1.0 To: Andrey Simonenko References: <201107081310.p68DA3Nj019275@freefall.freebsd.org> <20110715101308.GB87688@pm513-1.comsys.ntu-kpi.kiev.ua> <4E20144C.70906@aon.at> <20110715103659.GA87865@pm513-1.comsys.ntu-kpi.kiev.ua> In-Reply-To: <20110715103659.GA87865@pm513-1.comsys.ntu-kpi.kiev.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-fs@FreeBSD.org Subject: Re: kern/131342: [nfs] mounting/unmounting of disks causes NFS to fail X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jul 2011 10:45:34 -0000 This is indeed interesting - I did not know that the exports are handled in such a simple manner both with mount(8) and within the kernel. But this in fact means that there is a major design flaw. Thank you for enlightening me. Regards, Martin On 07/15/11 12:36, Andrey Simonenko wrote: > 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 >>>> To: bug-followup@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 >>> >>>