]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Enable edonr in FreeBSD
authorRich Ercolani <214141+rincebrain@users.noreply.github.com>
Tue, 16 Nov 2021 19:40:10 +0000 (14:40 -0500)
committerGitHub <noreply@github.com>
Tue, 16 Nov 2021 19:40:10 +0000 (12:40 -0700)
The code is integrated, builds fine, runs fine, there's not really
any reason not to.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
Reviewed-by: Allan Jude <allan@klarasystems.com>
Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
Closes #12735

13 files changed:
include/sys/zio.h
man/man7/zfsprops.7
man/man7/zpool-features.7
module/Makefile.bsd
module/zcommon/zfeature_common.c
module/zcommon/zfs_prop.c
module/zfs/zio_checksum.c
tests/runfiles/common.run
tests/runfiles/linux.run
tests/zfs-tests/tests/functional/checksum/Makefile.am
tests/zfs-tests/tests/functional/checksum/default.cfg
tests/zfs-tests/tests/functional/cli_root/zfs_set/checksum_001_pos.ksh
tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg

index b3589e9b0312f6479e1a9a0271fa131604dd8a6a..121b58dea58ef89486c14acd934486bcceb61e31 100644 (file)
@@ -88,9 +88,7 @@ enum zio_checksum {
        ZIO_CHECKSUM_NOPARITY,
        ZIO_CHECKSUM_SHA512,
        ZIO_CHECKSUM_SKEIN,
-#if !defined(__FreeBSD__)
        ZIO_CHECKSUM_EDONR,
-#endif
        ZIO_CHECKSUM_FUNCTIONS
 };
 
index 78721f2df9fa1807cedaad9150cd37677b0b644f..55bcde3dca41a2d4e9c2a7c2107bf4fe86d228c2 100644 (file)
@@ -771,10 +771,6 @@ The
 and
 .Sy edonr
 checksum algorithms require enabling the appropriate features on the pool.
-.Fx
-does not support the
-.Sy edonr
-algorithm.
 .Pp
 Please see
 .Xr zpool-features 7
index 83ca91175370a759734fdc22a10ee83b8a94403c..d10ca7f441f6554a8b085a5c93c44fe70d8bda32 100644 (file)
@@ -436,10 +436,6 @@ in ZFS, which means that the checksum is pre-seeded with a secret
 to be checksummed.
 Thus the produced checksums are unique to a given pool,
 preventing hash collision attacks on systems with dedup.
-.Pp
-.checksum-spiel edonr
-.Pp
-.Fx does not support the Sy edonr No feature.
 .
 .feature com.delphix embedded_data no
 This feature improves the performance and compression ratio of
index 8aa4ed22275e9e11a1fac38115db75cb065c6b31..63aacb04b35bcfc96a8a1b104200920aace23c2d 100644 (file)
@@ -12,6 +12,7 @@ KMOD= openzfs
 .PATH: ${SRCDIR}/avl \
        ${SRCDIR}/lua \
        ${SRCDIR}/nvpair \
+       ${SRCDIR}/icp/algs/edonr \
        ${SRCDIR}/os/freebsd/spl \
        ${SRCDIR}/os/freebsd/zfs \
        ${SRCDIR}/unicode \
@@ -73,6 +74,9 @@ SRCS= vnode_if.h device_if.h bus_if.h
 # avl
 SRCS+= avl.c
 
+# icp
+SRCS+=  edonr.c
+
 #lua
 SRCS+= lapi.c \
        lauxlib.c \
@@ -219,6 +223,7 @@ SRCS+=      abd.c \
        dsl_scan.c \
        dsl_synctask.c \
        dsl_userhold.c \
+       edonr_zfs.c \
        fm.c \
        gzip.c \
        lzjb.c \
@@ -345,6 +350,7 @@ CFLAGS.dmu_traverse.c= -Wno-cast-qual
 CFLAGS.dsl_dir.c= -Wno-cast-qual
 CFLAGS.dsl_deadlist.c= -Wno-cast-qual
 CFLAGS.dsl_prop.c= -Wno-cast-qual
+CFLAGS.edonr.c=-Wno-cast-qual
 CFLAGS.fm.c= -Wno-cast-qual
 CFLAGS.lz4.c= -Wno-cast-qual
 CFLAGS.spa.c= -Wno-cast-qual
index fc0e09605eef0f8f3510a9e0eecaa87ff5f48fd1..da7454c118d72c42cc6706c8f9bad45e429e8cc3 100644 (file)
@@ -227,12 +227,8 @@ zfs_mod_supported_feature(const char *name)
         * tree, but this has not been done yet.  Therefore, we return
         * that all features except edonr are supported.
         */
-#if defined(__FreeBSD__)
-       if (strcmp(name, "org.illumos:edonr") == 0)
-               return (B_FALSE);
-       else
-               return (B_TRUE);
-#elif defined(_KERNEL) || defined(LIB_ZPOOL_BUILD)
+
+#if defined(_KERNEL) || defined(LIB_ZPOOL_BUILD) || defined(__FreeBSD__)
        return (B_TRUE);
 #else
        return (zfs_mod_supported(ZFS_SYSFS_POOL_FEATURES, name));
index d173219908092d00d99fc35ec3ac514d341c8fd8..260bf185a3f822a2f71898aff7653eb242470c96 100644 (file)
@@ -83,10 +83,7 @@ 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 }
        };
 
@@ -103,11 +100,8 @@ 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 }
        };
 
@@ -396,21 +390,13 @@ zfs_prop_init(void)
        zprop_register_index(ZFS_PROP_CHECKSUM, "checksum",
            ZIO_CHECKSUM_DEFAULT, PROP_INHERIT, ZFS_TYPE_FILESYSTEM |
            ZFS_TYPE_VOLUME,
-#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] | "
-#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,
index f8fee78c606843c5c5497e5cd6e148c3b60a46f9..e6b5c958893923b93454b4975ddcd77a7f110229 100644 (file)
@@ -191,12 +191,10 @@ 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
 };
 
 /*
@@ -213,10 +211,8 @@ 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);
        }
index 980e25958f7f47538e9cfd1631747863c702dd28..89cd58c2aa32b4ecd0b293bdef352400c773f18e 100644 (file)
@@ -109,7 +109,7 @@ tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit',
 tags = ['functional', 'channel_program', 'synctask_core']
 
 [tests/functional/checksum]
-tests = ['run_sha2_test', 'run_skein_test', 'filetest_001_pos',
+tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'filetest_001_pos',
     'filetest_002_pos']
 tags = ['functional', 'checksum']
 
index 01e1f79e5852b59771b84c26adadc788fcce8b05..eab9c5dc77435d53a28ed8d541832a4c8e45afed 100644 (file)
@@ -38,10 +38,6 @@ 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']
index ddabc0302010ac018215de2b21504a2e33cd753b..717098aa07238b2ad1a0072376fc14beb5bbb742 100644 (file)
@@ -21,13 +21,11 @@ dist_pkgdata_DATA = \
 pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum
 
 pkgexec_PROGRAMS = \
+       edonr_test \
        skein_test \
        sha2_test
 
 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
index bc2f6e261b73d4a637e044e501a7317562c8fca4..afb956093d8aeaa2ed6488003ee18ea3a01046f5 100644 (file)
@@ -30,7 +30,4 @@
 
 . $STF_SUITE/include/libtest.shlib
 
-set -A CHECKSUM_TYPES "fletcher2" "fletcher4" "sha256" "sha512" "skein"
-if ! is_freebsd; then
-       CHECKSUM_TYPES+=("edonr")
-fi
+set -A CHECKSUM_TYPES "fletcher2" "fletcher4" "sha256" "sha512" "skein" "edonr"
index f30d0052240ea911cbd2a5288785826a610457c1..27003b21b556ecc4459c4c5ad1f04346f0ab6803 100755 (executable)
 verify_runnable "both"
 
 set -A dataset "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTVOL"
-set -A values "on" "off" "fletcher2" "fletcher4" "sha256" "sha512" "skein" "noparity"
-if is_linux; then
-       values+=("edonr")
-fi
+set -A values "on" "off" "fletcher2" "fletcher4" "sha256" "sha512" "skein" "edonr" "noparity"
 
 log_assert "Setting a valid checksum on a file system, volume," \
        "it should be successful."
index 6075e1f1abbd7ce6d6b8747565a5584cfff99230..accbf69cf9c83c2fc7794c2b53d009431c76e339 100644 (file)
@@ -72,6 +72,7 @@ typeset -a properties=(
     "feature@large_blocks"
     "feature@sha512"
     "feature@skein"
+    "feature@edonr"
     "feature@device_removal"
     "feature@obsolete_counts"
     "feature@zpool_checkpoint"
@@ -97,10 +98,4 @@ if is_linux || is_freebsd; then
            "feature@livelist"
            "feature@zstd_compress"
        )
-fi
-
-if ! is_freebsd; then
-       properties+=(
-           "feature@edonr"
-       )
-fi
+fi
\ No newline at end of file