From owner-freebsd-stable Fri Apr 20 14:57:18 2001 Delivered-To: freebsd-stable@freebsd.org Received: from mailout00.sul.t-online.com (mailout00.sul.t-online.com [194.25.134.16]) by hub.freebsd.org (Postfix) with ESMTP id 8106F37B422; Fri, 20 Apr 2001 14:57:02 -0700 (PDT) (envelope-from sven.huster@mailsurf.com) Received: from fwd00.sul.t-online.com by mailout00.sul.t-online.com with smtp id 14qitP-0008Uo-02; Fri, 20 Apr 2001 23:56:43 +0200 Received: from venus.mailsurf.com (320051988339-0001@[62.158.229.8]) by fmrl00.sul.t-online.com with esmtp id 14qitF-221chcC; Fri, 20 Apr 2001 23:56:33 +0200 Message-Id: <5.0.2.1.0.20010420235117.00a64cb0@mx01.mailsurf.com> X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Fri, 20 Apr 2001 23:57:05 +0200 To: Brian Dean , Luigi Rizzo From: Sven Huster Subject: Re: FreeBSD 4.3-RC5 now on ftp.freebsd.org Cc: "David E. Cross" , Jordan Hubbard , stable@FreeBSD.ORG, developers@FreeBSD.ORG In-Reply-To: <20010420111151.A55293@vger.bsdhome.com> References: <200104192325.BAA63867@info.iet.unipi.it> <200104192001.QAA60154@cs.rpi.edu> <200104192325.BAA63867@info.iet.unipi.it> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed X-Sender: 320051988339-0001@t-dialin.net Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Hi but if you dont umount /tmp at the end we wont have to mount_null problem (rc.diskless2) with /tmp too in standard setup. so we can remove this there. for sure you can replace /tmp with a symlink to /var/tmp but that wouldnt be done by the normal mtree script, i think. btw: not my patches, they were posted by someone else as a reply to my question. regards Sven At 17:11 20.04.2001, Brian Dean wrote: >*This message was transferred with a trial version of CommuniGate(tm) Pro* >On Fri, Apr 20, 2001 at 01:25:07AM +0200, Luigi Rizzo wrote: > > [Jordan, in case we reach consensus on what to do and can test > > patches before the release's cut date, do we have permission to > > update rc.diskless{1,2} as needed ? These files are not on a critical > > part of the system so commits in this area do not pose stability > > problems.] > > > > I had a look at Sven's patches, and there is one thing that puzzles > > me: when doing the mount_mfs of /etc and restoring files, the > > OS has still handles open on the old /etc/rc and /etc/rc.diskless1 . > > > > What happens on subsequent reads from these files (which are long) ? > > Do they refer to the old version, the new one, or what ? > > > > The problem did not arise with mount_null because themount was simply > > an overlay so (unless the user would override those files as well) > > it was clear that the reverence was to the old one. > > > > That said: i read the recent commit logs for nullfs in -current, > > ant it seems to be fixed there, unfortunately i have no idea > > how hard it is to backport the fixes, some of the diffs are > > trivial to understand, some are beyond my (very limited) > > understanding of this part of the kernel. > > > > As for stability of the diskless clients: > > with the current version of rc.diskless2 in -stable, the only part > > which uses mount_null is /etc/ where hopefully nothing gets written > > to after the pass in /etc/rc.diskless1 so it should not be > > a terrible stability issue. > > > > cheers > > luigi > >Hi, > >I haven't seen Sven's patches, but the following works well here for >me. The following patch eliminates the null mount by first copying >/etc/* to /tmp/etc, then we mount /etc as an MFS, then copy back from >/tmp/etc. The rest of the code proceeds as normal except that copies >from /conf/*/etc go directly to /etc. > >This works well here and does not suffer the problems of the null >mount. For example, one can run pwd_mkdb without causing a panic, >etc. > >I'd be happy commit this if there is agreement. > >-Brian >-- >Brian Dean >bsd@FreeBSD.org >bsd@bsdhome.com > > >Index: rc.diskless1 >=================================================================== >RCS file: /home/ncvs/src/etc/rc.diskless1,v >retrieving revision 1.7 >diff -u -r1.7 rc.diskless1 >--- rc.diskless1 2001/04/03 00:24:01 1.7 >+++ rc.diskless1 2001/04/20 15:08:16 >@@ -87,39 +87,50 @@ > fi > done > echo "Interface ${bootp_ifc} IP-Address ${bootp_ipa} Broadcast > ${bootp_ipbca}" >- >-# Files in /etc are copied to /conf/etc which is writable. Then >-# per-machine configs from /conf/ip.address/etc are copied onto this >-# directory. First choice is using the client's IP, then the client's >-# broadcast address, then a default configuration. >+ >+ >+ >+# Create an MFS /tmp to temporarily hold files from /etc until we >+# can bootstrap /etc as an MFS. >+ >+/sbin/mount_mfs -s 4096 -T qp120at dummy /tmp >+chkerr $? "MFS mount on /tmp" >+mkdir /tmp/etc >+/bin/cp -Rp /etc /tmp >+chkerr $? "cp /etc to /tmp/etc MFS" >+ >+/sbin/mount_mfs -s 4096 -T qp120at dummy /etc >+chkerr $? "MFS mount on /etc" >+/bin/chmod 755 /etc >+ >+/bin/cp -Rp /tmp/etc/* /etc >+chkerr $? "cp /tmp/etc to /etc MFS" >+ >+rm -rf /tmp/etc >+/sbin/umount /tmp >+ >+ >+# Allow for override files to replace files in /etc. Use /conf/*/etc >+# to find the override files. First choice is default files that >+# always override, then files that from the directory that matches the >+# client's broadcast address, finally followed by overrides that match >+# the client's IP address. >+# > # This way we have some flexibility to handle clusters of machines > # on separate subnets. > # >-# WARNING! null mounts cannot handle mmap, and since many programs >-# use mmap (such as 'cp'), we have to copy. >-# >-mount_mfs -s 2048 -T qp120at dummy /conf/etc >-cp -Rp /etc/* /conf/etc >-chkerr $? "MFS mount on /conf/etc" > >-# Pick up default, network-specific, and host-specific config, in that >-# order >- > if [ -d /conf/default/etc/ ]; then >- cp -Rp /conf/default/etc/* /conf/etc >+ cp -Rp /conf/default/etc/* /etc > fi > > if [ -d /conf/${bootp_ipbca} ] ; then >- cp -Rp /conf/${bootp_ipbca}/etc/* /conf/etc >+ cp -Rp /conf/${bootp_ipbca}/etc/* /etc > fi > > if [ -d /conf/${bootp_ipa} ] ; then >- cp -Rp /conf/${bootp_ipa}/etc/* /conf/etc >+ cp -Rp /conf/${bootp_ipa}/etc/* /etc > fi >- >-# Make the new directory available as /etc >-# >-mount_null /conf/etc /etc > > # Tell /etc/rc to run the specified script after > # it does its mounts but before it does anything Sven Huster Senior IT Systems Administrator *BSD, Linux, Solaris To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message