| config SQUASHFS | |
| tristate "SquashFS 4.0 - Squashed file system support" | |
| depends on BLOCK | |
| help | |
| Saying Y here includes support for SquashFS 4.0 (a Compressed | |
| Read-Only File System). Squashfs is a highly compressed read-only | |
| filesystem for Linux. It uses zlib, lzo or xz compression to | |
| compress both files, inodes and directories. Inodes in the system | |
| are very small and all blocks are packed to minimise data overhead. | |
| Block sizes greater than 4K are supported up to a maximum of 1 Mbytes | |
| (default block size 128K). SquashFS 4.0 supports 64 bit filesystems | |
| and files (larger than 4GB), full uid/gid information, hard links and | |
| timestamps. | |
| Squashfs is intended for general read-only filesystem use, for | |
| archival use (i.e. in cases where a .tar.gz file may be used), and in | |
| embedded systems where low overhead is needed. Further information | |
| and tools are available from http://squashfs.sourceforge.net. | |
| If you want to compile this as a module ( = code which can be | |
| inserted in and removed from the running kernel whenever you want), | |
| say M here. The module will be called squashfs. Note that the root | |
| file system (the one containing the directory /) cannot be compiled | |
| as a module. | |
| If unsure, say N. | |
| choice | |
| prompt "File decompression options" | |
| depends on SQUASHFS | |
| help | |
| Squashfs now supports two options for decompressing file | |
| data. Traditionally Squashfs has decompressed into an | |
| intermediate buffer and then memcopied it into the page cache. | |
| Squashfs now supports the ability to decompress directly into | |
| the page cache. | |
| If unsure, select "Decompress file data into an intermediate buffer" | |
| config SQUASHFS_FILE_CACHE | |
| bool "Decompress file data into an intermediate buffer" | |
| help | |
| Decompress file data into an intermediate buffer and then | |
| memcopy it into the page cache. | |
| config SQUASHFS_FILE_DIRECT | |
| bool "Decompress files directly into the page cache" | |
| help | |
| Directly decompress file data into the page cache. | |
| Doing so can significantly improve performance because | |
| it eliminates a memcpy and it also removes the lock contention | |
| on the single buffer. | |
| endchoice | |
| choice | |
| prompt "Decompressor parallelisation options" | |
| depends on SQUASHFS | |
| help | |
| Squashfs now supports three parallelisation options for | |
| decompression. Each one exhibits various trade-offs between | |
| decompression performance and CPU and memory usage. | |
| If in doubt, select "Single threaded compression" | |
| config SQUASHFS_DECOMP_SINGLE | |
| bool "Single threaded compression" | |
| help | |
| Traditionally Squashfs has used single-threaded decompression. | |
| Only one block (data or metadata) can be decompressed at any | |
| one time. This limits CPU and memory usage to a minimum. | |
| config SQUASHFS_DECOMP_MULTI | |
| bool "Use multiple decompressors for parallel I/O" | |
| help | |
| By default Squashfs uses a single decompressor but it gives | |
| poor performance on parallel I/O workloads when using multiple CPU | |
| machines due to waiting on decompressor availability. | |
| If you have a parallel I/O workload and your system has enough memory, | |
| using this option may improve overall I/O performance. | |
| This decompressor implementation uses up to two parallel | |
| decompressors per core. It dynamically allocates decompressors | |
| on a demand basis. | |
| config SQUASHFS_DECOMP_MULTI_PERCPU | |
| bool "Use percpu multiple decompressors for parallel I/O" | |
| help | |
| By default Squashfs uses a single decompressor but it gives | |
| poor performance on parallel I/O workloads when using multiple CPU | |
| machines due to waiting on decompressor availability. | |
| This decompressor implementation uses a maximum of one | |
| decompressor per core. It uses percpu variables to ensure | |
| decompression is load-balanced across the cores. | |
| endchoice | |
| config SQUASHFS_XATTR | |
| bool "Squashfs XATTR support" | |
| depends on SQUASHFS | |
| help | |
| Saying Y here includes support for extended attributes (xattrs). | |
| Xattrs are name:value pairs associated with inodes by | |
| the kernel or by users (see the attr(5) manual page). | |
| If unsure, say N. | |
| config SQUASHFS_ZLIB | |
| bool "Include support for ZLIB compressed file systems" | |
| depends on SQUASHFS | |
| select ZLIB_INFLATE | |
| default y | |
| help | |
| ZLIB compression is the standard compression used by Squashfs | |
| file systems. It offers a good trade-off between compression | |
| achieved and the amount of CPU time and memory necessary to | |
| compress and decompress. | |
| If unsure, say Y. | |
| config SQUASHFS_LZ4 | |
| bool "Include support for LZ4 compressed file systems" | |
| depends on SQUASHFS | |
| select LZ4_DECOMPRESS | |
| help | |
| Saying Y here includes support for reading Squashfs file systems | |
| compressed with LZ4 compression. LZ4 compression is mainly | |
| aimed at embedded systems with slower CPUs where the overheads | |
| of zlib are too high. | |
| LZ4 is not the standard compression used in Squashfs and so most | |
| file systems will be readable without selecting this option. | |
| If unsure, say N. | |
| config SQUASHFS_LZO | |
| bool "Include support for LZO compressed file systems" | |
| depends on SQUASHFS | |
| select LZO_DECOMPRESS | |
| help | |
| Saying Y here includes support for reading Squashfs file systems | |
| compressed with LZO compression. LZO compression is mainly | |
| aimed at embedded systems with slower CPUs where the overheads | |
| of zlib are too high. | |
| LZO is not the standard compression used in Squashfs and so most | |
| file systems will be readable without selecting this option. | |
| If unsure, say N. | |
| config SQUASHFS_XZ | |
| bool "Include support for XZ compressed file systems" | |
| depends on SQUASHFS | |
| select XZ_DEC | |
| help | |
| Saying Y here includes support for reading Squashfs file systems | |
| compressed with XZ compression. XZ gives better compression than | |
| the default zlib compression, at the expense of greater CPU and | |
| memory overhead. | |
| XZ is not the standard compression used in Squashfs and so most | |
| file systems will be readable without selecting this option. | |
| If unsure, say N. | |
| config SQUASHFS_ZSTD | |
| bool "Include support for ZSTD compressed file systems" | |
| depends on SQUASHFS | |
| select ZSTD_DECOMPRESS | |
| help | |
| Saying Y here includes support for reading Squashfs file systems | |
| compressed with ZSTD compression. ZSTD gives better compression than | |
| the default ZLIB compression, while using less CPU. | |
| ZSTD is not the standard compression used in Squashfs and so most | |
| file systems will be readable without selecting this option. | |
| If unsure, say N. | |
| config SQUASHFS_4K_DEVBLK_SIZE | |
| bool "Use 4K device block size?" | |
| depends on SQUASHFS | |
| help | |
| By default Squashfs sets the dev block size (sb_min_blocksize) | |
| to 1K or the smallest block size supported by the block device | |
| (if larger). This, because blocks are packed together and | |
| unaligned in Squashfs, should reduce latency. | |
| This, however, gives poor performance on MTD NAND devices where | |
| the optimal I/O size is 4K (even though the devices can support | |
| smaller block sizes). | |
| Using a 4K device block size may also improve overall I/O | |
| performance for some file access patterns (e.g. sequential | |
| accesses of files in filesystem order) on all media. | |
| Setting this option will force Squashfs to use a 4K device block | |
| size by default. | |
| If unsure, say N. | |
| config SQUASHFS_EMBEDDED | |
| bool "Additional option for memory-constrained systems" | |
| depends on SQUASHFS | |
| help | |
| Saying Y here allows you to specify cache size. | |
| If unsure, say N. | |
| config SQUASHFS_FRAGMENT_CACHE_SIZE | |
| int "Number of fragments cached" if SQUASHFS_EMBEDDED | |
| depends on SQUASHFS | |
| default "3" | |
| help | |
| By default SquashFS caches the last 3 fragments read from | |
| the filesystem. Increasing this amount may mean SquashFS | |
| has to re-read fragments less often from disk, at the expense | |
| of extra system memory. Decreasing this amount will mean | |
| SquashFS uses less memory at the expense of extra reads from disk. | |
| Note there must be at least one cached fragment. Anything | |
| much more than three will probably not make much difference. |