Module Name: src Committed By: hannken Date: Tue May 7 08:51:10 UTC 2019
Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: spa_misc.c zfs_ioctl.c src/external/cddl/osnet/dist/uts/common/sys/fs: zfs.h src/external/cddl/osnet/sys/kern: mod.c src/sys/rump/fs/lib/libzfs: zfs_component.c Log Message: Cleanup modules "solaris" and "zfs": - Defer spa_config_load() until root is mounted. - Restore the config path to "/etc/zfs/zpool.cache". - Module "zfs" is type MODULE_CLASS_VFS and no longer depends on "rootvnode". - Module "solaris" no longer depends on "mp_online". - Fix rump component registration to not detach "/dev/zfs" if it didn't attach it. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_misc.c cvs rdiff -u -r1.16 -r1.17 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/sys/kern/mod.c cvs rdiff -u -r1.2 -r1.3 src/sys/rump/fs/lib/libzfs/zfs_component.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_misc.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_misc.c:1.4 src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_misc.c:1.5 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_misc.c:1.4 Thu Nov 15 04:55:38 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_misc.c Tue May 7 08:51:09 2019 @@ -60,6 +60,10 @@ #include <sys/sysctl.h> #endif +#if defined( __NetBSD__) && defined(_KERNEL) +#include <sys/device.h> +#endif + /* * SPA locking * @@ -2071,7 +2075,11 @@ spa_init(int mode) zfs_prop_init(); zpool_prop_init(); zpool_feature_init(); +#if defined(__NetBSD__) && defined(_KERNEL) + config_mountroot((device_t) 0, (void (*)(device_t)) spa_config_load); +#else spa_config_load(); +#endif l2arc_start(); #ifdef __FreeBSD__ #ifdef _KERNEL Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.16 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.17 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.16 Tue Feb 5 09:54:36 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c Tue May 7 08:51:09 2019 @@ -6973,7 +6973,7 @@ MODULE_DEPEND(zfsctrl, acl_nfs4, 1, 1, 1 #include <sys/module.h> #include <uvm/uvm_extern.h> -MODULE(MODULE_CLASS_DRIVER, zfs, "solaris"); +MODULE(MODULE_CLASS_VFS, zfs, "solaris"); static const struct fileops zfs_fileops; @@ -7180,9 +7180,6 @@ zfs_modcmd(modcmd_t cmd, void *arg) switch (cmd) { case MODULE_CMD_INIT: - if (!rootvnode) - return EAGAIN; - /* XXXNETBSD trim is not supported yet */ zfs_trim_enabled = B_FALSE; Index: src/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h diff -u src/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h:1.5 src/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h:1.6 --- src/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h:1.5 Mon May 28 21:05:08 2018 +++ src/external/cddl/osnet/dist/uts/common/sys/fs/zfs.h Tue May 7 08:51:09 2019 @@ -630,7 +630,7 @@ typedef struct zpool_rewind_policy { #define ZPOOL_CACHE "/boot/zfs/zpool.cache" #endif #ifdef __NetBSD__ -#define ZPOOL_CACHE "/var/db/zfs/zpool.cache" +#define ZPOOL_CACHE "/etc/zfs/zpool.cache" #endif /* Index: src/external/cddl/osnet/sys/kern/mod.c diff -u src/external/cddl/osnet/sys/kern/mod.c:1.4 src/external/cddl/osnet/sys/kern/mod.c:1.5 --- src/external/cddl/osnet/sys/kern/mod.c:1.4 Thu Dec 13 10:19:47 2018 +++ src/external/cddl/osnet/sys/kern/mod.c Tue May 7 08:51:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: mod.c,v 1.4 2018/12/13 10:19:47 hannken Exp $ */ +/* $NetBSD: mod.c,v 1.5 2019/05/07 08:51:09 hannken Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mod.c,v 1.4 2018/12/13 10:19:47 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mod.c,v 1.5 2019/05/07 08:51:09 hannken Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -49,9 +49,6 @@ solaris_modcmd(modcmd_t cmd, void *arg) switch (cmd) { case MODULE_CMD_INIT: - if (!mp_online) - return EAGAIN; - opensolaris_utsname_init(); callb_init(NULL); taskq_init(); Index: src/sys/rump/fs/lib/libzfs/zfs_component.c diff -u src/sys/rump/fs/lib/libzfs/zfs_component.c:1.2 src/sys/rump/fs/lib/libzfs/zfs_component.c:1.3 --- src/sys/rump/fs/lib/libzfs/zfs_component.c:1.2 Tue Jan 26 23:12:17 2016 +++ src/sys/rump/fs/lib/libzfs/zfs_component.c Tue May 7 08:51:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: zfs_component.c,v 1.2 2016/01/26 23:12:17 pooka Exp $ */ +/* $NetBSD: zfs_component.c,v 1.3 2019/05/07 08:51:09 hannken Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: zfs_component.c,v 1.2 2016/01/26 23:12:17 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zfs_component.c,v 1.3 2019/05/07 08:51:09 hannken Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -41,7 +41,7 @@ RUMP_COMPONENT(RUMP_COMPONENT_VFS) extern const struct bdevsw zfs_bdevsw; extern const struct cdevsw zfs_cdevsw; devmajor_t bmaj, cmaj; - int error; + int error, exist; /* go, mydevfs */ bmaj = cmaj = -1; @@ -49,9 +49,12 @@ RUMP_COMPONENT(RUMP_COMPONENT_VFS) if ((error = devsw_attach("zfs", &zfs_bdevsw, &bmaj, &zfs_cdevsw, &cmaj)) != 0 && error != EEXIST) panic("cannot attach zfs: %d", error); + exist = (error == EEXIST); if ((error = rump_vfs_makeonedevnode(S_IFCHR, "/dev/zfs", cmaj, 0)) != 0) panic("cannot create zfs dev nodes: %d", error); - devsw_detach(&zfs_bdevsw, &zfs_cdevsw); + + if (!exist) + devsw_detach(&zfs_bdevsw, &zfs_cdevsw); }