Open nt1 opened 1 month ago
The code you may want to improve is this:
https://github.com/opnsense/core/blob/0f73da02ad205aba1be2d7928c72fb8805b34eb4/src/etc/rc#L153-L160
Do not confuse _load with _enable vars. We don’t use the RC subsystem that much as it tends to interfere with the boot sequence.
Adding -c CACHE_FILE
to the referenced zpool import and removing changes to /etc/rc.conf fixes my issue. However, I'm fairly certain that adding additional pools worked in a previous release of OPNSense with no changes.
The behavior of zpool import -a
changed when OpenZFS was adopted in FreeBSD 13. In prior releases, -a
would default to searching for pools in /dev:
https://github.com/freebsd/freebsd-src/blob/b5ad6b488d9e62d820fe90fdce4aee4f4d3d7162/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c#L2634
This changes in OpenZFS, used in 13+, the environment variable ZPOOL_IMPORT_PATH is used as the search path: https://github.com/freebsd/freebsd-src/blob/5fe9c9de03ef3191d216964bc4d8e427d5ed5720/sys/contrib/openzfs/cmd/zpool/zpool_main.c#L3492
Thanks for looking into this. Feel free to provide a PR, but I won't be able to review and commit in the next two weeks.
(I'd say that ZPOOL_IMPORT_PATH might be the better path forward as I've avoided -c in the past for portability.)
I'll open a PR to fix this this evening. I can work around this issue for now, so no rush on the review.
I will propose a change that imports pools from zpool cache at boot (just like vanilla FreeBSD) rather than allowing the implementation of zpool import to dictate what's imported.
Pros of using zpool cache
Cons of using zpool cache
Important notices
Before you add a new report, we ask you kindly to acknowledge the following:
Describe the bug
zpools other than zroot present in zpool cache (/etc/zfs/zpool.cache or /boot/zfs/zpool.cache) are not imported at boot time in OPNsense 24.1.9.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Upon reboot, the newly created zpool was imported.
Describe alternatives you considered
It is possible to manually import the zpool using zpool import after the reboot, but this doesn't really scale.
I was able to get the pool to import as expected by adding
zfs_enable="YES"
to /etc/rc.conf which allowed /etc/rc.d/zfs to start at boot per expectations. I notice opnsense sets this variable in /usr/local/etc/rc.loader.d/20-zfs, perhaps this variable isn't making it to freebsd's rc.d?Screenshots
If applicable, add screenshots to help explain your problem.
Relevant log files
If applicable, information from log files supporting your claim.
Additional context
Add any other context about the problem here.
Environment
Software version used and hardware type if relevant, e.g.:
OPNsense 24.1.9