freebsd-dev/stand/libsa
Kirk McKusick b21582ee03 Add a flags parameter to the ffs_sbget() function that reads UFS superblocks.
Rather than trying to shoehorn flags into the requested superblock
address, create a separate flags parameter to the ffs_sbget()
function in sys/ufs/ffs/ffs_subr.c. The ffs_sbget() function is
used both in the kernel and in user-level utilities through export
to the sbget() function in the libufs(3) library (see sbget(3)
for details). The kernel uses ffs_sbget() when mounting UFS
filesystems, in the glabel(8) and gjournal(8) GEOM utilities,
and in the standalone library used when booting the system
from a UFS root filesystem.

The ffs_sbget() function reads the superblock located at the byte
offset specified by its sblockloc parameter. The value UFS_STDSB
may be specified for sblockloc to request that the standard
location for the superblock be read.

The two existing options are now flags:

UFS_NOHASHFAIL will note if the check hash is wrong but will still
   return the superblock. This is used by the bootstrap code to
   give the system a chance to come up so that fsck can be run to
   correct the problem.

UFS_NOMSG indicates that superblock inconsistency error messages
   should not be printed. It is used by programs like fsck that
   want to print their own error message and programs like glabel(8)
   that just want to know if a UFS filesystem exists on a partition.

One additional flag is added:

UFS_NOCSUM causes only the superblock itself to be returned, but does
   not read in any auxiliary data structures like the cylinder group
   summary information. It is used by clients like glabel(8) that
   just want to check for possible filesystem types. Using UFS_NOCSUM
   skips the superblock checks for csum data which allows superblocks
   that have corrupted csum data to be read and used.

The validate_sblock() function checks that the superblock has not
been corrupted in a way that can crash or hang the system. Unless
the UFS_NOMSG flag is specified, it will print out any errors that
it finds. Prior to this commit, validate_sblock() returned as soon
as it found an inconsistency so would print at most one message.
It now does all its checks so when UFS_NOMSG has not been specified
will print out everything that it finds inconsistent.

Sponsored by: The FreeBSD Foundation
2022-07-30 22:51:38 -07:00
..
amd64 libsa: Remove conflicting .global/.weak directive 2021-03-30 14:59:41 +01:00
geli stand geli: Restore include path to LDRSRC. 2022-07-22 10:08:46 -06:00
i386
mips libsa: mips: fix typo that had slipped into the diff on local machine 2019-08-22 21:49:13 +00:00
powerpc Add CFI start/end proc directives to arm64, i386, and ppc 2020-12-05 00:33:28 +00:00
x86 Add support for hypervisor check on x86 2019-10-24 20:02:48 +00:00
zfs stand: Make sure nobody has a NULL pointer for dv_cleanup 2022-07-27 09:04:13 -06:00
__main.c
abort.c Regularize the Netflix copyright 2019-02-04 21:28:25 +00:00
arp.c The libstand's panic() appends its own '\n' to the message, so that users of the API 2018-11-29 18:37:48 +00:00
assert.c The libstand's panic() appends its own '\n' to the message, so that users of the API 2018-11-29 18:37:48 +00:00
bcd.c
bootp.c
bootp.h
bootparam.c
bootparam.h
bzipfs.c stand: Use c99 structure initialization for bzipfs_fsops 2022-07-24 16:53:35 -06:00
cd9660.c loader: implement mount/unmount rootfs 2021-09-08 04:01:20 +03:00
cd9660read.c loader: cd9660_open() warn: is 'buf' large enough for 'struct iso_primary_descriptor'? 2019-12-13 12:36:16 +00:00
close.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
closeall.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
crc32_libkern.c Separate kernel crc32() implementation to its own header (gsb_crc32.h) and 2019-06-17 19:49:08 +00:00
dev.c ANSIify libsa functions 2021-11-18 22:43:02 -07:00
dosfs.c loader: implement mount/unmount rootfs 2021-09-08 04:01:20 +03:00
dosfs.h
environment.c libsa: remove leftover whitespace 2020-08-19 20:41:22 +00:00
ether.c
ext2fs.c stand: Use c99 structure initialization for ext2fs_fsops 2022-07-24 16:53:35 -06:00
fstat.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
getopt.c
gets.c
globals.c
gpt.c loader: remove libsa/crc32.c and use version from zlib 2020-03-19 21:05:11 +00:00
gpt.h Eliminate unused uuid parameters from gptread and gptread_table. We 2019-06-05 02:34:58 +00:00
gzipfs.c stand: Use c99 structure initialization for gzipfs_fsops 2022-07-24 16:53:35 -06:00
hexdump.c zalloc_malloc:Free hexdump preceeding buffer when we detect overflow 2020-08-29 21:05:43 +00:00
in_cksum.c ANSIify libsa functions 2021-11-18 22:43:02 -07:00
inet_ntoa.c ANSIify libsa functions 2021-11-18 22:43:02 -07:00
ioctl.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
iodesc.h loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
ip.c Remove unnecessary include from libstand. 2018-10-31 19:59:20 +00:00
libsa.3
lseek.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
Makefile stand: tftp.c doesn't need bootinfo.h 2022-07-27 09:04:13 -06:00
Makefile.depend Enable veriexec for loader 2019-02-26 06:22:10 +00:00
mount.c loader: implement mount/unmount rootfs 2021-09-08 04:01:20 +03:00
net.c loader: ip: Do not call getsecs so much 2021-12-16 11:50:36 +01:00
net.h loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
netif.c stand: netif kill set but unused variables 2021-12-15 19:44:28 -07:00
netif.h
nfs.c stand: Use c99 structure initialization for nfs_fsops 2022-07-24 16:53:35 -06:00
nfsv2.h
nullfs.c
open.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
pager.c
panic.c
pkgfs.c stand: Use c99 structure initialization for pkgfs_fsops 2022-07-24 16:53:35 -06:00
preload.c loader: Add preload operation to fs_ops 2021-12-16 11:50:38 +01:00
printf.c loader printf: Profile with TSLOG 2021-09-24 20:23:49 -07:00
random.c
rarp.c
read.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
readdir.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
rpc.c
rpc.h
rpcv2.h
saioctl.h
sbrk.c The libstand's panic() appends its own '\n' to the message, so that users of the API 2018-11-29 18:37:48 +00:00
smbios.c libsa: smbios: Parse the chassis type and export it as smbios.chassis.type 2020-08-20 12:50:49 +00:00
smbios.h Move smbios.c to libsa. 2020-02-20 00:46:22 +00:00
splitfs.c stand: Use c99 structure initialization for splitfs_fsops 2022-07-24 16:53:35 -06:00
stand.h stand: Small comment correction 2022-07-27 09:04:12 -06:00
stat.c ANSIify libsa functions 2021-11-18 22:43:02 -07:00
strcasecmp.c ANSIify libsa functions 2021-11-18 22:43:02 -07:00
strdup.c ANSIify libsa functions 2021-11-18 22:43:02 -07:00
strerror.c
tftp.c stand: tftp.c doesn't need bootinfo.h 2022-07-27 09:04:13 -06:00
tftp.h
time.c Implement some time variables from kernel 2020-09-29 16:29:50 +00:00
tslog.c loader tslog: Don't use sprintf 2021-09-24 20:23:37 -07:00
twiddle.c loader: Set twiddle globaldiv to 16 by default 2021-09-28 15:24:02 -07:00
udp.c Remove unnecessary include from libstand. 2018-10-31 19:59:20 +00:00
ufs.c Add a flags parameter to the ffs_sbget() function that reads UFS superblocks. 2022-07-30 22:51:38 -07:00
ufsread.c
uuid_from_string.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
uuid_to_string.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
write.c loader: open file list should be dynamic 2021-08-10 21:54:32 +03:00
xlocale_private.h Regularize the Netflix copyright 2019-02-04 21:28:25 +00:00
zalloc_defs.h stand: remove mips support 2021-12-10 11:05:31 -07:00
zalloc_malloc.c zalloc_malloc:Free hexdump preceeding buffer when we detect overflow 2020-08-29 21:05:43 +00:00
zalloc_mem.h loader: cstyle cleanup libsa zalloc sources 2019-09-17 11:35:53 +00:00
zalloc_protos.h loader: add memalign() to libsa 2019-09-17 13:15:27 +00:00
zalloc.c stand: Fix a common typo in source code comments 2022-06-05 09:49:51 +02:00