xref: /aosp_15_r20/external/squashfs-tools/RELEASE-READMEs/README-3.1 (revision 79398b2563bcbbbab54656397863972d8fa68df1)
1*79398b25SAndroid Build Coastguard Worker	SQUASHFS 3.1 - A squashed read-only filesystem for Linux
2*79398b25SAndroid Build Coastguard Worker
3*79398b25SAndroid Build Coastguard Worker	Copyright 2002-2006 Phillip Lougher <[email protected]>
4*79398b25SAndroid Build Coastguard Worker
5*79398b25SAndroid Build Coastguard Worker	Released under the GPL licence (version 2 or later).
6*79398b25SAndroid Build Coastguard Worker
7*79398b25SAndroid Build Coastguard WorkerWelcome to Squashfs version 3.1-r2.  Squashfs 3.1 has major improvements to
8*79398b25SAndroid Build Coastguard Workerthe Squashfs tools (Mksquashfs and Unsquashfs), some major bug fixes, new
9*79398b25SAndroid Build Coastguard Workerkernel patches, and various other smaller improvements and bug fixes.
10*79398b25SAndroid Build Coastguard WorkerPlease see the CHANGES file for a detailed list.
11*79398b25SAndroid Build Coastguard Worker
12*79398b25SAndroid Build Coastguard Worker1. MKSQUASHFS
13*79398b25SAndroid Build Coastguard Worker-------------
14*79398b25SAndroid Build Coastguard Worker
15*79398b25SAndroid Build Coastguard WorkerMksquashfs has been rewritten and it is now multi-threaded.  It offers
16*79398b25SAndroid Build Coastguard Workerthe following improvements:
17*79398b25SAndroid Build Coastguard Worker
18*79398b25SAndroid Build Coastguard Worker1. Parallel compression.  By default as many compression and fragment
19*79398b25SAndroid Build Coastguard Workercompression threads are created as there are available processors.
20*79398b25SAndroid Build Coastguard WorkerThis significantly speeds up performance on SMP systems.
21*79398b25SAndroid Build Coastguard Worker
22*79398b25SAndroid Build Coastguard Worker2. File input and filesystem output is peformed in parallel on separate
23*79398b25SAndroid Build Coastguard Workerthreads to maximise I/O performance.  Even on single processor systems
24*79398b25SAndroid Build Coastguard Workerthis speeds up performance by at least 10%.
25*79398b25SAndroid Build Coastguard Worker
26*79398b25SAndroid Build Coastguard Worker3. Appending has been significantly improved, and files within the
27*79398b25SAndroid Build Coastguard Workerfilesystem being appended to are no longer scanned and checksummed.  This
28*79398b25SAndroid Build Coastguard Workersignificantly improves append time for large filesystems.
29*79398b25SAndroid Build Coastguard Worker
30*79398b25SAndroid Build Coastguard Worker4. File duplicate checking has been optimised, and split into two separate
31*79398b25SAndroid Build Coastguard Workerphases.  Only files which are considered possible duplicates after the
32*79398b25SAndroid Build Coastguard Workerfirst phase are checksummed and cached in memory.
33*79398b25SAndroid Build Coastguard Worker
34*79398b25SAndroid Build Coastguard Worker5. The use of swap memory was found to significantly impact performance. The
35*79398b25SAndroid Build Coastguard Workeramount of memory used to cache the file is now a command line option, by default
36*79398b25SAndroid Build Coastguard Workerthis is 512 Mbytes.
37*79398b25SAndroid Build Coastguard Worker
38*79398b25SAndroid Build Coastguard Worker1.1 NEW COMMAND LINE OPTIONS
39*79398b25SAndroid Build Coastguard Worker----------------------------
40*79398b25SAndroid Build Coastguard Worker
41*79398b25SAndroid Build Coastguard WorkerThe new Mksquashfs program has a couple of extra command line options
42*79398b25SAndroid Build Coastguard Workerwhich can be used to control the new features:
43*79398b25SAndroid Build Coastguard Worker
44*79398b25SAndroid Build Coastguard Worker-processors <processors>
45*79398b25SAndroid Build Coastguard Worker
46*79398b25SAndroid Build Coastguard WorkerThis specifies the number of processors used by Mksquashfs.
47*79398b25SAndroid Build Coastguard WorkerBy default this is the number of available processors.
48*79398b25SAndroid Build Coastguard Worker
49*79398b25SAndroid Build Coastguard Worker-read_queue <size in Mbytes>
50*79398b25SAndroid Build Coastguard Worker
51*79398b25SAndroid Build Coastguard WorkerThis specifies the size of the file input queue used by the reader thread.
52*79398b25SAndroid Build Coastguard WorkerThis defaults to 64 Mbytes.
53*79398b25SAndroid Build Coastguard Worker
54*79398b25SAndroid Build Coastguard Worker-write_queue <size in Mbytes>
55*79398b25SAndroid Build Coastguard Worker
56*79398b25SAndroid Build Coastguard WorkerThis specifies the size of the filesystem output queue used by the
57*79398b25SAndroid Build Coastguard Workerwriter thread.  It also specifies the maximum cache used in file
58*79398b25SAndroid Build Coastguard Workerduplicate detection (the output queue is shared between these tasks).
59*79398b25SAndroid Build Coastguard WorkerThis defaults to 512 Mbytes.
60*79398b25SAndroid Build Coastguard Worker
61*79398b25SAndroid Build Coastguard Worker1.2 PERFORMANCE RESULTS
62*79398b25SAndroid Build Coastguard Worker-----------------------
63*79398b25SAndroid Build Coastguard Worker
64*79398b25SAndroid Build Coastguard WorkerThe following results give an indication of the speed improvements.  Two
65*79398b25SAndroid Build Coastguard Workerexample filesystems were tested, a liveCD filesystem (about 1.8 Gbytes
66*79398b25SAndroid Build Coastguard Workeruncompressed), and my home directory consisting largely of text files
67*79398b25SAndroid Build Coastguard Worker(about 1.3 Gbytes uncompressed).  Tests were run on a single core
68*79398b25SAndroid Build Coastguard Workerand a dual core system.
69*79398b25SAndroid Build Coastguard Worker
70*79398b25SAndroid Build Coastguard WorkerDual Core (AMDx2 3800+) system:
71*79398b25SAndroid Build Coastguard WorkerSource directories on ext3.
72*79398b25SAndroid Build Coastguard Worker
73*79398b25SAndroid Build Coastguard WorkerLiveCD, old mksquashfs:
74*79398b25SAndroid Build Coastguard Worker
75*79398b25SAndroid Build Coastguard Workerreal    11m48.401s
76*79398b25SAndroid Build Coastguard Workeruser    9m27.056s
77*79398b25SAndroid Build Coastguard Workersys     0m15.281s
78*79398b25SAndroid Build Coastguard Worker
79*79398b25SAndroid Build Coastguard WorkerLiveCD, new par_mksquashfs:
80*79398b25SAndroid Build Coastguard Worker
81*79398b25SAndroid Build Coastguard Workerreal    4m8.736s
82*79398b25SAndroid Build Coastguard Workeruser    7m11.771s
83*79398b25SAndroid Build Coastguard Workersys     0m27.749s
84*79398b25SAndroid Build Coastguard Worker
85*79398b25SAndroid Build Coastguard Worker"Home", old mksquashfs:
86*79398b25SAndroid Build Coastguard Worker
87*79398b25SAndroid Build Coastguard Workerreal    4m34.360s
88*79398b25SAndroid Build Coastguard Workeruser    3m54.007s
89*79398b25SAndroid Build Coastguard Workersys     0m32.155s
90*79398b25SAndroid Build Coastguard Worker
91*79398b25SAndroid Build Coastguard Worker"Home", new par_mksquashfs:
92*79398b25SAndroid Build Coastguard Worker
93*79398b25SAndroid Build Coastguard Workerreal    1m27.381s
94*79398b25SAndroid Build Coastguard Workeruser    2m7.304s
95*79398b25SAndroid Build Coastguard Workersys     0m17.234s
96*79398b25SAndroid Build Coastguard Worker
97*79398b25SAndroid Build Coastguard WorkerSingle Core PowerBook (PowerPC G4 1.5 GHz Ubuntu Linux)
98*79398b25SAndroid Build Coastguard WorkerSource directories on ext3.
99*79398b25SAndroid Build Coastguard Worker
100*79398b25SAndroid Build Coastguard WorkerLiveCD, old mksquashs:
101*79398b25SAndroid Build Coastguard Worker
102*79398b25SAndroid Build Coastguard Workerreal    11m38.472s
103*79398b25SAndroid Build Coastguard Workeruser    9m6.137s
104*79398b25SAndroid Build Coastguard Workersys     0m23.799s
105*79398b25SAndroid Build Coastguard Worker
106*79398b25SAndroid Build Coastguard WorkerLiveCD,  par_mksquashfs:
107*79398b25SAndroid Build Coastguard Worker
108*79398b25SAndroid Build Coastguard Workerreal    10m5.572s
109*79398b25SAndroid Build Coastguard Workeruser    8m59.921s
110*79398b25SAndroid Build Coastguard Workersys     0m16.145s
111*79398b25SAndroid Build Coastguard Worker
112*79398b25SAndroid Build Coastguard Worker"Home", old mksquashfs:
113*79398b25SAndroid Build Coastguard Worker
114*79398b25SAndroid Build Coastguard Workerreal    3m42.298s
115*79398b25SAndroid Build Coastguard Workeruser    2m49.478s
116*79398b25SAndroid Build Coastguard Workersys     0m13.675s
117*79398b25SAndroid Build Coastguard Worker
118*79398b25SAndroid Build Coastguard Worker"Home", new par_mksquashfs:
119*79398b25SAndroid Build Coastguard Worker
120*79398b25SAndroid Build Coastguard Workerreal    3m9.178s
121*79398b25SAndroid Build Coastguard Workeruser    2m50.699s
122*79398b25SAndroid Build Coastguard Workersys     0m9.069s
123*79398b25SAndroid Build Coastguard Worker
124*79398b25SAndroid Build Coastguard WorkerI'll be interested in any performance results obtained, especially from SMP
125*79398b25SAndroid Build Coastguard Workermachines larger than my dual-core AMD box, as this will give an indication of
126*79398b25SAndroid Build Coastguard Workerthe scalability of the code.  Obviously, I'm also interested in any problems,
127*79398b25SAndroid Build Coastguard Workerdeadlocks, low performance etc.
128*79398b25SAndroid Build Coastguard Worker
129*79398b25SAndroid Build Coastguard Worker2. UNSQUASHFS
130*79398b25SAndroid Build Coastguard Worker-------------
131*79398b25SAndroid Build Coastguard Worker
132*79398b25SAndroid Build Coastguard WorkerUnsquashfs now allows you to specify the filename or directory that is to be
133*79398b25SAndroid Build Coastguard Workerextracted from the Squashfs filesystem, rather than always extracting the
134*79398b25SAndroid Build Coastguard Workerentire filesystem.  It also has a new "-force" option, and all options can be
135*79398b25SAndroid Build Coastguard Workerspecified in a short form (-i rather than -info).
136*79398b25SAndroid Build Coastguard Worker
137*79398b25SAndroid Build Coastguard WorkerThe Unsquashfs usage info is now:
138*79398b25SAndroid Build Coastguard Worker
139*79398b25SAndroid Build Coastguard WorkerSYNTAX: ./unsquashfs [options] filesystem [directory or file to extract]
140*79398b25SAndroid Build Coastguard Worker	-v[ersion]		print version, licence and copyright information
141*79398b25SAndroid Build Coastguard Worker	-i[nfo]			print files as they are unsquashed
142*79398b25SAndroid Build Coastguard Worker	-l[s]			list filesystem only
143*79398b25SAndroid Build Coastguard Worker	-d[est] <pathname>	unsquash to <pathname>, default "squashfs-root"
144*79398b25SAndroid Build Coastguard Worker	-f[orce]		if file already exists then overwrite
145*79398b25SAndroid Build Coastguard Worker
146*79398b25SAndroid Build Coastguard WorkerTo extract a subset of the filesystem, the filename or directory
147*79398b25SAndroid Build Coastguard Workertree that is to be extracted can now be specified on the command line.  The
148*79398b25SAndroid Build Coastguard Workerfile/directory should be specified using the full path to the file/directory
149*79398b25SAndroid Build Coastguard Workeras it appears within the Squashfs filesystem.  The file/directory will also be
150*79398b25SAndroid Build Coastguard Workerextracted to that position within the specified destination directory.
151*79398b25SAndroid Build Coastguard Worker
152*79398b25SAndroid Build Coastguard WorkerThe new "-force" option forces Unsquashfs to output to the destination
153*79398b25SAndroid Build Coastguard Workerdirectory even if files or directories already exist.  This allows you
154*79398b25SAndroid Build Coastguard Workerto update an existing directory tree, or to Unsquashfs to a partially
155*79398b25SAndroid Build Coastguard Workerfilled directory.  Without the "-force" option, Unsquashfs will
156*79398b25SAndroid Build Coastguard Workerrefuse to overwrite any existing files, or to create any directories if they
157*79398b25SAndroid Build Coastguard Workeralready exist.  This is done to protect data in case of mistakes, and
158*79398b25SAndroid Build Coastguard Workerso the "-force" option should be used with caution.
159