15.1 efi loader zfs outdated?

Cannot boot my root on zfs system. System is 15.1-RELEASE-p1 on 6 disk raidz2 pool, bootfs is zroot/ROOT/15.1-RELEASE.

ZFS: unsupported feature: org.openzfs:raidz_expansion

After isses with the bootloader on an USB drive booting the system from the zfs pool (see
Thread loader-not-found-after-upgrading-the-bios-boot-loader-root-on-zfs-freebsd-boot-on-usb.103205), I rebuilt the pool, since I wanted to switch from 5 disk raidz to 6 disk raidz2 anyways. Therefore I started in 14.4, built a new 5 disk raidz2 pool, sent all data to the new pool, and switched to the new pool. The disks on the raidz2 pool now have an efi slice and a freebsd-zfs slice to evade my earlier boot problems.
Since I wanted to update to 6 disks, I updated the system to 15.1 (and bootloader on every efi slice via cp /boot/loader.efi /mnt/EFI/BOOT/BOOTX64.efi), upgraded the pool (zpool-upgrade(8)), and used one disk from the old raidz pool for the new raidz2 pool (zpool-attach(8)).
Ever since the zpool upgrade and zpool attach I cannot boot my system anymore. On video I catched the error above (unsupported feature). I can import the pool in 15.1 live usb. I tried loader.efi from the pool and from the live system, and tried gptzfsboot from either - without success.

Is it possible that zfs in the loader is outdated and missing the raidz_expansion feature?
 
My first guess would be that your system may be booting another binary than /mnt/EFI/BOOT/BOOTX64.efi. Check in BIOS if there is something other selected or with tool like efibootmgr from live system.
 
You fell in a trap.

 
🤦‍♂️
Obviosly not fixed until today. I even tried 16.0-CURRENT loader.efi from snapshots.
Any manual way, like boot live usb, import the pool and then load kernel and root from the pool?

You fell in a trap.

 
You'll find this page worth confirming IN DETAIL.
Especially this table there.
In this table, feature org.openzfs:raidz_expansion is marked as
Read-Only Compatible = no.

And even on current main branch (Fri. Jul.30, 2026 at 21:06:35 JST [+9]) at the moment I've written the date / time, stand/libsa/zfs/zfsimpl.c at official cgit repo doesn't have the feature in the array *features_for_read[]. So neither loader.efi nor boot1.efi (of course, more size-restrictive boot codes for legacy BIOS boot, too) should support booting from the pool the feature is in use. Note that read-compatible features are NOT needed to be listed.

Not 100% sure listing wanted feature in the array is sufficient to support the feature, but if not listed there, it won't work even if support codes required are sanely linked.

And once read-incompatible feature that boot codes / loader.efi doesn't support is enabled and actually used, the pool CANNOT be used to boot until boot codes / loader.efi supporting the feature is sanely installed at proper place with proper way.
 
Back
Top