| # 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. |