Index | Thread | Search

From:
chara <chara@cloud9p.org>
Subject:
Re: rc: skip rootdisk_nodes if we are running diskless
To:
tech@openbsd.org
Cc:
afresh1@openbsd.org
Date:
Thu, 10 Sep 2026 01:28:10 +0330

Download raw body.

Thread
On Wed, 9 Sep 2026 11:03:32 -0700
Andrew Hewus Fresh <afresh1@openbsd.org> wrote:

> On Tue, Sep 08, 2026 at 09:15:08PM +0330, chara wrote:
> > ping.
> > 
> > On Wed, 02 Sep 2026 14:37:00 -0600
> > "Theo de Raadt" <deraadt@openbsd.org> wrote:
> > 
> > > That looks good to me.
> 
> It looked OK to me, this is the same, but with some consistency fixes to
> use [[ ]] as is done elsewhere in /etc/rc and not use `if` for early
> returns and local variables in use.
> 
> I can split the commits if desired.
> 
> Comments, OK?
> 
> 
> Index: rc
> ===================================================================
> RCS file: /cvs/src/etc/rc,v
> diff -u -p -r1.593 rc
> --- rc	3 Sep 2026 18:56:40 -0000	1.593
> +++ rc	9 Sep 2026 18:02:19 -0000
> @@ -308,22 +308,26 @@ run_upgrade_script() {
>  #   mount -uw /dev/rootdisk /
>  #   cd /dev && ./MAKEDEV redodisks
>  rootdisk_nodes() {
> -	if [ $(sysctl -n kern.maxpartitions) = 16 ]; then
> -		_rootdev=$(mount | grep ' / ' | cut -d' ' -f1)
> -		_maj=$(stat -f "%Hr" $_rootdev)
> -		_omin=$(stat -f "%Lr" $_rootdev)
> -		_min=$((_omin / 16 * 64))
> -		if [ -b /dev/rootdisk -a \
> -		    "$(stat -qf %Hr,%Lr /dev/rootdisk)" = "$_maj,$_min" ]; then
> -			return
> -		fi
> -		# does not exist or device changed, redo
> -		_rrootdev=$(echo $_rootdev | sed -e 's,dev/,dev/r,')
> -		_rmaj=$(stat -f "%Hr" $_rrootdev)
> -		rm -f /dev/rrootdisk /dev/rootdisk
> -		mknod -m 600 /dev/rrootdisk c $_rmaj $_min
> -		mknod -m 600 /dev/rootdisk b $_maj $_min
> -	fi
> +	local _rootdev _rrootdev _maj _rmaj _omin _min
> +	[[ $(sysctl -n kern.maxpartitions) = 16 ]] || return
> +
> +	# Find and use root device if we are not booting from NFS
> +	_rootdev=$(mount | grep ' / ' | grep -v ':' | cut -d' ' -f1)

perhaps putting an space between cut arguments would make it more readable.

> +	[[ -n $_rootdev ]] || return
> +
> +	_maj=$(stat -f "%Hr" $_rootdev)
> +	_omin=$(stat -f "%Lr" $_rootdev)
> +	_min=$((_omin / 16 * 64))
> +	[[ -b /dev/rootdisk ]] &&
> +	    [[ "$(stat -qf %Hr,%Lr /dev/rootdisk)" = "$_maj,$_min" ]] &&
> +	    return
> +
> +	# does not exist or device changed, redo
> +	_rrootdev=$(echo $_rootdev | sed -e 's,dev/,dev/r,')
> +	_rmaj=$(stat -f "%Hr" $_rrootdev)
> +	rm -f /dev/rrootdisk /dev/rootdisk
> +	mknod -m 600 /dev/rrootdisk c $_rmaj $_min
> +	mknod -m 600 /dev/rootdisk b $_maj $_min
>  }
>  
>  # Check filesystems, optionally by using a fsck(8) flag.
> 


-- 
chara <chara@cloud9p.org>