From 1bd93ea1e0df994e9055db8666b073ae692279f9 Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Wed, 1 Jun 2016 19:18:10 +0300 Subject: [PATCH] OpenZFS 8906 - uts: illumos rootfs should support salted cksum Porting notes: * As of grub-2.02 these checksums are not supported. However, as pointed out in #6501 there are alternatives such as EFISTUB which work and have no such restriction. A warning was added to the checksum property section of the zfs.8 man page. Authored by: Toomas Soome Reviewed by: C Fraire Reviewed by: Robert Mustacchi Reviewed by: Yuri Pankov Approved by: Dan McDonald Ported-by: Brian Behlendorf OpenZFS-issue: https://illumos.org/issues/8906 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/7dec52f Closes #6501 Closes #7714 --- man/man5/zpool-features.5 | 18 +++++++----------- man/man8/zfs.8 | 5 ++++- module/zfs/zfs_ioctl.c | 11 +---------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/man/man5/zpool-features.5 b/man/man5/zpool-features.5 index 78ea559f3..140ce269f 100644 --- a/man/man5/zpool-features.5 +++ b/man/man5/zpool-features.5 @@ -14,7 +14,7 @@ .\" CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your .\" own identifying information: .\" Portions Copyright [yyyy] [name of copyright owner] -.TH ZPOOL-FEATURES 5 "Aug 27, 2013" +.TH ZPOOL-FEATURES 5 "Jun 8, 2018" .SH NAME zpool\-features \- ZFS pool feature descriptions .SH DESCRIPTION @@ -248,8 +248,9 @@ immediately activate the \fBlz4_compress\fR feature on the underlying pool using the \fBzfs\fR(1M) command. Also, all newly written metadata will be compressed with \fBlz4\fR algorithm. Since this feature is not read-only compatible, this operation will render the pool unimportable -on systems without support for the \fBlz4_compress\fR feature. Booting -off of \fBlz4\fR-compressed root pools is supported. +on systems without support for the \fBlz4_compress\fR feature. + +Booting off of \fBlz4\fR-compressed root pools is supported. This feature becomes \fBactive\fR as soon as it is enabled and will never return to being \fBenabled\fB. @@ -510,8 +511,7 @@ can turn on the \fBsha512\fR checksum on any dataset using the and will return to being \fBenabled\fR once all filesystems that have ever had their checksum set to \fBsha512\fR are destroyed. -Booting off of pools utilizing SHA-512/256 is supported (provided that -the updated GRUB stage2 module is installed). +Booting off of pools utilizing SHA-512/256 is supported. .RE @@ -545,9 +545,7 @@ can turn on the \fBskein\fR checksum on any dataset using the and will return to being \fBenabled\fR once all filesystems that have ever had their checksum set to \fBskein\fR are destroyed. -Booting off of pools using \fBskein\fR is \fBNOT\fR supported --- any attempt to enable \fBskein\fR on a root pool will fail with an -error. +Booting off of pools using \fBskein\fR is supported. .RE @@ -587,9 +585,7 @@ can turn on the \fBedonr\fR checksum on any dataset using the and will return to being \fBenabled\fR once all filesystems that have ever had their checksum set to \fBedonr\fR are destroyed. -Booting off of pools using \fBedonr\fR is \fBNOT\fR supported --- any attempt to enable \fBedonr\fR on a root pool will fail with an -error. +Booting off of pools using \fBedonr\fR is supported. .RE diff --git a/man/man8/zfs.8 b/man/man8/zfs.8 index 48a5e6ea7..bb3b46e38 100644 --- a/man/man8/zfs.8 +++ b/man/man8/zfs.8 @@ -29,7 +29,7 @@ .\" Copyright 2016 Nexenta Systems, Inc. .\" Copyright 2016 Richard Laager. All rights reserved. .\" -.Dd June 28, 2017 +.Dd July 13, 2018 .Dt ZFS 8 SMM .Os Linux .Sh NAME @@ -1049,6 +1049,9 @@ The and .Sy edonr checksum algorithms require enabling the appropriate features on the pool. +These algorithms are not supported by GRUB and should not be set on the +.Sy bootfs +filesystem when using GRUB to boot the system. Please see .Xr zpool-features 5 for more information on these algorithms. diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c index f4f509a7e..6516f6469 100644 --- a/module/zfs/zfs_ioctl.c +++ b/module/zfs/zfs_ioctl.c @@ -3985,16 +3985,7 @@ zfs_check_settable(const char *dsname, nvpair_t *pair, cred_t *cr) if ((err = spa_open(dsname, &spa, FTAG)) != 0) return (err); - /* - * Salted checksums are not supported on root pools. - */ - if (spa_bootfs(spa) != 0 && - intval < ZIO_CHECKSUM_FUNCTIONS && - (zio_checksum_table[intval].ci_flags & - ZCHECKSUM_FLAG_SALTED)) { - spa_close(spa, FTAG); - return (SET_ERROR(ERANGE)); - } + if (!spa_feature_is_enabled(spa, feature)) { spa_close(spa, FTAG); return (SET_ERROR(ENOTSUP)); -- 2.39.2