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}