mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
7c35de4df1
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
160 lines
4.9 KiB
Text
160 lines
4.9 KiB
Text
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
config EROFS_FS
|
|
tristate "EROFS filesystem support"
|
|
depends on BLOCK
|
|
select FS_IOMAP
|
|
select LIBCRC32C
|
|
help
|
|
EROFS (Enhanced Read-Only File System) is a lightweight read-only
|
|
file system with modern designs (e.g. no buffer heads, inline
|
|
xattrs/data, chunk-based deduplication, multiple devices, etc.) for
|
|
scenarios which need high-performance read-only solutions, e.g.
|
|
smartphones with Android OS, LiveCDs and high-density hosts with
|
|
numerous containers;
|
|
|
|
It also provides fixed-sized output compression support in order to
|
|
improve storage density as well as keep relatively higher compression
|
|
ratios and implements in-place decompression to reuse the file page
|
|
for compressed data temporarily with proper strategies, which is
|
|
quite useful to ensure guaranteed end-to-end runtime decompression
|
|
performance under extremely memory pressure without extra cost.
|
|
|
|
See the documentation at <file:Documentation/filesystems/erofs.rst>
|
|
and the web pages at <https://erofs.docs.kernel.org> for more details.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_DEBUG
|
|
bool "EROFS debugging feature"
|
|
depends on EROFS_FS
|
|
help
|
|
Print debugging messages and enable more BUG_ONs which check
|
|
filesystem consistency and find potential issues aggressively,
|
|
which can be used for Android eng build, for example.
|
|
|
|
For daily use, say N.
|
|
|
|
config EROFS_FS_XATTR
|
|
bool "EROFS extended attributes"
|
|
depends on EROFS_FS
|
|
select XXHASH
|
|
default y
|
|
help
|
|
Extended attributes are name:value pairs associated with inodes by
|
|
the kernel or by users (see the attr(5) manual page, or visit
|
|
<http://acl.bestbits.at/> for details).
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_POSIX_ACL
|
|
bool "EROFS Access Control Lists"
|
|
depends on EROFS_FS_XATTR
|
|
select FS_POSIX_ACL
|
|
default y
|
|
help
|
|
Posix Access Control Lists (ACLs) support permissions for users and
|
|
groups beyond the owner/group/world scheme.
|
|
|
|
To learn more about Access Control Lists, visit the POSIX ACLs for
|
|
Linux website <http://acl.bestbits.at/>.
|
|
|
|
If you don't know what Access Control Lists are, say N.
|
|
|
|
config EROFS_FS_SECURITY
|
|
bool "EROFS Security Labels"
|
|
depends on EROFS_FS_XATTR
|
|
default y
|
|
help
|
|
Security labels provide an access control facility to support Linux
|
|
Security Models (LSMs) accepted by AppArmor, SELinux, Smack and TOMOYO
|
|
Linux. This option enables an extended attribute handler for file
|
|
security labels in the erofs filesystem, so that it requires enabling
|
|
the extended attribute support in advance.
|
|
|
|
If you are not using a security module, say N.
|
|
|
|
config EROFS_FS_ZIP
|
|
bool "EROFS Data Compression Support"
|
|
depends on EROFS_FS
|
|
select LZ4_DECOMPRESS
|
|
default y
|
|
help
|
|
Enable fixed-sized output compression for EROFS.
|
|
|
|
If you don't want to enable compression feature, say N.
|
|
|
|
config EROFS_FS_ZIP_LZMA
|
|
bool "EROFS LZMA compressed data support"
|
|
depends on EROFS_FS_ZIP
|
|
select XZ_DEC
|
|
select XZ_DEC_MICROLZMA
|
|
help
|
|
Saying Y here includes support for reading EROFS file systems
|
|
containing LZMA compressed data, specifically called microLZMA. It
|
|
gives better compression ratios than the default LZ4 format, at the
|
|
expense of more CPU overhead.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_ZIP_DEFLATE
|
|
bool "EROFS DEFLATE compressed data support"
|
|
depends on EROFS_FS_ZIP
|
|
select ZLIB_INFLATE
|
|
help
|
|
Saying Y here includes support for reading EROFS file systems
|
|
containing DEFLATE compressed data. It gives better compression
|
|
ratios than the default LZ4 format, while it costs more CPU
|
|
overhead.
|
|
|
|
DEFLATE support is an experimental feature for now and so most
|
|
file systems will be readable without selecting this option.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_ZIP_ZSTD
|
|
bool "EROFS Zstandard compressed data support"
|
|
depends on EROFS_FS_ZIP
|
|
select ZSTD_DECOMPRESS
|
|
help
|
|
Saying Y here includes support for reading EROFS file systems
|
|
containing Zstandard compressed data. It gives better compression
|
|
ratios than the default LZ4 format, while it costs more CPU
|
|
overhead.
|
|
|
|
Zstandard support is an experimental feature for now and so most
|
|
file systems will be readable without selecting this option.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_ONDEMAND
|
|
bool "EROFS fscache-based on-demand read support"
|
|
depends on EROFS_FS
|
|
select NETFS_SUPPORT
|
|
select FSCACHE
|
|
select CACHEFILES
|
|
select CACHEFILES_ONDEMAND
|
|
help
|
|
This permits EROFS to use fscache-backed data blobs with on-demand
|
|
read support.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_PCPU_KTHREAD
|
|
bool "EROFS per-cpu decompression kthread workers"
|
|
depends on EROFS_FS_ZIP
|
|
help
|
|
Saying Y here enables per-CPU kthread workers pool to carry out
|
|
async decompression for low latencies on some architectures.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_PCPU_KTHREAD_HIPRI
|
|
bool "EROFS high priority per-CPU kthread workers"
|
|
depends on EROFS_FS_ZIP && EROFS_FS_PCPU_KTHREAD
|
|
default y
|
|
help
|
|
This permits EROFS to configure per-CPU kthread workers to run
|
|
at higher priority.
|
|
|
|
If unsure, say N.
|