mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Refine the description to better highlight its features and use cases. In addition, add instructions for building it as a module and clarify the compression option. Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
216 lines
7.3 KiB
Plaintext
216 lines
7.3 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
config EROFS_FS
|
|
tristate "EROFS filesystem support"
|
|
depends on BLOCK
|
|
select CACHEFILES if EROFS_FS_ONDEMAND
|
|
select CRC32
|
|
select CRYPTO if EROFS_FS_ZIP_ACCEL
|
|
select CRYPTO_DEFLATE if EROFS_FS_ZIP_ACCEL
|
|
select FS_IOMAP
|
|
select LZ4_DECOMPRESS if EROFS_FS_ZIP
|
|
select NETFS_SUPPORT if EROFS_FS_ONDEMAND
|
|
select XXHASH if EROFS_FS_XATTR
|
|
select XZ_DEC if EROFS_FS_ZIP_LZMA
|
|
select XZ_DEC_MICROLZMA if EROFS_FS_ZIP_LZMA
|
|
select ZLIB_INFLATE if EROFS_FS_ZIP_DEFLATE
|
|
select ZSTD_DECOMPRESS if EROFS_FS_ZIP_ZSTD
|
|
help
|
|
EROFS (Enhanced Read-Only File System) is a modern, lightweight,
|
|
secure read-only filesystem for various use cases, such as immutable
|
|
system images, container images, application sandboxes, and datasets.
|
|
|
|
EROFS uses a flexible, hierarchical on-disk design so that features
|
|
can be enabled on demand: the core on-disk format is block-aligned in
|
|
order to perform optimally on all kinds of devices, including block
|
|
and memory-backed devices; the format is easy to parse and has zero
|
|
metadata redundancy, unlike generic filesystems, making it ideal for
|
|
filesystem auditing and remote access; inline data, random-access
|
|
friendly directory data, inline/shared extended attributes and
|
|
chunk-based deduplication ensure space efficiency while maintaining
|
|
high performance.
|
|
|
|
Optionally, it supports multiple devices to reference external data,
|
|
enabling data sharing for container images.
|
|
|
|
It also has advanced encoded on-disk layouts, particularly for data
|
|
compression and fine-grained deduplication. It utilizes fixed-size
|
|
output compression to improve storage density while keeping relatively
|
|
high compression ratios. Furthermore, it implements in-place
|
|
decompression to reuse file pages to keep compressed data temporarily
|
|
with proper strategies, which ensures guaranteed end-to-end runtime
|
|
performance under extreme memory pressure without extra cost.
|
|
|
|
For more details, see the web pages at <https://erofs.docs.kernel.org>
|
|
and the documentation at <file:Documentation/filesystems/erofs.rst>.
|
|
|
|
To compile EROFS filesystem support as a module, choose M here. The
|
|
module will be called erofs.
|
|
|
|
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
|
|
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_BACKED_BY_FILE
|
|
bool "File-backed EROFS filesystem support"
|
|
depends on EROFS_FS
|
|
default y
|
|
help
|
|
This allows EROFS to use filesystem image files directly, without
|
|
the intercession of loopback block devices or likewise. It is
|
|
particularly useful for container images with numerous blobs and
|
|
other sandboxes, where loop devices behave intricately. It can also
|
|
be used to simplify error-prone lifetime management of unnecessary
|
|
virtual block devices.
|
|
|
|
Note that this feature, along with ongoing fanotify pre-content
|
|
hooks, will eventually replace "EROFS over fscache."
|
|
|
|
If you don't want to enable this feature, say N.
|
|
|
|
config EROFS_FS_ZIP
|
|
bool "EROFS Data Compression Support"
|
|
depends on EROFS_FS
|
|
default y
|
|
help
|
|
Enable EROFS compression layouts so that filesystems containing
|
|
compressed files can be parsed by the kernel.
|
|
|
|
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
|
|
default y
|
|
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.
|
|
|
|
Say N if you want to disable LZMA compression support.
|
|
|
|
config EROFS_FS_ZIP_DEFLATE
|
|
bool "EROFS DEFLATE compressed data support"
|
|
depends on EROFS_FS_ZIP
|
|
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.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_ZIP_ZSTD
|
|
bool "EROFS Zstandard compressed data support"
|
|
depends on EROFS_FS_ZIP
|
|
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 and memory footprint.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_ZIP_ACCEL
|
|
bool "EROFS hardware decompression support"
|
|
depends on EROFS_FS_ZIP
|
|
help
|
|
Saying Y here includes hardware accelerator support for reading
|
|
EROFS file systems containing compressed data. It gives better
|
|
decompression speed than the software-implemented decompression, and
|
|
it costs lower CPU overhead.
|
|
|
|
Hardware accelerator support is an experimental feature for now and
|
|
file systems are still readable without selecting this option.
|
|
|
|
If unsure, say N.
|
|
|
|
config EROFS_FS_ONDEMAND
|
|
bool "EROFS fscache-based on-demand read support (deprecated)"
|
|
depends on EROFS_FS
|
|
select FSCACHE
|
|
select CACHEFILES_ONDEMAND
|
|
help
|
|
This permits EROFS to use fscache-backed data blobs with on-demand
|
|
read support.
|
|
|
|
It is now deprecated and scheduled to be removed from the kernel
|
|
after fanotify pre-content hooks are landed.
|
|
|
|
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.
|
|
|
|
config EROFS_FS_PAGE_CACHE_SHARE
|
|
bool "EROFS page cache share support (experimental)"
|
|
depends on EROFS_FS && EROFS_FS_XATTR && !EROFS_FS_ONDEMAND
|
|
help
|
|
This enables page cache sharing among inodes with identical
|
|
content fingerprints on the same machine.
|
|
|
|
If unsure, say N.
|