CVSROOT: /cvs Module name: src Changes by: k...@cvs.openbsd.org 2022/09/09 09:53:17
Modified files: usr.sbin/installboot: efi_installboot.c i386_installboot.c loongson_installboot.c macppc_installboot.c octeon_installboot.c powerpc64_installboot.c Log message: Reflect script failure in exit code installboot(8) runs newfs(8) and fsck(8) via system(3) but only checks failures of the function itself, always returning zero no matter what the programs/shell returned. This is bad for regress tests relying on correct return codes. create_filesystem() itself must not exit as write_filesystem() calls it and cleans up temporary files upon failure. Make it return -1 if the script returned non-zero so write_filesystem() handles it as error, cleans up and makes installboot exit 1. Stop ignoring create_filesystem()'s return code in md_prepareboot() and exit the same way. Here's the change in behaviour on arm64 (newfs fails because of the vnd/disklabel race, see "Race in disk_attach_callback?" on tech@): # installboot -vp vnd0 ; echo $? newfsing 6694ae5b0d7596ed.i newfs_msdos: /dev/r6694ae5b0d7596ed.i: No such file or directory 0 # ./obj/installboot -vp vnd0 ; echo $? newfsing 6694ae5b0d7596ed.i newfs_msdos: /dev/r6694ae5b0d7596ed.i: No such file or directory 1 Tested on amd64 arm64 macppc octeon powerpc64 sparc64 OK millert