Re: git: 72a1cb05cd23 - main - rc(8): Add a zpoolupgrade rc.d script
- In reply to: Mark Millard : "Re: git: 72a1cb05cd23 - main - rc(8): Add a zpoolupgrade rc.d script"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 08 Nov 2022 03:04:22 UTC
On Nov 7, 2022, at 16:34, Mark Millard <marklmi@yahoo.com> wrote:
> 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.
>
>
As I am not familiar with all the zpool features, I
did some exploration. An FYI from it follows.
(I originally built a list with things interlaced
but the reordering made it more readable. The
history explains some of the notation.)
In openzfs-2.1-freebsd list but not in Warner's list:
async_destroy : not in Warner's list
bookmarks : not in Warner's list
device_rebuild : not in Warner's list
draid : not in Warner's list
empty_bpobj : not in Warner's list
enabled_txg : not in Warner's list
filesystem_limits : not in Warner's list
livelist : not in Warner's list
log_spacemap : not in Warner's list
project_quota : not in Warner's list
redacted_datasets : not in Warner's list
redaction_bookmarks : not in Warner's list
userobj_accounting : not in Warner's list
Not in openzfs-2.1-freebsd list but in Warner's list:
not in openzfs-2.1-freebsd : com.delphix:head_errlog
not in openzfs-2.1-freebsd : org.openzfs:blake3
Not in openzfs-2.1-freebsd list nor in Warner's list:
(These are listed in "man zpool-features", as are the
rest of the various names listed.)
edonr
zilsaxattr
In both openzfs-2.1-freebsd list and in Warner's list:
allocation_classes : org.zfsonlinux:allocation_classes
bookmark_v2 : com.datto:bookmark_v2
bookmark_written : com.delphix:bookmark_written
device_removal : com.delphix:device_removal
embedded_data : com.delphix:embedded_data
encryption : com.datto:encryption
extensible_dataset : com.delphix:extensible_dataset
hole_birth : com.delphix:hole_birth
large_blocks : org.open-zfs:large_blocks
large_dnode : org.zfsonlinux:large_dnode
lz4_compress : org.illumos:lz4_compress
multi_vdev_crash_dump : com.joyent:multi_vdev_crash_dump
obsolete_counts : com.delphix:obsolete_counts
resilver_defer : com.datto:resilver_defer
sha512 : org.illumos:sha512
skein : org.illumos:skein
spacemap_histogram : com.delphix:spacemap_histogram
spacemap_v2 : com.delphix:spacemap_v2
zpool_checkpoint : com.delphix:zpool_checkpoint
===
Mark Millard
marklmi at yahoo.com