| # 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 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 transparent compression and deduplication support to | |
| improve storage density and maintain relatively high compression | |
| ratios, and it implements in-place decompression to temporarily reuse | |
| page cache for compressed data using proper strategies, which is | |
| quite useful for ensuring guaranteed end-to-end runtime decompression | |
| performance under extreme 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 | |
| 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 transparent compression support for EROFS file systems. | |
| 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 | |
| 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_LZMA_DEFAULT_MAX_STREAMS | |
| int "EROFS LZMA default maximum decompression streams" if SMP | |
| depends on EROFS_FS_ZIP_LZMA | |
| range 1 NR_CPUS if SMP | |
| range 1 1 if !SMP | |
| default 16 if SMP && NR_CPUS >= 16 | |
| default NR_CPUS if SMP | |
| default 1 | |
| help | |
| By default EROFS allocates one LZMA decompression stream per CPU. | |
| Each stream can hold a dictionary of up to 8 MiB taken from the | |
| mounted image, so on systems with many CPUs this can reserve a lot | |
| of memory. This caps the default; the lzma_streams module parameter | |
| still overrides it. | |
| If unsure, keep the suggested default (16 or lower). | |
| 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. | |
| 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 | |
| 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_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. |