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