From beb08653934115e489474a35fc408b67701cd91a Mon Sep 17 00:00:00 2001 From: Matt Macy Date: Mon, 2 Dec 2019 22:58:32 +0000 Subject: [PATCH] disable EDONR on FreeBSD FreeBSD uses its own crypto framework in-kernel which, at this time, has no EDONR implementation. Signed-off-by: Matt Macy --- include/sys/zio.h | 2 ++ module/zcommon/zfeature_common.c | 3 +++ module/zcommon/zfs_prop.c | 6 ++++++ module/zfs/zio_checksum.c | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/include/sys/zio.h b/include/sys/zio.h index 9326030d05c..2663b5cfe22 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__) || !defined(_KERNEL) ZIO_CHECKSUM_EDONR, +#endif ZIO_CHECKSUM_FUNCTIONS }; diff --git a/module/zcommon/zfeature_common.c b/module/zcommon/zfeature_common.c index e5a1aff9cea..9cf5968067f 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__) || !defined(_KERNEL) + { 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 2a1004cb23a..117e5789f3f 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(_KERNEL) || !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(_KERNEL) || !defined(__FreeBSD__) + { "edonr,verify", ZIO_CHECKSUM_EDONR | ZIO_CHECKSUM_VERIFY }, +#endif { NULL } }; diff --git a/module/zfs/zio_checksum.c b/module/zfs/zio_checksum.c index 179fab5de36..3d27042de0f 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(_KERNEL) || !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(_KERNEL) || !defined(__FreeBSD__) case ZIO_CHECKSUM_EDONR: return (SPA_FEATURE_EDONR); +#endif default: return (SPA_FEATURE_NONE); }