Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 May 2025 15:33:37 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 5b90ffad8759 - main - stand/i386/zfsboot: Initialzie archsw at compile time.
Message-ID:  <202505261533.54QFXbLL045191@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=5b90ffad8759633aa79bc9736b1bb65e3a5248b7

commit 5b90ffad8759633aa79bc9736b1bb65e3a5248b7
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2025-05-26 03:46:32 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2025-05-26 15:30:37 +0000

    stand/i386/zfsboot: Initialzie archsw at compile time.
    
    Also, add a comment about the weird reason we even have an archsw here
    at all. tl;dr: zfs code uses archsw when it aught not, but this hack
    here is easier than fixing that code properly.
    
    Sponsored by:           Netflix
---
 stand/i386/zfsboot/zfsboot.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c
index 07bf31eac7a1..4c8eae9b65e5 100644
--- a/stand/i386/zfsboot/zfsboot.c
+++ b/stand/i386/zfsboot/zfsboot.c
@@ -131,7 +131,16 @@ static int parse_cmd(void);
 static char gelipw[GELI_PW_MAXLEN];
 #endif
 
-struct arch_switch archsw;	/* MI/MD interface boundary */
+/*
+ * Only because the zfs code requires access through archsw, otherwise the
+ * 'boot' programs don't need archsw. This is less than ideal, but this
+ * workaround is easier than many of the alternatives.
+ */
+struct arch_switch archsw = {	/* MI/MD interface boundary */
+	.arch_getdev = i386_getdev,
+	.arch_zfs_probe = i386_zfs_probe,
+};
+
 static char boot_devname[2 * ZFS_MAXNAMELEN + 8]; /* disk or pool:dataset */
 
 struct devsw *devsw[] = {
@@ -184,15 +193,6 @@ main(void)
 	 */
 	bcache_init(32768, 512);
 
-	archsw.arch_autoload = NULL;
-	archsw.arch_getdev = i386_getdev;
-	archsw.arch_copyin = NULL;
-	archsw.arch_copyout = NULL;
-	archsw.arch_readin = NULL;
-	archsw.arch_isainb = NULL;
-	archsw.arch_isaoutb = NULL;
-	archsw.arch_zfs_probe = i386_zfs_probe;
-
 	bootinfo.bi_version = BOOTINFO_VERSION;
 	bootinfo.bi_size = sizeof(bootinfo);
 	bootinfo.bi_basemem = bios_basemem / 1024;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505261533.54QFXbLL045191>