Re: git: 72a1cb05cd23 - main - rc(8): Add a zpoolupgrade rc.d script

From: Mark Millard <marklmi_at_yahoo.com>
Date: Tue, 08 Nov 2022 00:34:14 UTC
Warner Losh <imp_at_bsdimp.com> wrote on
Date: Mon, 07 Nov 2022 21:23:11 UTC :

> On Mon, Nov 7, 2022 at 4:15 AM Alexander Leidinger <Alexander@leidinger.net>
> wrote:
> 
> >
> . . .
> >
> > And this brings me to a second topic, we don't have an explicit list
> > of features which are supported by the bootloader (I had a look at the
> > zfs and the boot related man pages, if I overlooked a place, then the
> > other places should reference this important part with some text).
> >
> 
> There is a fixed list of features we support in the boot loader:
> 
> /*
> * List of ZFS features supported for read
> */
> static const char *features_for_read[] = {
> "org.illumos:lz4_compress",
> "com.delphix:hole_birth",
> "com.delphix:extensible_dataset",
> "com.delphix:embedded_data",
> "org.open-zfs:large_blocks",
> "org.illumos:sha512",
> "org.illumos:skein",
> "org.zfsonlinux:large_dnode",
> "com.joyent:multi_vdev_crash_dump",
> "com.delphix:spacemap_histogram",
> "com.delphix:zpool_checkpoint",
> "com.delphix:spacemap_v2",
> "com.datto:encryption",
> "com.datto:bookmark_v2",
> "org.zfsonlinux:allocation_classes",
> "com.datto:resilver_defer",
> "com.delphix:device_removal",
> "com.delphix:obsolete_counts",
> "com.intel:allocation_classes",
> "org.freebsd:zstd_compress",
> "com.delphix:bookmark_written",
> "com.delphix:head_errlog",

As an example of a more general question
(referencing a zpool feature, if I understand
right):

com.delphix:head_errlog in the loaders from
13.1-RELEASE? 13.1-RELEASE-p3? 12.3-RELEASE*?
(The future 12.4-RELEASE?)

head_errlog is an interesting example because of
"man zpool-features" reporting the below --and it
being fairly new:

"READ-ONLY COMPATIBLE  no"
and:
"This feature becomes active as soon as it is enabled and will
never return to being enabled."

I guess the loader avoids types of read activity that cause the
more general "READ-ONLY COMPATIBLE  no" status.

(I use the example just because I've indirectly
run into it before, but in a more limited context.
It may not be the best of examples for the general
question.)

Does each RELEASE and release-update get its own,
documented zpool feature list for its loaders?
(There might be a question for a zfs vs. zpool
feature distinction as well?)

> "org.openzfs:blake3",
> NULL
> };

The overall list definitely goes beyond what is
listed in:

/usr/share/zfs/compatibility.d/openzfs-2.1-freebsd

> Any feature not on this list will cause the boot loader to reject the pool.
> 
> Whether or not it should do that by default, always, or never is an open
> question. I've thought there should be a 'shoot footing' override that isn't
> there today.


===
Mark Millard
marklmi at yahoo.com