stand: Search less agressively for UFS super block

The boot loader should look in the standard places for the UFS
superblock, but not go too far into the speculative realm. Supress
errors about hash being invalid, which will allow us to boot, even when
the superblock looks good, but fails the hash test. This defers any
policy decisions about booting and/or recovery to userland. This also
has the side effect of eliminating some rather spammy messages when UFS
searches devices with filesystems that are not UFS...

Sponsored by:		Netflix
Reviewed by:		mckusick
Differential Revision:	https://reviews.freebsd.org/D36253
This commit is contained in:
Warner Losh 2022-08-18 06:40:24 -06:00
parent eed634d113
commit 6d645da0d4

View file

@ -151,6 +151,9 @@ static int search_directory(char *, struct open_file *, ino_t *);
static int ufs_use_sa_read(void *, off_t, void **, int);
/* from ffs_subr.c */
int ffs_sbget(void *devfd, struct fs **fsp, off_t sblock, int flags,
char *filltype,
int (*readfunc)(void *devfd, off_t loc, void **bufp, int size));
int ffs_sbsearch(void *, struct fs **, int, char *,
int (*)(void *, off_t, void **, int));
@ -529,8 +532,8 @@ ufs_open(const char *upath, struct open_file *f)
if (mnt == NULL) {
/* read super block */
twiddle(1);
if ((rc = ffs_sbsearch(f, &fs, 0, "stand", ufs_use_sa_read))
!= 0) {
if ((rc = ffs_sbget(f, &fs, UFS_STDSB, UFS_NOHASHFAIL, "stand",
ufs_use_sa_read)) != 0) {
goto out;
}
} else {