Re: vfs.zfs.bclone_enabled (was: FreeBSD 14.0-BETA2 Now Available) [block_cloning and zilsaxattr missing from loader's features_for_read]
- Reply: Mark Millard : "Re: vfs.zfs.bclone_enabled (was: FreeBSD 14.0-BETA2 Now Available) [block_cloning and zilsaxattr missing from loader's features_for_read]"
- In reply to: Mark Millard : "Re: vfs.zfs.bclone_enabled (was: FreeBSD 14.0-BETA2 Now Available) [block_cloning and zilsaxattr missing from loader's features_for_read]"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 19 Sep 2023 00:05:37 UTC
On 18.09.2023 19:21, Mark Millard wrote: > On Sep 18, 2023, at 15:51, Mark Millard <marklmi@yahoo.com> wrote: >> Alexander Motin <mav_at_FreeBSD.org> wrote on >> Date: Mon, 18 Sep 2023 13:26:56 UTC : >>> block_cloning feature is marked as READONLY_COMPAT. It should not >>> require any special handling from the boot code. >> >> From stand/libsa/zfs/zfsimpl.c but adding a comment about the >> read-only compatibility status of each entry: >> >> /* >> * List of ZFS features supported for read >> */ > static const char *features_for_read[] = { >> "com.datto:bookmark_v2", // READ-ONLY COMPATIBLE no >> "com.datto:encryption", // READ-ONLY COMPATIBLE no >> "com.datto:resilver_defer", // READ-ONLY COMPATIBLE yes >> "com.delphix:bookmark_written", // READ-ONLY COMPATIBLE no >> "com.delphix:device_removal", // READ-ONLY COMPATIBLE no >> "com.delphix:embedded_data", // READ-ONLY COMPATIBLE no >> "com.delphix:extensible_dataset", // READ-ONLY COMPATIBLE no >> "com.delphix:head_errlog", // READ-ONLY COMPATIBLE no >> "com.delphix:hole_birth", // READ-ONLY COMPATIBLE no >> "com.delphix:obsolete_counts", // READ-ONLY COMPATIBLE yes >> "com.delphix:spacemap_histogram", // READ-ONLY COMPATIBLE yes >> "com.delphix:spacemap_v2", // READ-ONLY COMPATIBLE yes >> "com.delphix:zpool_checkpoint", // READ-ONLY COMPATIBLE yes >> "com.intel:allocation_classes", // READ-ONLY COMPATIBLE yes >> "com.joyent:multi_vdev_crash_dump", // READ-ONLY COMPATIBLE no >> "com.klarasystems:vdev_zaps_v2", // READ-ONLY COMPATIBLE no >> "org.freebsd:zstd_compress", // READ-ONLY COMPATIBLE no >> "org.illumos:lz4_compress", // READ-ONLY COMPATIBLE no >> "org.illumos:sha512", // READ-ONLY COMPATIBLE no >> "org.illumos:skein", // READ-ONLY COMPATIBLE no >> "org.open-zfs:large_blocks", // READ-ONLY COMPATIBLE no >> "org.openzfs:blake3", // READ-ONLY COMPATIBLE no >> "org.zfsonlinux:allocation_classes", // READ-ONLY COMPATIBLE yes >> "org.zfsonlinux:large_dnode", // READ-ONLY COMPATIBLE no >> NULL >> }; >> >> So it appears that the design is that both "no" and "yes" ones >> that are known to be supported are listed and anything else is >> supposed to lead to rejection until explicitly added as >> known-compatibile. I don't think so. I think somebody by mistake added first featured that should not be here, and then others continued this irrelevant routine. My own development server/builder is happily running latest main with ZFS root without any patches and with block cloning not only enabled, but even active. So as I have told, it is not needed: mav@srv:/root# zpool get all | grep clon mavlab bcloneused 20.5M - mavlab bclonesaved 20.9M - mavlab bcloneratio 2.02x - mavlab feature@block_cloning active local Somebody should go through the list and clean in up from read-compatible features and document it, unless there are some features that were re-qualified at some point, I haven't checked if it could be. >> This matches up with stand/libsa/zfs/zfsimpl.c 's: >> >> static int >> nvlist_check_features_for_read(nvlist_t *nvl) >> { ... >> rc = nvlist_find(nvl, ZPOOL_CONFIG_FEATURES_FOR_READ, >> DATA_TYPE_NVLIST, NULL, &features, NULL); Take a note it reads ZPOOL_CONFIG_FEATURES_FOR_READ. Same time features declared as READONLY_COMPAT are stored in FEATURES_FOR_WRITE, that boot loader does not even care. >> I do not know if vfs.zfs.bclone_enabled=0 leads the loader >> to see vs. not-see a "com.fudosecurity:block_cloning". bclone_enabled=0 block copy_file_range() usage, that should keep the feature enabled, but not active. It could be related if the feature would be in FEATURES_FOR_WRITE, but here and now it is not. > It appears that 2 additions afeter opebzfas-2.1-freebsd are > missing from the above list: > > com.fudosecurity:block_cloning > org.openzfs:zilsaxattr Nothing of ZIL is required for read-only import. So no, it is also not needed. -- Alexander Motin