summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Macy <[email protected]>2019-12-05 13:10:29 -0800
committerBrian Behlendorf <[email protected]>2019-12-05 13:10:29 -0800
commitf95704ca5ef37aac2dc335d878380512a7cf628c (patch)
tree304d75e90a522e8b11156ad38823709f1d70a951
parent054a049841879bfa4d7a8c91fbe5c7d51864e23d (diff)
Disable EDONR on FreeBSD
FreeBSD uses its own crypto framework in-kernel which, at this time, has no EDONR implementation. Reviewed-by: Jorgen Lundman <[email protected]> Reviewed-by: Allan Jude <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Matt Macy <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #9664
-rw-r--r--include/sys/zio.h2
-rw-r--r--include/zfeature_common.h2
-rw-r--r--man/man5/zpool-features.52
-rw-r--r--man/man8/zfsprops.83
-rw-r--r--module/zcommon/zfeature_common.c3
-rw-r--r--module/zcommon/zfs_prop.c22
-rw-r--r--module/zfs/zio_checksum.c4
-rw-r--r--tests/runfiles/common.run3
-rw-r--r--tests/runfiles/linux.run4
-rw-r--r--tests/zfs-tests/tests/functional/checksum/Makefile.am7
10 files changed, 45 insertions, 7 deletions
diff --git a/include/sys/zio.h b/include/sys/zio.h
index 9326030d0..3ecaced74 100644
--- a/include/sys/zio.h
+++ b/include/sys/zio.h
@@ -85,7 +85,9 @@ enum zio_checksum {
ZIO_CHECKSUM_NOPARITY,
ZIO_CHECKSUM_SHA512,
ZIO_CHECKSUM_SKEIN,
+#if !defined(__FreeBSD__)
ZIO_CHECKSUM_EDONR,
+#endif
ZIO_CHECKSUM_FUNCTIONS
};
diff --git a/include/zfeature_common.h b/include/zfeature_common.h
index 4f7822973..2d8767d5b 100644
--- a/include/zfeature_common.h
+++ b/include/zfeature_common.h
@@ -56,7 +56,9 @@ typedef enum spa_feature {
SPA_FEATURE_LARGE_DNODE,
SPA_FEATURE_SHA512,
SPA_FEATURE_SKEIN,
+#if !defined(__FreeBSD__)
SPA_FEATURE_EDONR,
+#endif
SPA_FEATURE_USEROBJ_ACCOUNTING,
SPA_FEATURE_ENCRYPTION,
SPA_FEATURE_PROJECT_QUOTA,
diff --git a/man/man5/zpool-features.5 b/man/man5/zpool-features.5
index 1adc76b7f..b9a739d5b 100644
--- a/man/man5/zpool-features.5
+++ b/man/man5/zpool-features.5
@@ -313,6 +313,8 @@ ever had their checksum set to \fBedonr\fR are destroyed.
The \fBedonr\fR feature is not supported by GRUB and must not be used on
the pool if GRUB needs to access the pool (e.g. for /boot).
+
+FreeBSD does not support the \fBedonr\fR feature.
.RE
.sp
diff --git a/man/man8/zfsprops.8 b/man/man8/zfsprops.8
index abc591782..7318361af 100644
--- a/man/man8/zfsprops.8
+++ b/man/man8/zfsprops.8
@@ -705,6 +705,9 @@ and
checksum algorithms require enabling the appropriate features on the pool.
These pool features are not supported by GRUB and must not be used on the
pool if GRUB needs to access the pool (e.g. for /boot).
+FreeBSD does not support the
+.Sy edonr
+algorithm.
.Pp
Please see
.Xr zpool-features 5
diff --git a/module/zcommon/zfeature_common.c b/module/zcommon/zfeature_common.c
index e5a1aff9c..cc59c406d 100644
--- a/module/zcommon/zfeature_common.c
+++ b/module/zcommon/zfeature_common.c
@@ -421,6 +421,8 @@ zpool_feature_init(void)
skein_deps);
}
+#if !defined(__FreeBSD__)
+
{
static const spa_feature_t edonr_deps[] = {
SPA_FEATURE_EXTENSIBLE_DATASET,
@@ -432,6 +434,7 @@ zpool_feature_init(void)
ZFEATURE_FLAG_PER_DATASET, ZFEATURE_TYPE_BOOLEAN,
edonr_deps);
}
+#endif
{
static const spa_feature_t redact_books_deps[] = {
diff --git a/module/zcommon/zfs_prop.c b/module/zcommon/zfs_prop.c
index bace3f184..20f92c6a8 100644
--- a/module/zcommon/zfs_prop.c
+++ b/module/zcommon/zfs_prop.c
@@ -81,7 +81,10 @@ zfs_prop_init(void)
{ "noparity", ZIO_CHECKSUM_NOPARITY },
{ "sha512", ZIO_CHECKSUM_SHA512 },
{ "skein", ZIO_CHECKSUM_SKEIN },
+#if !defined(__FreeBSD__)
+
{ "edonr", ZIO_CHECKSUM_EDONR },
+#endif
{ NULL }
};
@@ -98,8 +101,11 @@ zfs_prop_init(void)
{ "skein", ZIO_CHECKSUM_SKEIN },
{ "skein,verify",
ZIO_CHECKSUM_SKEIN | ZIO_CHECKSUM_VERIFY },
+#if !defined(__FreeBSD__)
+
{ "edonr,verify",
ZIO_CHECKSUM_EDONR | ZIO_CHECKSUM_VERIFY },
+#endif
{ NULL }
};
@@ -297,12 +303,22 @@ zfs_prop_init(void)
zprop_register_index(ZFS_PROP_CHECKSUM, "checksum",
ZIO_CHECKSUM_DEFAULT, PROP_INHERIT, ZFS_TYPE_FILESYSTEM |
ZFS_TYPE_VOLUME,
- "on | off | fletcher2 | fletcher4 | sha256 | sha512 | "
- "skein | edonr", "CHECKSUM", checksum_table);
+#if !defined(__FreeBSD__)
+ "on | off | fletcher2 | fletcher4 | sha256 | sha512 | skein"
+ " | edonr",
+#else
+ "on | off | fletcher2 | fletcher4 | sha256 | sha512 | skein",
+#endif
+ "CHECKSUM", checksum_table);
zprop_register_index(ZFS_PROP_DEDUP, "dedup", ZIO_CHECKSUM_OFF,
PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME,
"on | off | verify | sha256[,verify], sha512[,verify], "
- "skein[,verify], edonr,verify", "DEDUP", dedup_table);
+#if !defined(__FreeBSD__)
+ "skein[,verify], edonr,verify",
+#else
+ "skein[,verify]",
+#endif
+ "DEDUP", dedup_table);
zprop_register_index(ZFS_PROP_COMPRESSION, "compression",
ZIO_COMPRESS_DEFAULT, PROP_INHERIT,
ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME,
diff --git a/module/zfs/zio_checksum.c b/module/zfs/zio_checksum.c
index 179fab5de..ab1e9494e 100644
--- a/module/zfs/zio_checksum.c
+++ b/module/zfs/zio_checksum.c
@@ -191,10 +191,12 @@ zio_checksum_info_t zio_checksum_table[ZIO_CHECKSUM_FUNCTIONS] = {
abd_checksum_skein_tmpl_init, abd_checksum_skein_tmpl_free,
ZCHECKSUM_FLAG_METADATA | ZCHECKSUM_FLAG_DEDUP |
ZCHECKSUM_FLAG_SALTED | ZCHECKSUM_FLAG_NOPWRITE, "skein"},
+#if !defined(__FreeBSD__)
{{abd_checksum_edonr_native, abd_checksum_edonr_byteswap},
abd_checksum_edonr_tmpl_init, abd_checksum_edonr_tmpl_free,
ZCHECKSUM_FLAG_METADATA | ZCHECKSUM_FLAG_SALTED |
ZCHECKSUM_FLAG_NOPWRITE, "edonr"},
+#endif
};
/*
@@ -211,8 +213,10 @@ zio_checksum_to_feature(enum zio_checksum cksum)
return (SPA_FEATURE_SHA512);
case ZIO_CHECKSUM_SKEIN:
return (SPA_FEATURE_SKEIN);
+#if !defined(__FreeBSD__)
case ZIO_CHECKSUM_EDONR:
return (SPA_FEATURE_EDONR);
+#endif
default:
return (SPA_FEATURE_NONE);
}
diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run
index b1e240b4d..fcf3f8d5d 100644
--- a/tests/runfiles/common.run
+++ b/tests/runfiles/common.run
@@ -84,8 +84,7 @@ tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit',
tags = ['functional', 'channel_program', 'synctask_core']
[tests/functional/checksum]
-tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test',
- 'filetest_001_pos']
+tests = ['run_sha2_test', 'run_skein_test', 'filetest_001_pos']
tags = ['functional', 'checksum']
[tests/functional/clean_mirror]
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run
index a134c8db8..2ef8e1b49 100644
--- a/tests/runfiles/linux.run
+++ b/tests/runfiles/linux.run
@@ -37,6 +37,10 @@ tags = ['functional', 'atime']
tests = ['chattr_001_pos', 'chattr_002_neg']
tags = ['functional', 'chattr']
+[tests/functional/checksum:Linux]
+tests = ['run_edonr_test']
+tags = ['functional', 'checksum']
+
[tests/functional/cli_root/zfs:Linux]
tests = ['zfs_003_neg']
tags = ['functional', 'cli_root', 'zfs']
diff --git a/tests/zfs-tests/tests/functional/checksum/Makefile.am b/tests/zfs-tests/tests/functional/checksum/Makefile.am
index 905d991ed..a8eb41331 100644
--- a/tests/zfs-tests/tests/functional/checksum/Makefile.am
+++ b/tests/zfs-tests/tests/functional/checksum/Makefile.am
@@ -21,10 +21,13 @@ dist_pkgdata_DATA = \
pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum
pkgexec_PROGRAMS = \
- edonr_test \
skein_test \
sha2_test
-edonr_test_SOURCES = edonr_test.c
skein_test_SOURCES = skein_test.c
sha2_test_SOURCES = sha2_test.c
+
+if BUILD_LINUX
+pkgexec_PROGRAMS += edonr_test
+edonr_test_SOURCES = edonr_test.c
+endif