diff options
author | Matthew Macy <[email protected]> | 2019-12-05 13:10:29 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-12-05 13:10:29 -0800 |
commit | f95704ca5ef37aac2dc335d878380512a7cf628c (patch) | |
tree | 304d75e90a522e8b11156ad38823709f1d70a951 | |
parent | 054a049841879bfa4d7a8c91fbe5c7d51864e23d (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.h | 2 | ||||
-rw-r--r-- | include/zfeature_common.h | 2 | ||||
-rw-r--r-- | man/man5/zpool-features.5 | 2 | ||||
-rw-r--r-- | man/man8/zfsprops.8 | 3 | ||||
-rw-r--r-- | module/zcommon/zfeature_common.c | 3 | ||||
-rw-r--r-- | module/zcommon/zfs_prop.c | 22 | ||||
-rw-r--r-- | module/zfs/zio_checksum.c | 4 | ||||
-rw-r--r-- | tests/runfiles/common.run | 3 | ||||
-rw-r--r-- | tests/runfiles/linux.run | 4 | ||||
-rw-r--r-- | tests/zfs-tests/tests/functional/checksum/Makefile.am | 7 |
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 |