This subtree contains the ZSTD library used in ZFS. It is heavily
cut-down by dropping any unneeded files, and combined into a single
file, but otherwise is intentionally unmodified. Please do not alter the
file containing the zstd library, besides upgrading to a newer ZSTD
release.
Tree structure:
zfs_zstd.c is the actual zzstd kernel
module.
lib/ contains the the unmodified, "amalgamated"
version of the Zstandard library, generated from our
template file
zstd-in.c is our template file for generating the
library
include/: This directory contains supplemental includes
for platform compatibility, which are not expected to be used by ZFS
elsewhere in the future. Thus we keep them private to ZSTD.
Updating ZSTD
To update ZSTD the following steps need to be taken:
If ZSTD made changes that break compatibility or you need to make
breaking changes to the way we handle ZSTD, it is required to maintain
backwards compatibility.
We already save the ZSTD version number within the block header to be
used to add future compatibility checks and/or fixes. However, currently
it is not actually used in such a way.