HomeFreeBSD

Fix BLAKE3 tuneable and module loading on Linux and FreeBSD

Description

Fix BLAKE3 tuneable and module loading on Linux and FreeBSD

Apply similar options to BLAKE3 as it is done for zfs_fletcher_4_impl.

The zfs module parameter on Linux changes from icp_blake3_impl to
zfs_blake3_impl.

You can check and set it on Linux via sysfs like this:

[bash]# cat /sys/module/zfs/parameters/zfs_blake3_impl
cycle [fastest] generic sse2 sse41 avx2

[bash]# echo sse2 > /sys/module/zfs/parameters/zfs_blake3_impl
[bash]# cat /sys/module/zfs/parameters/zfs_blake3_impl
cycle fastest generic [sse2] sse41 avx2

The modprobe module parameters may also be used now:

[bash]# modprobe zfs zfs_blake3_impl=sse41
[bash]# cat /sys/module/zfs/parameters/zfs_blake3_impl
cycle fastest generic sse2 [sse41] avx2

On FreeBSD the BLAKE3 implementation can be set via sysctl like this:

[bsd]# sysctl vfs.zfs.blake3_impl
vfs.zfs.blake3_impl: cycle [fastest] generic sse2 sse41 avx2
[bsd]# sysctl vfs.zfs.blake3_impl=sse2
vfs.zfs.blake3_impl: cycle [fastest] generic sse2 sse41 avx2 \
  -> cycle fastest generic [sse2] sse41 avx2

This commit changes also some Blake3 internals like these:

  • blake3_impl_ops_t was renamed to blake3_ops_t
  • all functions are named blake3_impl_NAME() now

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Co-authored-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Tino Reichardt <milky-zfs@mcmilk.de>
Closes #13725

Details

Provenance
Tino Reichardt <milky-zfs@mcmilk.de>Authored on Aug 3 2022, 4:36 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Sep 16 2022, 9:25 PM
Parents
rG7dee043af5d9: zfs_enter rework followup
Branches
Unknown
Tags
Unknown

Event Timeline

Brian Behlendorf <behlendorf1@llnl.gov> committed rG75e8b5ad847e: Fix BLAKE3 tuneable and module loading on Linux and FreeBSD (authored by Tino Reichardt <milky-zfs@mcmilk.de>).Sep 16 2022, 9:25 PM