erofs: Zstandard compression support
authorGao Xiang <hsiangkao@linux.alibaba.com>
Wed, 8 May 2024 23:44:53 +0000 (07:44 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Wed, 8 May 2024 23:46:56 +0000 (07:46 +0800)
commit7c35de4df1056a5a1fb4de042197b8f5b1033b61
tree44d235d68bdeeb597c516ec547ed8781b369a096
parentd69189428d50c9a8de6475f3c8c241f86f4e764a
erofs: Zstandard compression support

Add Zstandard compression as the 4th supported algorithm since it
becomes more popular now and some end users have asked this for
quite a while [1][2].

Each EROFS physical cluster contains only one valid standard
Zstandard frame as described in [3] so that decompression can be
performed on a per-pcluster basis independently.

Currently, it just leverages multi-call stream decompression APIs with
internal sliding window buffers.  One-shot or bufferless decompression
could be implemented later for even better performance if needed.

[1] https://github.com/erofs/erofs-utils/issues/6
[2] https://lore.kernel.org/r/Y08h+z6CZdnS1XBm@B-P7TQMD6M-0146.lan
[3] https://www.rfc-editor.org/rfc/rfc8478.txt

Acked-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240508234453.17896-1-xiang@kernel.org
fs/erofs/Kconfig
fs/erofs/Makefile
fs/erofs/compress.h
fs/erofs/decompressor.c
fs/erofs/decompressor_zstd.c [new file with mode: 0644]
fs/erofs/erofs_fs.h
fs/erofs/internal.h
fs/erofs/super.c
fs/erofs/zmap.c