1 # SPDX-License-Identifier: GPL-2.0-only 1 # SPDX-License-Identifier: GPL-2.0-only 2 config SQUASHFS 2 config SQUASHFS 3 tristate "SquashFS 4.0 - Squashed file 3 tristate "SquashFS 4.0 - Squashed file system support" 4 depends on BLOCK 4 depends on BLOCK 5 help 5 help 6 Saying Y here includes support for S 6 Saying Y here includes support for SquashFS 4.0 (a Compressed 7 Read-Only File System). Squashfs is 7 Read-Only File System). Squashfs is a highly compressed read-only 8 filesystem for Linux. It uses zlib, 8 filesystem for Linux. It uses zlib, lzo or xz compression to 9 compress both files, inodes and dire 9 compress both files, inodes and directories. Inodes in the system 10 are very small and all blocks are pa 10 are very small and all blocks are packed to minimise data overhead. 11 Block sizes greater than 4K are supp 11 Block sizes greater than 4K are supported up to a maximum of 1 Mbytes 12 (default block size 128K). SquashFS 12 (default block size 128K). SquashFS 4.0 supports 64 bit filesystems 13 and files (larger than 4GB), full ui 13 and files (larger than 4GB), full uid/gid information, hard links and 14 timestamps. 14 timestamps. 15 15 16 Squashfs is intended for general rea 16 Squashfs is intended for general read-only filesystem use, for 17 archival use (i.e. in cases where a 17 archival use (i.e. in cases where a .tar.gz file may be used), and in 18 embedded systems where low overhead 18 embedded systems where low overhead is needed. Further information 19 and tools are available from http:// 19 and tools are available from http://squashfs.sourceforge.net. 20 20 21 If you want to compile this as a mod 21 If you want to compile this as a module ( = code which can be 22 inserted in and removed from the run 22 inserted in and removed from the running kernel whenever you want), 23 say M here. The module will be call 23 say M here. The module will be called squashfs. Note that the root 24 file system (the one containing the 24 file system (the one containing the directory /) cannot be compiled 25 as a module. 25 as a module. 26 26 27 If unsure, say N. 27 If unsure, say N. 28 28 29 choice 29 choice 30 prompt "File decompression options" 30 prompt "File decompression options" 31 depends on SQUASHFS 31 depends on SQUASHFS 32 help 32 help 33 Squashfs now supports two options fo 33 Squashfs now supports two options for decompressing file 34 data. Traditionally Squashfs has de 34 data. Traditionally Squashfs has decompressed into an 35 intermediate buffer and then memcopi 35 intermediate buffer and then memcopied it into the page cache. 36 Squashfs now supports the ability to 36 Squashfs now supports the ability to decompress directly into 37 the page cache. 37 the page cache. 38 38 39 If unsure, select "Decompress file d 39 If unsure, select "Decompress file data into an intermediate buffer" 40 40 41 config SQUASHFS_FILE_CACHE 41 config SQUASHFS_FILE_CACHE 42 bool "Decompress file data into an int 42 bool "Decompress file data into an intermediate buffer" 43 help 43 help 44 Decompress file data into an interme 44 Decompress file data into an intermediate buffer and then 45 memcopy it into the page cache. 45 memcopy it into the page cache. 46 46 47 config SQUASHFS_FILE_DIRECT 47 config SQUASHFS_FILE_DIRECT 48 bool "Decompress files directly into t 48 bool "Decompress files directly into the page cache" 49 help 49 help 50 Directly decompress file data into t 50 Directly decompress file data into the page cache. 51 Doing so can significantly improve p 51 Doing so can significantly improve performance because 52 it eliminates a memcpy and it also r 52 it eliminates a memcpy and it also removes the lock contention 53 on the single buffer. 53 on the single buffer. 54 54 55 endchoice 55 endchoice 56 56 57 config SQUASHFS_DECOMP_SINGLE 57 config SQUASHFS_DECOMP_SINGLE 58 depends on SQUASHFS 58 depends on SQUASHFS 59 def_bool n 59 def_bool n 60 60 61 config SQUASHFS_DECOMP_MULTI 61 config SQUASHFS_DECOMP_MULTI 62 depends on SQUASHFS 62 depends on SQUASHFS 63 def_bool n 63 def_bool n 64 64 65 config SQUASHFS_DECOMP_MULTI_PERCPU 65 config SQUASHFS_DECOMP_MULTI_PERCPU 66 depends on SQUASHFS 66 depends on SQUASHFS 67 def_bool n 67 def_bool n 68 68 69 config SQUASHFS_CHOICE_DECOMP_BY_MOUNT 69 config SQUASHFS_CHOICE_DECOMP_BY_MOUNT 70 bool "Select the parallel decompressio 70 bool "Select the parallel decompression mode during mount" 71 depends on SQUASHFS 71 depends on SQUASHFS 72 default n 72 default n 73 select SQUASHFS_DECOMP_SINGLE 73 select SQUASHFS_DECOMP_SINGLE 74 select SQUASHFS_DECOMP_MULTI 74 select SQUASHFS_DECOMP_MULTI 75 select SQUASHFS_DECOMP_MULTI_PERCPU 75 select SQUASHFS_DECOMP_MULTI_PERCPU 76 select SQUASHFS_MOUNT_DECOMP_THREADS 76 select SQUASHFS_MOUNT_DECOMP_THREADS 77 help 77 help 78 Compile all parallel decompression m 78 Compile all parallel decompression modes and specify the 79 decompression mode by setting "threa 79 decompression mode by setting "threads=" during mount. 80 default Decompressor parallelisation 80 default Decompressor parallelisation is SQUASHFS_DECOMP_SINGLE 81 81 82 choice 82 choice 83 prompt "Select decompression parallel 83 prompt "Select decompression parallel mode at compile time" 84 depends on SQUASHFS 84 depends on SQUASHFS 85 depends on !SQUASHFS_CHOICE_DECOMP_BY_ 85 depends on !SQUASHFS_CHOICE_DECOMP_BY_MOUNT 86 help 86 help 87 Squashfs now supports three parallel 87 Squashfs now supports three parallelisation options for 88 decompression. Each one exhibits va 88 decompression. Each one exhibits various trade-offs between 89 decompression performance and CPU an 89 decompression performance and CPU and memory usage. 90 90 91 If in doubt, select "Single threaded 91 If in doubt, select "Single threaded compression" 92 92 93 config SQUASHFS_COMPILE_DECOMP_SINGLE 93 config SQUASHFS_COMPILE_DECOMP_SINGLE 94 bool "Single threaded compression" 94 bool "Single threaded compression" 95 select SQUASHFS_DECOMP_SINGLE 95 select SQUASHFS_DECOMP_SINGLE 96 help 96 help 97 Traditionally Squashfs has used sing 97 Traditionally Squashfs has used single-threaded decompression. 98 Only one block (data or metadata) ca 98 Only one block (data or metadata) can be decompressed at any 99 one time. This limits CPU and memor 99 one time. This limits CPU and memory usage to a minimum. 100 100 101 config SQUASHFS_COMPILE_DECOMP_MULTI 101 config SQUASHFS_COMPILE_DECOMP_MULTI 102 bool "Use multiple decompressors for p 102 bool "Use multiple decompressors for parallel I/O" 103 select SQUASHFS_DECOMP_MULTI 103 select SQUASHFS_DECOMP_MULTI 104 help 104 help 105 By default Squashfs uses a single de 105 By default Squashfs uses a single decompressor but it gives 106 poor performance on parallel I/O wor 106 poor performance on parallel I/O workloads when using multiple CPU 107 machines due to waiting on decompres 107 machines due to waiting on decompressor availability. 108 108 109 If you have a parallel I/O workload 109 If you have a parallel I/O workload and your system has enough memory, 110 using this option may improve overal 110 using this option may improve overall I/O performance. 111 111 112 This decompressor implementation use 112 This decompressor implementation uses up to two parallel 113 decompressors per core. It dynamica 113 decompressors per core. It dynamically allocates decompressors 114 on a demand basis. 114 on a demand basis. 115 115 116 config SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU 116 config SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU 117 bool "Use percpu multiple decompressor 117 bool "Use percpu multiple decompressors for parallel I/O" 118 select SQUASHFS_DECOMP_MULTI_PERCPU 118 select SQUASHFS_DECOMP_MULTI_PERCPU 119 help 119 help 120 By default Squashfs uses a single de 120 By default Squashfs uses a single decompressor but it gives 121 poor performance on parallel I/O wor 121 poor performance on parallel I/O workloads when using multiple CPU 122 machines due to waiting on decompres 122 machines due to waiting on decompressor availability. 123 123 124 This decompressor implementation use 124 This decompressor implementation uses a maximum of one 125 decompressor per core. It uses perc 125 decompressor per core. It uses percpu variables to ensure 126 decompression is load-balanced acros 126 decompression is load-balanced across the cores. 127 endchoice 127 endchoice 128 128 129 config SQUASHFS_MOUNT_DECOMP_THREADS 129 config SQUASHFS_MOUNT_DECOMP_THREADS 130 bool "Add the mount parameter 'threads 130 bool "Add the mount parameter 'threads=' for squashfs" 131 depends on SQUASHFS 131 depends on SQUASHFS 132 depends on SQUASHFS_DECOMP_MULTI 132 depends on SQUASHFS_DECOMP_MULTI 133 default n 133 default n 134 help 134 help 135 Use threads= to set the decompressio 135 Use threads= to set the decompression parallel mode and the number of threads. 136 If SQUASHFS_CHOICE_DECOMP_BY_MOUNT=y 136 If SQUASHFS_CHOICE_DECOMP_BY_MOUNT=y 137 threads=<single|multi|percpu|1|2 137 threads=<single|multi|percpu|1|2|3|...> 138 else 138 else 139 threads=<2|3|...> 139 threads=<2|3|...> 140 The upper limit is num_online_cpus() 140 The upper limit is num_online_cpus() * 2. 141 141 142 config SQUASHFS_XATTR 142 config SQUASHFS_XATTR 143 bool "Squashfs XATTR support" 143 bool "Squashfs XATTR support" 144 depends on SQUASHFS 144 depends on SQUASHFS 145 help 145 help 146 Saying Y here includes support for e 146 Saying Y here includes support for extended attributes (xattrs). 147 Xattrs are name:value pairs associat 147 Xattrs are name:value pairs associated with inodes by 148 the kernel or by users (see the attr 148 the kernel or by users (see the attr(5) manual page). 149 149 150 If unsure, say N. 150 If unsure, say N. 151 151 152 config SQUASHFS_ZLIB 152 config SQUASHFS_ZLIB 153 bool "Include support for ZLIB compres 153 bool "Include support for ZLIB compressed file systems" 154 depends on SQUASHFS 154 depends on SQUASHFS 155 select ZLIB_INFLATE 155 select ZLIB_INFLATE 156 default y 156 default y 157 help 157 help 158 ZLIB compression is the standard com 158 ZLIB compression is the standard compression used by Squashfs 159 file systems. It offers a good trad 159 file systems. It offers a good trade-off between compression 160 achieved and the amount of CPU time 160 achieved and the amount of CPU time and memory necessary to 161 compress and decompress. 161 compress and decompress. 162 162 163 If unsure, say Y. 163 If unsure, say Y. 164 164 165 config SQUASHFS_LZ4 165 config SQUASHFS_LZ4 166 bool "Include support for LZ4 compress 166 bool "Include support for LZ4 compressed file systems" 167 depends on SQUASHFS 167 depends on SQUASHFS 168 select LZ4_DECOMPRESS 168 select LZ4_DECOMPRESS 169 help 169 help 170 Saying Y here includes support for r 170 Saying Y here includes support for reading Squashfs file systems 171 compressed with LZ4 compression. LZ 171 compressed with LZ4 compression. LZ4 compression is mainly 172 aimed at embedded systems with slowe 172 aimed at embedded systems with slower CPUs where the overheads 173 of zlib are too high. 173 of zlib are too high. 174 174 175 LZ4 is not the standard compression 175 LZ4 is not the standard compression used in Squashfs and so most 176 file systems will be readable withou 176 file systems will be readable without selecting this option. 177 177 178 If unsure, say N. 178 If unsure, say N. 179 179 180 config SQUASHFS_LZO 180 config SQUASHFS_LZO 181 bool "Include support for LZO compress 181 bool "Include support for LZO compressed file systems" 182 depends on SQUASHFS 182 depends on SQUASHFS 183 select LZO_DECOMPRESS 183 select LZO_DECOMPRESS 184 help 184 help 185 Saying Y here includes support for r 185 Saying Y here includes support for reading Squashfs file systems 186 compressed with LZO compression. LZ 186 compressed with LZO compression. LZO compression is mainly 187 aimed at embedded systems with slowe 187 aimed at embedded systems with slower CPUs where the overheads 188 of zlib are too high. 188 of zlib are too high. 189 189 190 LZO is not the standard compression 190 LZO is not the standard compression used in Squashfs and so most 191 file systems will be readable withou 191 file systems will be readable without selecting this option. 192 192 193 If unsure, say N. 193 If unsure, say N. 194 194 195 config SQUASHFS_XZ 195 config SQUASHFS_XZ 196 bool "Include support for XZ compresse 196 bool "Include support for XZ compressed file systems" 197 depends on SQUASHFS 197 depends on SQUASHFS 198 select XZ_DEC 198 select XZ_DEC 199 help 199 help 200 Saying Y here includes support for r 200 Saying Y here includes support for reading Squashfs file systems 201 compressed with XZ compression. XZ 201 compressed with XZ compression. XZ gives better compression than 202 the default zlib compression, at the 202 the default zlib compression, at the expense of greater CPU and 203 memory overhead. 203 memory overhead. 204 204 205 XZ is not the standard compression u 205 XZ is not the standard compression used in Squashfs and so most 206 file systems will be readable withou 206 file systems will be readable without selecting this option. 207 207 208 If unsure, say N. 208 If unsure, say N. 209 209 210 config SQUASHFS_ZSTD 210 config SQUASHFS_ZSTD 211 bool "Include support for ZSTD compres 211 bool "Include support for ZSTD compressed file systems" 212 depends on SQUASHFS 212 depends on SQUASHFS 213 select ZSTD_DECOMPRESS 213 select ZSTD_DECOMPRESS 214 help 214 help 215 Saying Y here includes support for r 215 Saying Y here includes support for reading Squashfs file systems 216 compressed with ZSTD compression. Z 216 compressed with ZSTD compression. ZSTD gives better compression than 217 the default ZLIB compression, while 217 the default ZLIB compression, while using less CPU. 218 218 219 ZSTD is not the standard compression 219 ZSTD is not the standard compression used in Squashfs and so most 220 file systems will be readable withou 220 file systems will be readable without selecting this option. 221 221 222 If unsure, say N. 222 If unsure, say N. 223 223 224 config SQUASHFS_4K_DEVBLK_SIZE 224 config SQUASHFS_4K_DEVBLK_SIZE 225 bool "Use 4K device block size?" 225 bool "Use 4K device block size?" 226 depends on SQUASHFS 226 depends on SQUASHFS 227 help 227 help 228 By default Squashfs sets the dev blo 228 By default Squashfs sets the dev block size (sb_min_blocksize) 229 to 1K or the smallest block size sup 229 to 1K or the smallest block size supported by the block device 230 (if larger). This, because blocks a 230 (if larger). This, because blocks are packed together and 231 unaligned in Squashfs, should reduce 231 unaligned in Squashfs, should reduce latency. 232 232 233 This, however, gives poor performanc 233 This, however, gives poor performance on MTD NAND devices where 234 the optimal I/O size is 4K (even tho 234 the optimal I/O size is 4K (even though the devices can support 235 smaller block sizes). 235 smaller block sizes). 236 236 237 Using a 4K device block size may als 237 Using a 4K device block size may also improve overall I/O 238 performance for some file access pat 238 performance for some file access patterns (e.g. sequential 239 accesses of files in filesystem orde 239 accesses of files in filesystem order) on all media. 240 240 241 Setting this option will force Squas 241 Setting this option will force Squashfs to use a 4K device block 242 size by default. 242 size by default. 243 243 244 If unsure, say N. 244 If unsure, say N. 245 245 246 config SQUASHFS_EMBEDDED 246 config SQUASHFS_EMBEDDED 247 bool "Additional option for memory-con 247 bool "Additional option for memory-constrained systems" 248 depends on SQUASHFS 248 depends on SQUASHFS 249 help 249 help 250 Saying Y here allows you to specify 250 Saying Y here allows you to specify cache size. 251 251 252 If unsure, say N. 252 If unsure, say N. 253 253 254 config SQUASHFS_FRAGMENT_CACHE_SIZE 254 config SQUASHFS_FRAGMENT_CACHE_SIZE 255 int "Number of fragments cached" if SQ 255 int "Number of fragments cached" if SQUASHFS_EMBEDDED 256 depends on SQUASHFS 256 depends on SQUASHFS 257 default "3" 257 default "3" 258 help 258 help 259 By default SquashFS caches the last 259 By default SquashFS caches the last 3 fragments read from 260 the filesystem. Increasing this amo 260 the filesystem. Increasing this amount may mean SquashFS 261 has to re-read fragments less often 261 has to re-read fragments less often from disk, at the expense 262 of extra system memory. Decreasing 262 of extra system memory. Decreasing this amount will mean 263 SquashFS uses less memory at the exp 263 SquashFS uses less memory at the expense of extra reads from disk. 264 264 265 Note there must be at least one cach 265 Note there must be at least one cached fragment. Anything 266 much more than three will probably n 266 much more than three will probably not make much difference.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.