hc
2024-11-01 7e970c18f85f99acc678d90128b6e01dce1bf273
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
# SPDX-License-Identifier: GPL-2.0-only
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.