1# SPDX-License-Identifier: GPL-2.0-only 2 3config EROFS_FS 4 tristate "EROFS filesystem support" 5 depends on BLOCK 6 select CACHEFILES if EROFS_FS_ONDEMAND 7 select CRC32 8 select CRYPTO if EROFS_FS_ZIP_ACCEL 9 select CRYPTO_DEFLATE if EROFS_FS_ZIP_ACCEL 10 select FS_IOMAP 11 select LZ4_DECOMPRESS if EROFS_FS_ZIP 12 select NETFS_SUPPORT if EROFS_FS_ONDEMAND 13 select XXHASH if EROFS_FS_XATTR 14 select XZ_DEC if EROFS_FS_ZIP_LZMA 15 select XZ_DEC_MICROLZMA if EROFS_FS_ZIP_LZMA 16 select ZLIB_INFLATE if EROFS_FS_ZIP_DEFLATE 17 select ZSTD_DECOMPRESS if EROFS_FS_ZIP_ZSTD 18 help 19 EROFS (Enhanced Read-Only File System) is a lightweight read-only 20 file system with modern designs (e.g. no buffer heads, inline 21 xattrs/data, chunk-based deduplication, multiple devices, etc.) for 22 scenarios which need high-performance read-only solutions, e.g. 23 smartphones with Android OS, LiveCDs and high-density hosts with 24 numerous containers; 25 26 It also provides transparent compression and deduplication support to 27 improve storage density and maintain relatively high compression 28 ratios, and it implements in-place decompression to temporarily reuse 29 page cache for compressed data using proper strategies, which is 30 quite useful for ensuring guaranteed end-to-end runtime decompression 31 performance under extreme memory pressure without extra cost. 32 33 See the documentation at <file:Documentation/filesystems/erofs.rst> 34 and the web pages at <https://erofs.docs.kernel.org> for more details. 35 36 If unsure, say N. 37 38config EROFS_FS_DEBUG 39 bool "EROFS debugging feature" 40 depends on EROFS_FS 41 help 42 Print debugging messages and enable more BUG_ONs which check 43 filesystem consistency and find potential issues aggressively, 44 which can be used for Android eng build, for example. 45 46 For daily use, say N. 47 48config EROFS_FS_XATTR 49 bool "EROFS extended attributes" 50 depends on EROFS_FS 51 default y 52 help 53 Extended attributes are name:value pairs associated with inodes by 54 the kernel or by users (see the attr(5) manual page, or visit 55 <http://acl.bestbits.at/> for details). 56 57 If unsure, say N. 58 59config EROFS_FS_POSIX_ACL 60 bool "EROFS Access Control Lists" 61 depends on EROFS_FS_XATTR 62 select FS_POSIX_ACL 63 default y 64 help 65 Posix Access Control Lists (ACLs) support permissions for users and 66 groups beyond the owner/group/world scheme. 67 68 To learn more about Access Control Lists, visit the POSIX ACLs for 69 Linux website <http://acl.bestbits.at/>. 70 71 If you don't know what Access Control Lists are, say N. 72 73config EROFS_FS_SECURITY 74 bool "EROFS Security Labels" 75 depends on EROFS_FS_XATTR 76 default y 77 help 78 Security labels provide an access control facility to support Linux 79 Security Models (LSMs) accepted by AppArmor, SELinux, Smack and TOMOYO 80 Linux. This option enables an extended attribute handler for file 81 security labels in the erofs filesystem, so that it requires enabling 82 the extended attribute support in advance. 83 84 If you are not using a security module, say N. 85 86config EROFS_FS_BACKED_BY_FILE 87 bool "File-backed EROFS filesystem support" 88 depends on EROFS_FS 89 default y 90 help 91 This allows EROFS to use filesystem image files directly, without 92 the intercession of loopback block devices or likewise. It is 93 particularly useful for container images with numerous blobs and 94 other sandboxes, where loop devices behave intricately. It can also 95 be used to simplify error-prone lifetime management of unnecessary 96 virtual block devices. 97 98 Note that this feature, along with ongoing fanotify pre-content 99 hooks, will eventually replace "EROFS over fscache." 100 101 If you don't want to enable this feature, say N. 102 103config EROFS_FS_ZIP 104 bool "EROFS Data Compression Support" 105 depends on EROFS_FS 106 default y 107 help 108 Enable transparent compression support for EROFS file systems. 109 110 If you don't want to enable compression feature, say N. 111 112config EROFS_FS_ZIP_LZMA 113 bool "EROFS LZMA compressed data support" 114 depends on EROFS_FS_ZIP 115 default y 116 help 117 Saying Y here includes support for reading EROFS file systems 118 containing LZMA compressed data, specifically called microLZMA. It 119 gives better compression ratios than the default LZ4 format, at the 120 expense of more CPU overhead. 121 122 Say N if you want to disable LZMA compression support. 123 124config EROFS_FS_ZIP_DEFLATE 125 bool "EROFS DEFLATE compressed data support" 126 depends on EROFS_FS_ZIP 127 help 128 Saying Y here includes support for reading EROFS file systems 129 containing DEFLATE compressed data. It gives better compression 130 ratios than the default LZ4 format, while it costs more CPU 131 overhead. 132 133 If unsure, say N. 134 135config EROFS_FS_ZIP_ZSTD 136 bool "EROFS Zstandard compressed data support" 137 depends on EROFS_FS_ZIP 138 help 139 Saying Y here includes support for reading EROFS file systems 140 containing Zstandard compressed data. It gives better compression 141 ratios than the default LZ4 format, while it costs more CPU 142 overhead and memory footprint. 143 144 If unsure, say N. 145 146config EROFS_FS_ZIP_ACCEL 147 bool "EROFS hardware decompression support" 148 depends on EROFS_FS_ZIP 149 help 150 Saying Y here includes hardware accelerator support for reading 151 EROFS file systems containing compressed data. It gives better 152 decompression speed than the software-implemented decompression, and 153 it costs lower CPU overhead. 154 155 Hardware accelerator support is an experimental feature for now and 156 file systems are still readable without selecting this option. 157 158 If unsure, say N. 159 160config EROFS_FS_ONDEMAND 161 bool "EROFS fscache-based on-demand read support (deprecated)" 162 depends on EROFS_FS 163 select FSCACHE 164 select CACHEFILES_ONDEMAND 165 help 166 This permits EROFS to use fscache-backed data blobs with on-demand 167 read support. 168 169 It is now deprecated and scheduled to be removed from the kernel 170 after fanotify pre-content hooks are landed. 171 172 If unsure, say N. 173 174config EROFS_FS_PCPU_KTHREAD 175 bool "EROFS per-cpu decompression kthread workers" 176 depends on EROFS_FS_ZIP 177 help 178 Saying Y here enables per-CPU kthread workers pool to carry out 179 async decompression for low latencies on some architectures. 180 181 If unsure, say N. 182 183config EROFS_FS_PCPU_KTHREAD_HIPRI 184 bool "EROFS high priority per-CPU kthread workers" 185 depends on EROFS_FS_ZIP && EROFS_FS_PCPU_KTHREAD 186 default y 187 help 188 This permits EROFS to configure per-CPU kthread workers to run 189 at higher priority. 190 191 If unsure, say N. 192 193config EROFS_FS_PAGE_CACHE_SHARE 194 bool "EROFS page cache share support (experimental)" 195 depends on EROFS_FS && EROFS_FS_XATTR && !EROFS_FS_ONDEMAND 196 help 197 This enables page cache sharing among inodes with identical 198 content fingerprints on the same machine. 199 200 If unsure, say N. 201