Re: [RFC PATCH 6/6] btrfs: zlib: add support for zlib-deflate through acomp

David Sterba
2025-05-07T12:18:02Z

On Wed, May 07, 2025 at 10:23:53AM +0800, Herbert Xu wrote:
> On Tue, May 06, 2025 at 04:38:11PM +0100, Cabiddu, Giovanni wrote:
> >
> > > We'd have to enhance the compression format specifier to make it
> > > configurable in the sense: if accelerator is available use it, otherwise
> > > do CPU and synchronous compression.
> > For usability, wouldn't it be better to have a transparent solution? If
> > an accelerator is present, use it, rather than having a configuration
> > knob.
>
> If you go through the Crypto API you won't need to add a new knob
> at all.
>
> The Crypto API is already configurable and comes with a knob
> pre-installed. Just download crconf and you can configure which
> algorithm will be used by default:
>
> https://git.code.sf.net/p/crconf/code

First time I hear about such tool and given what it does I think it
should have better visibility and presence also in "the other" git
sources. It's not mentioned in linux Documentation either.

SourceForge is not taken seriously for quite some time and the project
landing page https://sourceforge.net/projects/crconf/ matches the
pattern of abandoned SF projects, last commit 5 years ago.

The first hit on gihub is https://github.com/Thermi/crconf and at least
it matches the SF commits.

The command line interface follows the iproute2 style that is
arguably hard to navigate:

$ ./crconf
Usage: crconf add { ALG | DRIVER } TYPE [ PRIORITY ]
crconf del DRIVER TYPE
crconf update DRIVER TYPE [ PRIORITY ]
crconf show { DRIVER TYPE | all }
crconf help
ALG := alg <alg-name>
DRIVER := driver <driver-name>
TYPE := type ALGO-TYPE
PRIORITY := priority <number>
ALGO-TYPE := { 1 | 2 | 3 | 5 | 8 | 10 | 11 | 12 | 13 | 14 | 15 }
1 == alg type cipher
2 == alg type compress
3 == alg type aead
5 == alg type skcipher
8 == alg type kpp
10 == alg type acompress
11 == alg type scompress
12 == alg type rng
13 == alg type akcipher
14 == alg type hash
14 == alg type shash
15 == alg type ahash

The manual page lacks any useful examples and figuring out how to set
the priority took me a few minutes of grepping in /proc/crypto, trial
and error to end up with:

sudo ./crconf update driver sha256-generic type 14 priority 1000

The usability has a lot of room for improvement.

Anyway, assuming there will be a maintained, packaged in distros and
user friendly tool to tweak the linux crypto subsystem I agree we don't
have to do it in the filesystem or other subsystems.