Skip to content

Commit

Permalink
OpenZFS 8906 - uts: illumos rootfs should support salted cksum
Browse files Browse the repository at this point in the history
Porting notes:
* As of grub-2.02 these checksums are not supported.  However, as
  pointed out in openzfs#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 <tsoome@me.com>
Reviewed by: C Fraire <cfraire@me.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Yuri Pankov <yuripv@yuripv.net>
Approved by: Dan McDonald <danmcd@joyent.com>
Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>

OpenZFS-issue: https://illumos.org/issues/8906
OpenZFS-commit: openzfs/openzfs@7dec52f
Closes openzfs#6501
Closes openzfs#7714
  • Loading branch information
tsoome authored and tonyhutter committed Jul 6, 2018
1 parent 6857950 commit 1bd93ea
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 22 deletions.
18 changes: 7 additions & 11 deletions man/man5/zpool-features.5
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down
5 changes: 4 additions & 1 deletion man/man8/zfs.8
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
11 changes: 1 addition & 10 deletions module/zfs/zfs_ioctl.c
Expand Up @@ -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));
Expand Down

0 comments on commit 1bd93ea

Please sign in to comment.