This reads correct.

OK florian

On 2021-12-02 00:01 -07, "Theo de Raadt" <dera...@openbsd.org> wrote:
> Yuichiro NAITO <naito.yuich...@gmail.com> wrote:
>
>> bsd.upgrade fails and shows following messages with a single partition disk.
>> 
>> ```
>> Force checking of clean non-root filesystems? [no] no
>> umount: /mnt: Device busy
>> Can't umount sd0a!
>
> OK, we figured out what is going on.  During upgrade, the async random
> seed feeding code has vnodes open on the bsd.rd ramdisk root filesystem
> (mounted as /), and also on the real root (mounted as /mnt, to collect
> fstab information).  The umount honestly can fail to flush all the vnodes,
> I suspect because the random seed generation processes have vnodes on both
> filesystems.  The EBUSY is true.
>
> The install script can umount /mnt earlier, in fact immediately after it
> has collected fstab information, and this is before the cgi fetching and
> random feeding.
>
> Yuichiro built a reliable & quick test case, and with this diff (based
> upon an earlier proposal from him), doesn't see the problem anymore.
>
> Index: distrib/miniroot/install.sub
> ===================================================================
> RCS file: /cvs/src/distrib/miniroot/install.sub,v
> retrieving revision 1.1184
> diff -u -p -u -r1.1184 install.sub
> --- distrib/miniroot/install.sub      2 Nov 2021 16:54:01 -0000       1.1184
> +++ distrib/miniroot/install.sub      2 Dec 2021 05:19:45 -0000
> @@ -3258,17 +3258,19 @@ do_upgrade() {
>       # Configure the network.
>       enable_network
>  
> -     # Fetch list of mirror servers and installer choices from previous runs.
> -     start_cgiinfo
> -
>       # Create a skeletal /etc/fstab which is usable for the upgrade process.
>       munge_fstab
>  
> +     # Do not need to look in /mnt anymore
> +     umount /mnt || { echo "Can't umount $ROOTDEV!"; exit; }
> +
> +     # Fetch list of mirror servers and installer choices from previous runs.
> +     start_cgiinfo
> +
>       # fsck -p non-root filesystems in /etc/fstab.
>       check_fs
>  
>       # Mount filesystems in /etc/fstab.
> -     umount /mnt || { echo "Can't umount $ROOTDEV!"; exit; }
>       mount_fs
>  
>       rm -f /mnt/bsd.upgrade /mnt/auto_upgrade.conf
>

-- 
I'm not entirely sure you are real.

Reply via email to