From: chara 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 On Wed, 9 Sep 2026 11:03:32 -0700 Andrew Hewus Fresh 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" 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