=== ZFS support in makefs(8)

Links: +
link:https://lists.freebsd.org/archives/freebsd-hackers/2022-May/001128.html[Mailing list post] URL: link:https://lists.freebsd.org/archives/freebsd-hackers/2022-May/001128.html[https://lists.freebsd.org/archives/freebsd-hackers/2022-May/001128.html] +
link:https://reviews.freebsd.org/D35248[makefs(8) code review] URL: link:https://reviews.freebsd.org/D35248[link:https://reviews.freebsd.org/D35248]
link:https://reviews.freebsd.org/D34426[release(7) code review] URL: link:https://reviews.freebsd.org/D34426[link:https://reviews.freebsd.org/D34426]

Contact: Mark Johnston <markj@FreeBSD.org>

makefs(8) is a utility, originating in NetBSD, that creates file system images entirely in userspace.
It is a useful component of a toolchain to build virtual machine (VM) images since it does not require any special privileges, unlike the approach of formatting a character device, mounting the fresh file system, and copying files onto it.
Moreover, makefs can create reproducible images and aims to minimize resource consumption.
Currently, FreeBSD's makefs can build UFS, cd9660, and msdos (FAT) file system images.

Recent work enables the creation of ZFS images by makefs.
This makes it easier to build ZFS-based VM images.
makefs' ZFS support includes the ability to create multiple datasets, with each mapped to a directory in the input file hierarchy.
Many ZFS features are not supported however, as the implementation provides only what is needed to get reproducible root pools.

Follow-up work enables the creation of ZFS-based VM and cloud images by the release(7) framework, using this new makefs extension.

Sponsor: The FreeBSD Foundation
