• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1config SQUASHFS
2	tristate "SquashFS 4.0 - Squashed file system support"
3	depends on BLOCK
4	help
5	  Saying Y here includes support for SquashFS 4.0 (a Compressed
6	  Read-Only File System).  Squashfs is a highly compressed read-only
7	  filesystem for Linux.  It uses zlib, lzo or xz compression to
8	  compress both files, inodes and directories.  Inodes in the system
9	  are very small and all blocks are packed to minimise data overhead.
10	  Block sizes greater than 4K are supported up to a maximum of 1 Mbytes
11	  (default block size 128K).  SquashFS 4.0 supports 64 bit filesystems
12	  and files (larger than 4GB), full uid/gid information, hard links and
13	  timestamps.
14
15	  Squashfs is intended for general read-only filesystem use, for
16	  archival use (i.e. in cases where a .tar.gz file may be used), and in
17	  embedded systems where low overhead is needed.  Further information
18	  and tools are available from http://squashfs.sourceforge.net.
19
20	  If you want to compile this as a module ( = code which can be
21	  inserted in and removed from the running kernel whenever you want),
22	  say M here.  The module will be called squashfs.  Note that the root
23	  file system (the one containing the directory /) cannot be compiled
24	  as a module.
25
26	  If unsure, say N.
27
28choice
29	prompt "Decompressor parallelisation options"
30	depends on SQUASHFS
31	help
32	  Squashfs now supports three parallelisation options for
33	  decompression.  Each one exhibits various trade-offs between
34	  decompression performance and CPU and memory usage.
35
36	  If in doubt, select "Single threaded compression"
37
38config SQUASHFS_DECOMP_SINGLE
39	bool "Single threaded compression"
40	help
41	  Traditionally Squashfs has used single-threaded decompression.
42	  Only one block (data or metadata) can be decompressed at any
43	  one time.  This limits CPU and memory usage to a minimum.
44
45config SQUASHFS_DECOMP_MULTI
46	bool "Use multiple decompressors for parallel I/O"
47	help
48	  By default Squashfs uses a single decompressor but it gives
49	  poor performance on parallel I/O workloads when using multiple CPU
50	  machines due to waiting on decompressor availability.
51
52	  If you have a parallel I/O workload and your system has enough memory,
53	  using this option may improve overall I/O performance.
54
55	  This decompressor implementation uses up to two parallel
56	  decompressors per core.  It dynamically allocates decompressors
57	  on a demand basis.
58
59config SQUASHFS_DECOMP_MULTI_PERCPU
60	bool "Use percpu multiple decompressors for parallel I/O"
61	help
62	  By default Squashfs uses a single decompressor but it gives
63	  poor performance on parallel I/O workloads when using multiple CPU
64	  machines due to waiting on decompressor availability.
65
66	  This decompressor implementation uses a maximum of one
67	  decompressor per core.  It uses percpu variables to ensure
68	  decompression is load-balanced across the cores.
69
70endchoice
71
72config SQUASHFS_XATTR
73	bool "Squashfs XATTR support"
74	depends on SQUASHFS
75	help
76	  Saying Y here includes support for extended attributes (xattrs).
77	  Xattrs are name:value pairs associated with inodes by
78	  the kernel or by users (see the attr(5) manual page).
79
80	  If unsure, say N.
81
82config SQUASHFS_ZLIB
83	bool "Include support for ZLIB compressed file systems"
84	depends on SQUASHFS
85	select ZLIB_INFLATE
86	default y
87	help
88	  ZLIB compression is the standard compression used by Squashfs
89	  file systems.  It offers a good trade-off between compression
90	  achieved and the amount of CPU time and memory necessary to
91	  compress and decompress.
92
93	  If unsure, say Y.
94
95config SQUASHFS_LZ4
96	bool "Include support for LZ4 compressed file systems"
97	depends on SQUASHFS
98	select LZ4_DECOMPRESS
99	help
100	  Saying Y here includes support for reading Squashfs file systems
101	  compressed with LZ4 compression.  LZ4 compression is mainly
102	  aimed at embedded systems with slower CPUs where the overheads
103	  of zlib are too high.
104
105	  LZ4 is not the standard compression used in Squashfs and so most
106	  file systems will be readable without selecting this option.
107
108	  If unsure, say N.
109
110config SQUASHFS_LZO
111	bool "Include support for LZO compressed file systems"
112	depends on SQUASHFS
113	select LZO_DECOMPRESS
114	help
115	  Saying Y here includes support for reading Squashfs file systems
116	  compressed with LZO compression.  LZO compression is mainly
117	  aimed at embedded systems with slower CPUs where the overheads
118	  of zlib are too high.
119
120	  LZO is not the standard compression used in Squashfs and so most
121	  file systems will be readable without selecting this option.
122
123	  If unsure, say N.
124
125config SQUASHFS_XZ
126	bool "Include support for XZ compressed file systems"
127	depends on SQUASHFS
128	select XZ_DEC
129	help
130	  Saying Y here includes support for reading Squashfs file systems
131	  compressed with XZ compression.  XZ gives better compression than
132	  the default zlib compression, at the expense of greater CPU and
133	  memory overhead.
134
135	  XZ is not the standard compression used in Squashfs and so most
136	  file systems will be readable without selecting this option.
137
138	  If unsure, say N.
139
140config SQUASHFS_4K_DEVBLK_SIZE
141	bool "Use 4K device block size?"
142	depends on SQUASHFS
143	help
144	  By default Squashfs sets the dev block size (sb_min_blocksize)
145	  to 1K or the smallest block size supported by the block device
146	  (if larger).  This, because blocks are packed together and
147	  unaligned in Squashfs, should reduce latency.
148
149	  This, however, gives poor performance on MTD NAND devices where
150	  the optimal I/O size is 4K (even though the devices can support
151	  smaller block sizes).
152
153	  Using a 4K device block size may also improve overall I/O
154	  performance for some file access patterns (e.g. sequential
155	  accesses of files in filesystem order) on all media.
156
157	  Setting this option will force Squashfs to use a 4K device block
158	  size by default.
159
160	  If unsure, say N.
161
162config SQUASHFS_EMBEDDED
163	bool "Additional option for memory-constrained systems"
164	depends on SQUASHFS
165	help
166	  Saying Y here allows you to specify cache size.
167
168	  If unsure, say N.
169
170config SQUASHFS_FRAGMENT_CACHE_SIZE
171	int "Number of fragments cached" if SQUASHFS_EMBEDDED
172	depends on SQUASHFS
173	default "3"
174	help
175	  By default SquashFS caches the last 3 fragments read from
176	  the filesystem.  Increasing this amount may mean SquashFS
177	  has to re-read fragments less often from disk, at the expense
178	  of extra system memory.  Decreasing this amount will mean
179	  SquashFS uses less memory at the expense of extra reads from disk.
180
181	  Note there must be at least one cached fragment.  Anything
182	  much more than three will probably not make much difference.
183