As you may vaguely remember, I have plans to clean up MAKEDEV a bit, which have the side effect of removing many unneeded device nodes from the ramdisk target, used on the installation media.
Doing this will in turn expose a slight difference in filesystem creation between the pre-makefs(8) world order (using newfs and populating a vnd) and the current usage of makefs: while newfs will create a fixed number of inodes, based upon the geometry parameters (one inode per four fragments), makefs is lazier and will only build "enough" inodes, where "enough" means that the number of available inodes will be rounded to the number of inodes in a cylinder group. tl;dr: by removing unneeded MAKEDEV entries, some platforms will end up with makefs creating a file system with 256 inodes, of which about 250 are used, and installation will misbehave in interesting ways due to the lack of free inodes. There are two ways to address this: 1. fix makefs to initialize inodes in all cylinder groups. 2. let the `-f' option of makefs, used to specify a given number of free inodes, be accepted even when using a fixed geometry. The following diff implements choice #2 (which is the easiest to do), and adds `-f 100' to require 100 free inodes, in every installation media. The advantage, IMHO, of going this way, is that if the geometry does not allow for enough free inodes, building installation media will fail, and this will get noticed quickly. Case in point: at the moment, the alpha bsd.rd uses a geometry providing up to 384 inodes, of which 277 are used. Building with -f 100, requiring thus 377 inodes, completes, while trying -f 120 will fail: makefs -o disklabel=rdroot,minfree=0,density=8192 -f 120 mr.fs mr.fs.d Calculated size of `mr.fs': 2940928 bytes, 397 inodes Extent size set to 8192 mr.fs: 2.8MB (5744 sectors) block size 8192, fragment size 1024 using 1 cylinder groups of 2.80MB, 359 blks, 384 inodes. super-block backups (for fsck -b #) at: 32, makefs: Image file `mr.fs' has 384 free inodes; 397 are required. makefs: Image file `mr.fs' not created. *** Error 1 in /usr/src/distrib/alpha/miniroot (Makefile:89 'mr.fs') I have not been able to test that diff on all platforms, therefore I don't know which platforms will require tweaks to their miniroot filesystem geometry to build with that "100 free inodes" requirement. Maybe the amount can be adjusted on legacy platforms. Also, the makefs diff can go in and installation media changes applied later on a tested-platform basis. In any case, keep in mind that I have upcoming changes which will free a bunch of inodes from every miniroot. Index: usr.sbin/makefs/ffs.c =================================================================== RCS file: /OpenBSD/src/usr.sbin/makefs/ffs.c,v retrieving revision 1.36 diff -u -p -r1.36 ffs.c --- usr.sbin/makefs/ffs.c 11 Jan 2022 05:34:32 -0000 1.36 +++ usr.sbin/makefs/ffs.c 25 Feb 2022 16:47:17 -0000 @@ -324,10 +324,9 @@ ffs_validate(const char *dir, fsnode *ro if (pp->p_fragblock == 0) errx(1, "fragment size missing in disktab"); if (fsopts->freeblocks != 0 || fsopts->freeblockpc != 0 || - fsopts->freefiles != 0 || fsopts->freefilepc != 0 || fsopts->minsize != 0 || fsopts->maxsize != 0 || fsopts->sectorsize != -1 || fsopts->size != 0) - errx(1, "-bfMmSs and disklabel are mutually exclusive"); + errx(1, "-bMmSs and disklabel are mutually exclusive"); if (ffs_opts->fsize != -1 || ffs_opts->bsize != -1) errx(1, "b/fsize and disklabel are mutually exclusive"); Index: distrib/alpha/miniroot/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/alpha/miniroot/Makefile,v retrieving revision 1.23 diff -u -p -r1.23 Makefile --- distrib/alpha/miniroot/Makefile 26 Jul 2021 12:47:44 -0000 1.23 +++ distrib/alpha/miniroot/Makefile 25 Feb 2022 16:47:17 -0000 @@ -12,7 +12,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=8192 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=8192 -f 100 all: ${FS} ${CDROM} Index: distrib/amd64/ramdiskA/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/amd64/ramdiskA/Makefile,v retrieving revision 1.16 diff -u -p -r1.16 Makefile --- distrib/amd64/ramdiskA/Makefile 26 Jul 2021 12:47:44 -0000 1.16 +++ distrib/amd64/ramdiskA/Makefile 25 Feb 2022 16:47:17 -0000 @@ -30,7 +30,7 @@ ${FS}: bsd.gz rm -f vnd MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 bsd.gz: bsd.rd objcopy -S -R .comment -R .SUNW_ctf \ Index: distrib/amd64/ramdisk_cd/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/amd64/ramdisk_cd/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- distrib/amd64/ramdisk_cd/Makefile 13 Nov 2021 18:18:59 -0000 1.34 +++ distrib/amd64/ramdisk_cd/Makefile 25 Feb 2022 16:47:17 -0000 @@ -55,7 +55,7 @@ ${CDROM}: bsd.rd ${.OBJDIR}/cd-dir MRDISKTYPE= rdrootb -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 bsd.gz: bsd.rd objcopy -g -x -R .comment -R .SUNW_ctf \ Index: distrib/arm64/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/arm64/ramdisk/Makefile,v retrieving revision 1.24 diff -u -p -r1.24 Makefile --- distrib/arm64/ramdisk/Makefile 10 Feb 2022 20:07:47 -0000 1.24 +++ distrib/arm64/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -21,7 +21,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRFSDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRFSDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRFSDISKTYPE},minfree=0,density=4096 -f 100 PIFILES=\ bootcode.bin \ Index: distrib/armv7/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/armv7/ramdisk/Makefile,v retrieving revision 1.28 diff -u -p -r1.28 Makefile --- distrib/armv7/ramdisk/Makefile 26 Jul 2021 12:47:45 -0000 1.28 +++ distrib/armv7/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -7,7 +7,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 all: bsd.rd Index: distrib/hppa/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/hppa/ramdisk/Makefile,v retrieving revision 1.48 diff -u -p -r1.48 Makefile --- distrib/hppa/ramdisk/Makefile 26 Jul 2021 12:47:45 -0000 1.48 +++ distrib/hppa/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -9,7 +9,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 all: ${LIF} ${CDROM} Index: distrib/i386/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/i386/ramdisk/Makefile,v retrieving revision 1.16 diff -u -p -r1.16 Makefile --- distrib/i386/ramdisk/Makefile 26 Jul 2021 12:47:45 -0000 1.16 +++ distrib/i386/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -31,7 +31,7 @@ ${FS}: bsd.gz rm -f vnd MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 bsd.gz: bsd.rd objcopy -S -R .comment -R .SUNW_ctf \ Index: distrib/i386/ramdisk_cd/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/i386/ramdisk_cd/Makefile,v retrieving revision 1.26 diff -u -p -r1.26 Makefile --- distrib/i386/ramdisk_cd/Makefile 4 Oct 2021 17:02:21 -0000 1.26 +++ distrib/i386/ramdisk_cd/Makefile 25 Feb 2022 16:47:17 -0000 @@ -50,7 +50,7 @@ ${CDROM}: bsd.rd ${.OBJDIR}/cd-dir MRDISKTYPE= rdrootb -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 bsd.gz: bsd.rd objcopy -S -R .comment -R .SUNW_ctf \ Index: distrib/landisk/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/landisk/ramdisk/Makefile,v retrieving revision 1.34 diff -u -p -r1.34 Makefile --- distrib/landisk/ramdisk/Makefile 26 Jul 2021 12:47:45 -0000 1.34 +++ distrib/landisk/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -11,7 +11,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot2.5M -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 all: ${FS} Index: distrib/loongson/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/loongson/ramdisk/Makefile,v retrieving revision 1.32 diff -u -p -r1.32 Makefile --- distrib/loongson/ramdisk/Makefile 7 Feb 2022 15:21:38 -0000 1.32 +++ distrib/loongson/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -12,7 +12,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 MSDOSSTART= 63 MSDOSSIZE!= expr ${FSSIZE} - ${MSDOSSTART} Index: distrib/luna88k/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/luna88k/ramdisk/Makefile,v retrieving revision 1.32 diff -u -p -r1.32 Makefile --- distrib/luna88k/ramdisk/Makefile 26 Jul 2021 12:47:46 -0000 1.32 +++ distrib/luna88k/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -11,7 +11,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 LDSTATIC=-static Index: distrib/macppc/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/macppc/ramdisk/Makefile,v retrieving revision 1.52 diff -u -p -r1.52 Makefile --- distrib/macppc/ramdisk/Makefile 11 Nov 2021 20:25:56 -0000 1.52 +++ distrib/macppc/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -29,7 +29,7 @@ ${CDROM}: bsd.gz -o ${CDROM} ${.OBJDIR}/cd-dir MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 bsd.gz: bsd.rd gzip -9cn bsd.rd > bsd.gz Index: distrib/octeon/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/octeon/ramdisk/Makefile,v retrieving revision 1.21 diff -u -p -r1.21 Makefile --- distrib/octeon/ramdisk/Makefile 6 Feb 2022 15:52:23 -0000 1.21 +++ distrib/octeon/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -13,7 +13,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 MSDOSSTART= 64 MSDOSSIZE!= expr ${FSSIZE} - ${MSDOSSTART} Index: distrib/powerpc64/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/powerpc64/ramdisk/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- distrib/powerpc64/ramdisk/Makefile 10 Feb 2022 15:12:57 -0000 1.4 +++ distrib/powerpc64/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -17,7 +17,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRFSDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRFSDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRFSDISKTYPE},minfree=0,density=4096 -f 100 all: ${FS} Index: distrib/riscv64/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/riscv64/ramdisk/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- distrib/riscv64/ramdisk/Makefile 4 Feb 2022 18:12:47 -0000 1.5 +++ distrib/riscv64/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -17,7 +17,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRFSDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRFSDISKTYPE},minfree=0,density=8192 +MRMAKEFSARGS= -o disklabel=${MRFSDISKTYPE},minfree=0,density=8192 -f 100 all: ${FS} Index: distrib/sparc64/miniroot/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/sparc64/miniroot/Makefile,v retrieving revision 1.28 diff -u -p -r1.28 Makefile --- distrib/sparc64/miniroot/Makefile 26 Jul 2021 12:47:47 -0000 1.28 +++ distrib/sparc64/miniroot/Makefile 25 Feb 2022 16:47:17 -0000 @@ -12,7 +12,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 all: ${FS} ${CDROM} Index: distrib/sparc64/ramdisk/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/sparc64/ramdisk/Makefile,v retrieving revision 1.54 diff -u -p -r1.54 Makefile --- distrib/sparc64/ramdisk/Makefile 26 Jul 2021 12:47:47 -0000 1.54 +++ distrib/sparc64/ramdisk/Makefile 25 Feb 2022 16:47:17 -0000 @@ -11,7 +11,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=4096 -f 100 all: ${FS} Index: distrib/sparc64/ramdiskB/Makefile =================================================================== RCS file: /OpenBSD/src/distrib/sparc64/ramdiskB/Makefile,v retrieving revision 1.50 diff -u -p -r1.50 Makefile --- distrib/sparc64/ramdiskB/Makefile 26 Jul 2021 12:47:47 -0000 1.50 +++ distrib/sparc64/ramdiskB/Makefile 25 Feb 2022 16:47:17 -0000 @@ -11,7 +11,7 @@ LISTS= ${.CURDIR}/list UTILS= ${.CURDIR}/../../miniroot MRDISKTYPE= rdroot -MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=8192 +MRMAKEFSARGS= -o disklabel=${MRDISKTYPE},minfree=0,density=8192 -f 100 all: ${FS}