mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-24 19:28:53 +03:00
Add "compatibility" property for zpool feature sets
Property to allow sets of features to be specified; for compatibility with specific versions / releases / external systems. Influences the behavior of 'zpool upgrade' and 'zpool create'. Initial man page changes and test cases included. Brief synopsis: zpool create -o compatibility=off|legacy|file[,file...] pool vdev... compatibility = off : disable compatibility mode (enable all features) compatibility = legacy : request that no features be enabled compatibility = file[,file...] : read features from specified files. Only features present in *all* files will be enabled on the resulting pool. Filenames may be absolute, or relative to /etc/zfs/compatibility.d or /usr/share/zfs/compatibility.d (/etc checked first). Only affects zpool create, zpool upgrade and zpool status. ABI changes in libzfs: * New function "zpool_load_compat" to load and parse compat sets. * Add "zpool_compat_status_t" typedef for compatibility parse status. * Add ZPOOL_PROP_COMPATIBILITY to the pool properties enum * Add ZPOOL_STATUS_COMPATIBILITY_ERR to the pool status enum An initial set of base compatibility sets are included in cmd/zpool/compatibility.d, and the Makefile for cmd/zpool is modified to install these in $pkgdatadir/compatibility.d and to create symbolic links to a reasonable set of aliases. Reviewed-by: ericloewe Reviewed-by: Matthew Ahrens <mahrens@delphix.com> Reviewed-by: Richard Laager <rlaager@wiktel.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Colm Buckley <colm@tuatha.org> Closes #11468
This commit is contained in:
+46
-1
@@ -39,7 +39,7 @@ include $(top_srcdir)/config/CppCheck.am
|
||||
zpoolconfdir = $(sysconfdir)/zfs/zpool.d
|
||||
zpoolexecdir = $(zfsexecdir)/zpool.d
|
||||
|
||||
EXTRA_DIST = zpool.d/README
|
||||
EXTRA_DIST = zpool.d/README compatibility.d
|
||||
|
||||
dist_zpoolexec_SCRIPTS = \
|
||||
zpool.d/dm-deps \
|
||||
@@ -129,6 +129,48 @@ zpoolconfdefaults = \
|
||||
test_progress \
|
||||
test_ended
|
||||
|
||||
zpoolcompatdir = $(pkgdatadir)/compatibility.d
|
||||
|
||||
dist_zpoolcompat_DATA = \
|
||||
compatibility.d/compat-2018 \
|
||||
compatibility.d/compat-2019 \
|
||||
compatibility.d/compat-2020 \
|
||||
compatibility.d/compat-2021 \
|
||||
compatibility.d/freebsd-11.0 \
|
||||
compatibility.d/freebsd-11.2 \
|
||||
compatibility.d/freebsd-11.3 \
|
||||
compatibility.d/freenas-9.10.2 \
|
||||
compatibility.d/grub2 \
|
||||
compatibility.d/openzfsonosx-1.7.0 \
|
||||
compatibility.d/openzfsonosx-1.8.1 \
|
||||
compatibility.d/openzfsonosx-1.9.3 \
|
||||
compatibility.d/openzfs-2.0-freebsd \
|
||||
compatibility.d/openzfs-2.0-linux \
|
||||
compatibility.d/zol-0.6.5 \
|
||||
compatibility.d/zol-0.7 \
|
||||
compatibility.d/zol-0.8
|
||||
|
||||
# canonical <- alias symbolic link pairs
|
||||
# eg: "2018" is a link to "compat-2018"
|
||||
zpoolcompatlinks = \
|
||||
"compat-2018 2018" \
|
||||
"compat-2019 2019" \
|
||||
"compat-2020 2020" \
|
||||
"compat-2021 2021" \
|
||||
"freebsd-11.0 freebsd-11.1" \
|
||||
"freebsd-11.0 freenas-11.0" \
|
||||
"freebsd-11.2 freenas-11.2" \
|
||||
"freebsd-11.3 freebsd-11.4" \
|
||||
"freebsd-11.3 freebsd-12.0" \
|
||||
"freebsd-11.3 freebsd-12.1" \
|
||||
"freebsd-11.3 freebsd-12.2" \
|
||||
"freebsd-11.3 freenas-11.3" \
|
||||
"freenas-11.0 freenas-11.1" \
|
||||
"openzfsonosx-1.9.3 openzfsonosx-1.9.4" \
|
||||
"openzfs-2.0-freebsd truenas-12.0" \
|
||||
"zol-0.7 ubuntu-18.04" \
|
||||
"zol-0.8 ubuntu-20.04"
|
||||
|
||||
install-data-hook:
|
||||
$(MKDIR_P) "$(DESTDIR)$(zpoolconfdir)"
|
||||
for f in $(zpoolconfdefaults); do \
|
||||
@@ -136,3 +178,6 @@ install-data-hook:
|
||||
-L "$(DESTDIR)$(zpoolconfdir)/$${f}" || \
|
||||
ln -s "$(zpoolexecdir)/$${f}" "$(DESTDIR)$(zpoolconfdir)"; \
|
||||
done
|
||||
for l in $(zpoolcompatlinks); do \
|
||||
(cd "$(DESTDIR)$(zpoolcompatdir)"; ln -s $${l} ); \
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user