Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Dec 2003 16:33:18 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        scottl@FreeBSD.org
Cc:        mb@imp.ch
Subject:   Re: HAVE TRACE & DDB Re: FreeBSD 5.2-RC1 released
Message-ID:  <200312150033.hBF0XIeF066055@gw.catspoiler.org>
In-Reply-To: <3FDC887D.9060605@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 14 Dec, Scott Long wrote:
> Don Lewis wrote:
>> Following up to myself ...
>> 
>> It looks like we're trying to recycle this vnode because of the
>> following sysinstall code, in distExtractTarball():
>> 
>>     if (is_base && RunningAsInit && !Fake) {
>>         unmounted_dev = 1;
>>         unmount("/dev", MNT_FORCE);
>>     } else
>>         unmounted_dev = 0;
>> 
>> I'm guessing that the purpose of this code is to unmount devfs from /dev
>> so that when the base distribution is unpacked it can populate /dev from
>> the tarball.  This seems wrong, because it looks like the root file
>> system is mounted on /mnt, and devfs is also mounted on /mnt/dev ...
>> 
>> What happens if we forceably umount /dev while /dev/whatever holds a
>> mounted file system?  It looks like this is handled by vgonechrl().  It
>> looks to me like vclean() is going to do some scary stuff to this vnode.
>> 
> 
> As Jeff pointed out, vfs_subr.c rev 1.461 might be the immediate problem
> here.  However, I can't believe that umounting devfs while it is in use
> can possibly be the right thing to do.  Does devfs have to be mounted in
> the /mnt?  Is it a chroot issue?

I think it might have something to do with chroot.  In that case we
might need devfs mounted in /mnt/dev in order to mount the installation
media.  In that case we are really unmounting /mnt/dev and remounting it
again.  In that case, we may not be getting hurt by the file system
mounted on /mnt, but possibly /mnt/usr, since all the file systems
except /mnt are mounted using the devices found in /mnt/dev.

A quick test would be to not partition the disk and install into one
large file system.

I don't know why sysinstall wants to use the /mnt/dev devices for the
destination file systems anyway. It could just use the /dev devices
before it chroots.  It would probably still need /mnt/dev for the
installation media, and we may still need to fix vfs_subr.c or whatever.

>> BTW, I think the root vnode is the root of the md file system, not the
>> root of the file system being populated by sysinstall.  I don't know why
>> there would be anything to sync at this point, though.
>> 
>> I suspect that removing the above sysinstall code will fix the immediate
>> problem, but there is still much I don't understand.
> 
> Removing this code will likely result in sysinstall reporting errors to
> the user about not being able to unpack the files into /dev.  Or even
> worse, it might succeed and temporarily replace the valid entries with
> invalid ones.
> 
> Scott
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200312150033.hBF0XIeF066055>