2019-07-31 15:57:31 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2018-07-26 12:21:51 +00:00
|
|
|
|
|
|
|
config EROFS_FS
|
|
|
|
tristate "EROFS filesystem support"
|
2018-08-28 03:39:48 +00:00
|
|
|
depends on BLOCK
|
2021-08-05 00:35:59 +00:00
|
|
|
select FS_IOMAP
|
2019-11-04 02:49:37 +00:00
|
|
|
select LIBCRC32C
|
2018-07-26 12:21:51 +00:00
|
|
|
help
|
2021-10-14 08:10:10 +00:00
|
|
|
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>
|
2023-11-17 08:53:29 +00:00
|
|
|
and the web pages at <https://erofs.docs.kernel.org> for more details.
|
2018-07-26 12:21:51 +00:00
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
|
|
|
config EROFS_FS_DEBUG
|
|
|
|
bool "EROFS debugging feature"
|
|
|
|
depends on EROFS_FS
|
|
|
|
help
|
2019-07-31 15:57:52 +00:00
|
|
|
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.
|
2018-07-26 12:21:51 +00:00
|
|
|
|
|
|
|
For daily use, say N.
|
|
|
|
|
2018-07-26 12:21:52 +00:00
|
|
|
config EROFS_FS_XATTR
|
|
|
|
bool "EROFS extended attributes"
|
|
|
|
depends on EROFS_FS
|
2023-07-22 09:45:38 +00:00
|
|
|
select XXHASH
|
2018-07-26 12:21:52 +00:00
|
|
|
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
|
2019-07-31 15:57:52 +00:00
|
|
|
default y
|
2018-07-26 12:21:52 +00:00
|
|
|
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.
|
|
|
|
|
erofs: add file-backed mount support
It actually has been around for years: For containers and other sandbox
use cases, there will be thousands (and even more) of authenticated
(sub)images running on the same host, unlike OS images.
Of course, all scenarios can use the same EROFS on-disk format, but
bdev-backed mounts just work well for OS images since golden data is
dumped into real block devices. However, it's somewhat hard for
container runtimes to manage and isolate so many unnecessary virtual
block devices safely and efficiently [1]: they just look like a burden
to orchestrators and file-backed mounts are preferred indeed. There
were already enough attempts such as Incremental FS, the original
ComposeFS and PuzzleFS acting in the same way for immutable fses. As
for current EROFS users, ComposeFS, containerd and Android APEXs will
be directly benefited from it.
On the other hand, previous experimental feature "erofs over fscache"
was once also intended to provide a similar solution (inspired by
Incremental FS discussion [2]), but the following facts show file-backed
mounts will be a better approach:
- Fscache infrastructure has recently been moved into new Netfslib
which is an unexpected dependency to EROFS really, although it
originally claims "it could be used for caching other things such as
ISO9660 filesystems too." [3]
- It takes an unexpectedly long time to upstream Fscache/Cachefiles
enhancements. For example, the failover feature took more than
one year, and the deamonless feature is still far behind now;
- Ongoing HSM "fanotify pre-content hooks" [4] together with this will
perfectly supersede "erofs over fscache" in a simpler way since
developers (mainly containerd folks) could leverage their existing
caching mechanism entirely in userspace instead of strictly following
the predefined in-kernel caching tree hierarchy.
After "fanotify pre-content hooks" lands upstream to provide the same
functionality, "erofs over fscache" will be removed then (as an EROFS
internal improvement and EROFS will not have to bother with on-demand
fetching and/or caching improvements anymore.)
[1] https://github.com/containers/storage/pull/2039
[2] https://lore.kernel.org/r/CAOQ4uxjbVxnubaPjVaGYiSwoGDTdpWbB=w_AeM6YM=zVixsUfQ@mail.gmail.com
[3] https://docs.kernel.org/filesystems/caching/fscache.html
[4] https://lore.kernel.org/r/cover.1723670362.git.josef@toxicpanda.com
Closes: https://github.com/containers/composefs/issues/144
Reviewed-by: Sandeep Dhavale <dhavale@google.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240830032840.3783206-1-hsiangkao@linux.alibaba.com
2024-08-30 03:28:37 +00:00
|
|
|
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.
|
|
|
|
|
2018-07-26 12:21:58 +00:00
|
|
|
config EROFS_FS_ZIP
|
2019-07-31 15:57:52 +00:00
|
|
|
bool "EROFS Data Compression Support"
|
2018-07-26 12:21:58 +00:00
|
|
|
depends on EROFS_FS
|
2018-11-09 16:07:50 +00:00
|
|
|
select LZ4_DECOMPRESS
|
2019-07-31 15:57:52 +00:00
|
|
|
default y
|
2018-07-26 12:21:58 +00:00
|
|
|
help
|
2019-07-31 15:57:52 +00:00
|
|
|
Enable fixed-sized output compression for EROFS.
|
2018-07-26 12:21:58 +00:00
|
|
|
|
2019-07-31 15:57:52 +00:00
|
|
|
If you don't want to enable compression feature, say N.
|
2021-10-10 21:31:45 +00:00
|
|
|
|
|
|
|
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
|
2023-10-21 02:01:37 +00:00
|
|
|
containing LZMA compressed data, specifically called microLZMA. It
|
|
|
|
gives better compression ratios than the default LZ4 format, at the
|
2021-10-10 21:31:45 +00:00
|
|
|
expense of more CPU overhead.
|
|
|
|
|
|
|
|
If unsure, say N.
|
2022-04-25 12:21:33 +00:00
|
|
|
|
erofs: DEFLATE compression support
Add DEFLATE compression as the 3rd supported algorithm.
DEFLATE is a popular generic-purpose compression algorithm for quite
long time (many advanced formats like gzip, zlib, zip, png are all
based on that) as Apple documentation written "If you require
interoperability with non-Apple devices, use COMPRESSION_ZLIB. [1]".
Due to its popularity, there are several hardware on-market DEFLATE
accelerators, such as (s390) DFLTCC, (Intel) IAA/QAT, (HiSilicon) ZIP
accelerator, etc. In addition, there are also several high-performence
IP cores and even open-source FPGA approches available for DEFLATE.
Therefore, it's useful to support DEFLATE compression in order to find
a way to utilize these accelerators for asynchronous I/Os and get
benefits from these later.
Besides, it's a good choice to trade off between compression ratios
and performance compared to LZ4 and LZMA. The DEFLATE core format is
simple as well as easy to understand, therefore the code size of its
decompressor is small even for the bootloader use cases. The runtime
memory consumption is quite limited too (e.g. 32K + ~7K for each zlib
stream). As usual, EROFS ourperforms similar approaches too.
Alternatively, DEFLATE could still be used for some specific files
since EROFS supports multiple compression algorithms in one image.
[1] https://developer.apple.com/documentation/compression/compression_algorithm
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230810154859.118330-1-hsiangkao@linux.alibaba.com
2023-08-10 15:48:59 +00:00
|
|
|
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.
|
|
|
|
|
2024-05-08 23:44:53 +00:00
|
|
|
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.
|
|
|
|
|
2022-04-25 12:21:33 +00:00
|
|
|
config EROFS_FS_ONDEMAND
|
2024-08-30 03:28:40 +00:00
|
|
|
bool "EROFS fscache-based on-demand read support (deprecated)"
|
2023-11-20 15:55:18 +00:00
|
|
|
depends on EROFS_FS
|
|
|
|
select NETFS_SUPPORT
|
|
|
|
select FSCACHE
|
|
|
|
select CACHEFILES
|
|
|
|
select CACHEFILES_ONDEMAND
|
2022-04-25 12:21:33 +00:00
|
|
|
help
|
|
|
|
This permits EROFS to use fscache-backed data blobs with on-demand
|
|
|
|
read support.
|
|
|
|
|
2024-08-30 03:28:40 +00:00
|
|
|
It is now deprecated and scheduled to be removed from the kernel
|
|
|
|
after fanotify pre-content hooks are landed.
|
|
|
|
|
2022-04-25 12:21:33 +00:00
|
|
|
If unsure, say N.
|
2023-02-08 09:33:22 +00:00
|
|
|
|
|
|
|
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
|
2023-05-22 09:21:41 +00:00
|
|
|
default y
|
2023-02-08 09:33:22 +00:00
|
|
|
help
|
|
|
|
This permits EROFS to configure per-CPU kthread workers to run
|
|
|
|
at higher priority.
|
|
|
|
|
|
|
|
If unsure, say N.
|