1			SQUASHFS CHANGE LOG
2
34.3	12 MAY 2014	New compressor options, new Mksquashfs/Unsquashfs
4			functionality, duplicate checking optimisations,
5			stability improvements (option/file parsing,
6			buffer/memory overflow checks, filesystem hardening
7			on corrupted filesystems), CVE fixes.
8
9	Too many changes to do the traditional custom changelog.  But, this
10	is now unnecessary, so instead list most significant 15% of commits
11	from git changelog in chronological order.
12
13	- unsquashfs: add checks for corrupted data in opendir functions
14	- unsquashfs: completely empty filesystems incorrectly generate an error
15	- unsquashfs: fix open file limit
16	- mksquashfs: Use linked list to store directory entries rather
17	- mksquashfs: Remove qsort and add a bottom up linked list merge sort
18	- mksquashfs: optimise lookup_inode2() for dirs
19	- pseudo: fix handling of modify pseudo files
20	- pseudo: fix handling of directory pseudo files
21	- xattr: Fix ERROR() so that it is synchronised with the progress bar
22	- mksquashfs/sort: Fix INFO() so that it is synced with the progress bar
23	- mksquashfs: Add -progress to force progress bar when using -info
24	- error.h: consolidate the various error macros into one header file
25	- mksquashfs: fix stack overflow in write_fragment_table()
26	- mksquashfs: move list allocation from off the stack
27	- unsquashfs: fix oversight in directory permission setting
28	- mksquashfs: dynamically allocate recovery_file
29	- mksquashfs: dynamically allocate buffer in subpathname()
30	- mksquashfs: dynamically allocate buffer in pathname()
31	- unsquashfs: fix CVE-2012-4024
32	- unsquashfs: fix CVE-2012-4025
33	- mksquashfs: fix potential stack overflow in get_component()
34	- mksquashfs: add parse_number() helper for numeric command line options
35	- mksquasfs: check return value of fstat() in reader_read_file()
36	- mksquashfs: dynamically allocate filename in old_add_exclude()
37	- unsquashfs: dynamically allocate pathname in dir_scan()
38	- unsquashfs: dynamically allocate pathname in pre_scan()
39	- sort: dynamically allocate filename in add_sort_list()
40	- mksquashfs: fix dir_scan() exit if lstat of source directory fails
41	- pseudo: fix memory leak in read_pseudo_def() if exec_file() fails
42	- pseudo: dynamically allocate path in dump_pseudo()
43	- mksquashfs: dynamically allocate path in display_path2()
44	- mksquashfs: dynamically allocate b_buffer in getbase()
45	- pseudo: fix potential stack overflow in get_component()
46	- pseudo: avoid buffer overflow in read_pseudo_def() using sscanf()
47	- pseudo: dynamically allocate filename in exec_file()
48	- pseudo: avoid buffer overflow in read_sort_file() using fscanf()
49	- sort: tighten up sort file parsing
50	- unsquashfs: fix name under-allocation in process_extract_files()
51	- unsquashfs: avoid buffer overflow in print_filename() using sprintf()
52	- Fix some limits in the file parsing routines
53	- pseudo: Rewrite pseudo file processing
54	- read_fs: fix small memory leaks in read_filesystem()
55	- mksquashfs: fix fclose leak in reader_read_file() on I/O error
56	- mksquashfs: fix frag struct leak in write_file_{process|blocks|frag}
57	- unsquashfs_xattr: fix memory leak in write_xattr()
58	- read_xattrs: fix xattr free in get_xattr() in error path
59	- unsquashfs: add -user-xattrs option to only extract user.xxx xattrs
60	- unsquashfs: add code to only print "not superuser" error message once
61	- unsquashfs: check for integer overflow in user input
62	- mksquashfs: check for integer overflow in user input
63	- mksquashfs: fix "new" variable leak in dir_scan1()
64	- read_fs: prevent buffer {over|under}flow in read_block() with
65	  corrupted filesystems
66	- read_fs: check metadata blocks are expected size in scan_inode_table()
67	- read_fs: check the root inode block is found in scan_inode_table()
68	- read_fs: Further harden scan_inode_table() against corrupted
69	  filesystems
70	- unsquashfs: prevent buffer {over|under}flow in read_block() with
71	  corrupted filesystems
72	- read_xattrs: harden xattr data reading against corrupted filesystems
73	- unsquash-[23]: harden frag table reading against corrupted filesystems
74	- unsquash-4.c: harden uid/gid & frag table reading against corruption
75	- unsquashfs: harden inode/directory table reading against corruption
76	- mksquashfs: improve out of space in output filesystem handling
77	- mksquashfs: flag lseek error in writer as probable out of space
78	- mksquashfs: flag lseek error in write_destination as probable out of
79	  space
80	- mksquashfs: print file being squashed when ^\ (SIGQUIT) typed
81	- mksquashfs: make EXIT_MKSQUASHFS() etc restore via new restore thread
82	- mksquashfs: fix recursive restore failure check
83	- info: dump queue and cache status if ^\ hit twice within one second
84	- mksquashfs: fix rare race condition in "locked fragment" queueing
85	- lz4: add experimental support for lz4 compression
86	- lz4: add support for lz4 "high compression"
87	- lzo_wrapper: new implementation with compression options
88	- gzip_wrapper: add compression options
89	- mksquashfs: redo -comp <compressor> parsing
90	- mksquashfs: display compressor options when -X option isn't recognised
91	- mksquashfs: add -Xhelp option
92	- mksquashfs/unsquashfs: fix mtime signedness
93	- Mksquashfs: optimise duplicate checking when appending
94	- Mksquashfs: introduce additional per CPU fragment process threads
95	- Mksquashfs: significantly optimise fragment duplicate checking
96	- read_fs: scan_inode_table(), fix memory leak on filesystem corruption
97	- pseudo: add_pseudo(), fix use of freed variable
98	- mksquashfs/unsquashfs: exclude/extract/pseudo files, fix handling of
99	  leaf name
100	- mksquashfs: rewrite default queue size so it's based on physical mem
101	- mksquashfs: add a new -mem <mbytes> option
102	- mksquashfs: fix limit on the number of dynamic pseudo files
103	- mksquashfs: make -mem take a normal byte value, optionally with a
104	  K, M or G
105
1064.2	28 FEB 2011	XZ compression, and compression options support
107
108	1. Filesystem improvements:
109
110	    1.1 Added XZ compression
111	    1.2 Added compression options support
112
113	2. Miscellaneous improvements/bug fixes
114
115	    1.1 Add missing NO_XATTR filesystem flag to indicate no-xattrs
116		option was specified and no xattrs should be stored when
117		appending.
118	    1.2 Add suppport in Unquashfs -stat option for displaying
119		NO_XATTR flag.
120	    1.3 Remove checkdata entry from Unsquashfs -stat option if a 4.0
121		filesystem - checkdata is no longer supported.
122	    1.4 Fix appending bug when appending to an empty filesystem - this
123		would be incorrectly treated as an error.
124	    1.5 Use glibc sys/xattr.h include rather than using attr/xattr.h
125		which isn't present by default on some distributions.
126	    1.6 Unsquashfs, fix block calculation error with regular files when
127		file size is between 2^32-block_size+1 and 2^32-1.
128	    1.7 Unsquashfs, fix sparse file writing when holes are larger than
129		2^31-1.
130	    1.8 Add external CFLAGS and LDFLAGS support to Makefile, and allow
131		build options to be specified on command line.  Also don't
132		over-write passed in CFLAGS definition.
133
134
1354.1	19 SEPT 2010	Major filesystem and tools improvements
136
137	1. Filesystem improvements:
138
139	    1.1 Extended attribute support
140	    1.2 New compression framework
141	    1.3 Support for LZO compression
142	    1.4 Support for LZMA compression (not yet in mainline)
143
144	2. Mksquashfs improvements:
145
146	    1.1 Enhanced pseudo file support
147	    1.2 New options for choosing compression algorithm used
148	    1.3 New options for controlling extended attributes
149	    1.4 Fix misalignment issues with memcpy etc. seen on ARM
150	    1.5 Fix floating point error in progress_bar when max == 0
151	    1.6 Removed use of get_nproc() call unavailable in ulibc
152	    1.7 Reorganised help text
153
154	3. Unsquashfs improvements:
155
156	    1.1 New options for controlling extended attributes
157	    1.2 Fix misalignment issues with memcpy etc. seen on ARM
158	    1.3 Fix floating point error in progress_bar when max == 0
159	    1.4 Removed use of get_nproc() call unavailable in ulibc
160
161
1624.0	5 APR 2009	Major filesystems improvements
163
164	1. Kernel code improvements:
165
166	    1.1 Fixed little endian layout adopted.  All swapping macros
167		removed, and in-line swapping added for big-endian
168		architectures.
169	    1.2 Kernel code substantially improved and restructured.
170	    1.3 Kernel code split into separate files along functional lines.
171	    1.4 Vmalloc usage removed, and code changed to use separately
172		allocated 4K buffers
173
174	2. Unsquashfs improvements:
175
176	    2.1 Support for 4.0 filesystems added.
177	    2.2 Swapping macros rewritten.
178	    2.3 Unsquashfs code restructured and split into separate files.
179
180	3. Mksquashfs improvements:
181
182	    3.1 Swapping macros rewritten.  Fixed little-endian layout allows
183		code to be optimised and only added at compile time for
184		big endian systems.
185	    3.2 Support for pseudo files added.
186
1873.4	26 AUG 2008	Performance improvements to Unsquashfs, Mksquashfs
188			and the kernel code.  Plus many small bug fixes.
189
190	1. Kernel code improvements:
191
192	    1.1 Internal Squashfs kernel metadata and fragment cache
193		implementations have been merged and optimised.  Spinlocks are
194		now used, locks are held for smaller periods and wakeups have
195		been minimised.  Small race condition fixed where if two or
196		more processes tried to read the same cache block
197		simultaneously they would both read and decompress it.  10-20%+
198		speed improvement has been seen on tests.
199	    1.2 NFS export code rewritten following VFS changes in
200		linux-2.6.24.
201	    1.3 New patches for linux-2.6.25, linux-2.6.26, and linux-2.6.27.
202		Fixed patch for linux-2.6.24.
203	    1.4 Fixed small buffer_head leak in squashfs_read_data when
204		handling badly corrupted filesystems.
205	    1.5 Fixed bug in get_dir_index_using_offset.
206
207	2. Unsquashfs improvements:
208
209	    2.1 Unsquashfs has been parallelised.  Filesystem reading, writing
210		and decompression is now multi-threaded.  Up to 40% speed
211		improvement seen on tests.
212	    2.2 Unsquashfs now has a progress bar.  Use -no-progress to
213		disable it.
214	    2.3 Fixed small bug where unistd.h wasn't being included on
215		some distributions, leading to lseek being used rather than
216		lseek64 - which meant on these distributions Unsquashfs
217		couldn't unsquash filesystems larger than 4GB.
218
219       3. Mksquashfs improvements:
220
221	    3.1 Removed some small remaining parallelisation bottlenecks.
222		Depending on source filesystem, up to 10%+ speed improvement.
223	    3.2 Progress bar improved, and moved to separate thread.
224	    3.3 Sparse file handling bug in Mksquashfs 3.3 fixed.
225	    3.4 Two rare appending restore bugs fixed (when ^C hit twice).
226
227
2283.3	1 NOV 2007	Increase in block size, sparse file support,
229			Mksquashfs and Unsquashfs extended to use
230			pattern matching in exclude/extract files, plus
231			many more improvements and bug fixes.
232
233	1. Filesystem improvements:
234
235	     1.1. Maximum block size has been increased to 1Mbyte, and the
236	    	  default block size has been increased to 128 Kbytes.
237		  This improves compression.
238
239	     1.2. Sparse files are now supported.  Sparse files are files
240		  which have large areas of unallocated data commonly called
241		  holes.  These files are now detected by Squashfs and stored
242		  more efficiently.  This improves compression and read
243		  performance for sparse files.
244
245	2. Mksquashfs improvements:
246
247	   2.1.  Exclude files have been extended to use wildcard pattern
248		 matching and regular expressions.  Support has also been
249		 added for non-anchored excludes, which means it is
250		 now possible to specify excludes which match anywhere
251		 in the filesystem (i.e. leaf files), rather than always
252		 having to specify exclude files starting from the root
253		 directory (anchored excludes).
254
255	   2.2.  Recovery files are now created when appending to existing
256		 Squashfs filesystems.  This allows the original filesystem
257		 to be recovered if Mksquashfs aborts unexpectedly
258		 (i.e. power failure).
259
260	3. Unsquashfs improvements:
261
262	    3.1. Multiple extract files can now be specified on the
263		 command line, and the files/directories to be extracted can
264		 now also be given in a file.
265
266	    3.2. Extract files have been extended to use wildcard pattern
267		 matching and regular expressions.
268
269	    3.3. Filename printing has been enhanced and Unquashfs can
270		 now display filenames with file attributes
271		 ('ls -l' style output).
272
273	    3.4. A -stat option has been added which displays the filesystem
274		 superblock information.
275
276	    3.5. Unsquashfs now supports 1.x filesystems.
277
278	4. Miscellaneous improvements/bug fixes:
279
280	    4.1. Squashfs kernel code improved to use SetPageError in
281		 squashfs_readpage() if I/O error occurs.
282
283	    4.2. Fixed Squashfs kernel code bug preventing file
284		 seeking beyond 2GB.
285
286	    4.3. Mksquashfs now detects file size changes between
287		 first phase directory scan and second phase filesystem create.
288		 It also deals better with file I/O errors.
289
290
2913.2-r2	15 JAN 2007	Kernel patch update and progress bar bug fix
292
293	1. Kernel patches 2.6.19/2.6.20 have been updated to use
294	   const structures and mutexes rather than older semaphores.
295	2. Minor SMP bug fixes.
296	3. Progress bar broken on x86-64.  Fixed.
297
2983.2	2 JAN 2007	NFS support, improvements to the Squashfs-tools, major
299			bug fixes, lots of small improvements/bug fixes, and new
300			kernel patches.
301
302	Improvements:
303
304	1. Squashfs filesystems can now be exported via NFS.
305	2. Unsquashfs now supports 2.x filesystems.
306	3. Mksquashfs now displays a progress bar.
307	4. Squashfs kernel code has been hardened against accidently or
308	   maliciously corrupted Squashfs filesystems.
309
310	Bug fixes:
311
312	5. Race condition occurring on S390 in readpage() fixed.
313	6. Odd behaviour of MIPS memcpy in read_data() routine worked-around.
314	7. Missing cache_flush in Squashfs symlink_readpage() added.
315
316
3173.1-r2	30 AUG 2006	Mksquashfs -sort bug fix
318
319			A code optimisation after testing unfortunately
320			broke sorting in Mksquashfs.  This has been fixed.
321
3223.1	19 AUG 2006	This release has some major improvements to
323			the squashfs-tools, a couple of major bug
324			fixes, lots of small improvements/bug fixes,
325			and new kernel patches.
326
327
328	1. Mksquashfs has been rewritten to be multi-threaded.  It
329	   has the following improvements
330
331	   1.1. Parallel compression.  By default as many compression and
332		fragment compression threads are created as there are available
333		processors.  This significantly speeds up performance on SMP
334		systems.
335	   1.2. File input and filesystem output is peformed in parallel on
336		separate threads to maximise I/O performance.  Even on single
337		processor systems this speeds up performance by at least 10%.
338	   1.3. Appending has been significantly improved, and files within the
339		filesystem being appended to are no longer scanned and
340		checksummed.  This significantly improves append time for large
341		filesystems.
342	   1.4. File duplicate checking has been optimised, and split into two
343		separate phases.  Only files which are considered possible
344		duplicates after the first phase are checksummed and cached in
345		memory.
346	   1.5	The use of swap memory was found to significantly impact
347		performance. The amount of memory used to cache files is now a
348		command line option, by default this is 512 Mbytes.
349
350	2. Unsquashfs has the following improvements
351
352	   2.1  Unsquashfs now allows you to specify the filename or the
353		directory within the Squashfs filesystem that is to be
354		extracted, rather than always extracting the entire filesystem.
355	   2.2  A new -force option has been added which forces Unsquashfs to
356		output to the destination directory even if files and directories
357		already exist in the destination directory.  This allows you to
358		update an already existing directory tree, or to Unsquashfs to
359		a partially filled directory tree.  Without the -force option
360		Unsquashfs will refuse to output.
361
362	3.  The following major bug fixes have been made
363
364	  3.1  	A fragment table rounding bug has been fixed in Mksquashfs.
365		Previously if the number of fragments in the filesystem
366		were a multiple of 512, Mksquashfs would generate an
367		incorrect filesystem.
368	  3.2  	A rare SMP bug which occurred when simultaneously acccessing
369		multiply mounted Squashfs filesystems has been fixed.
370
371	4. Miscellaneous improvements/bug fixes
372
373	  4.1	Kernel code stack usage has been reduced.  This is to ensure
374		Squashfs works with 4K stacks.
375	  4.2   Readdir (Squashfs kernel code) has been fixed to always
376		return 0, rather than the number of directories read.  Squashfs
377		should now interact better with NFS.
378	  4.3	Lseek bug in Mksquashfs when appending to larger than 4GB
379		filesystems fixed.
380	  4.4	Squashfs 2.x initrds can now been mounted.
381	  4.5	Unsquashfs exit status fixed.
382	  4.6	New patches for linux-2.6.18 and linux-2.4.33.
383
384
3853.0	15 MAR 2006	Major filesystem improvements
386
387	1. Filesystems are no longer limited to 4 GB.  In
388	   theory 2^64 or 4 exabytes is now supported.
389	2. Files are no longer limited to 4 GB.  In theory the maximum
390	   file size is 4 exabytes.
391	3. Metadata (inode table and directory tables) are no longer
392	   restricted to 16 Mbytes.
393	4. Hardlinks are now suppported.
394	5. Nlink counts are now supported.
395	6. Readdir now returns '.' and '..' entries.
396	7. Special support for files larger than 256 MB has been added to
397	   the Squashfs kernel code for faster read access.
398	8. Inode numbers are now stored within the inode rather than being
399	   computed from inode location on disk (this is not so much an
400	   improvement, but a change forced by the previously listed
401	   improvements).
402
4032.2-r2	8 SEPT 2005	Second release of 2.2, this release fixes a couple
404			of small bugs, a couple of small documentation
405			mistakes, and adds a patch for kernel 2.6.13.
406
407	1. Mksquashfs now deletes the output filesystem image file if an
408	   error occurs whilst generating the filesystem.  Previously on
409	   error the image file was left empty or partially written.
410	2. Updated mksquashfs so that it doesn't allow you to generate
411	   filesystems with block sizes smaller than 4K.  Squashfs hasn't
412	   supported block sizes less than 4K since 2.0-alpha.
413	3. Mksquashfs now ignores missing files/directories in sort files.
414	   This was the original behaviour before 2.2.
415	4. Fixed small mistake in fs/Kconfig where the version was still
416	   listed as 2.0.
417	5. Updated ACKNOWLEDGEMENTS file.
418
419
4202.2	3 JUL 2005	This release has some small improvements, bug fixes
421			and patches for new kernels.
422
423	1. Sort routine re-worked and debugged from release 2.1.  It now allows
424	   you to give Mkisofs style sort files and checks for filenames that
425	   don't match anything.  Sort priority has also been changed to
426	   conform to Mkisofs usage, highest priority files are now placed
427	   at the start of the filesystem (this means they will be on the
428	   inside of a CD or DVD).
429	2. New Configure options for embedded systems (memory constrained
430	   systems).  See INSTALL file for further details.
431	3. Directory index bug fixed where chars were treated as signed on
432           some architectures.  A file would not be found in the rare case
433	   that the filename started with a chracter greater than 127.
434	4. Bug introduced into the read_data() routine when sped up to use data
435	   block queueing fixed.  If the second or later block resulted in an
436	   I/O error this was not checked.
437	5. Append bug introduced in 2.1 fixed.  The code to compute the new
438	   compressed and uncompressed directory parts after appending was
439	   wrong.
440	6. Metadata block length read routine altered to not perform a
441	   misaligned short read.  This was to fix reading on an ARM7 running
442	   uCLinux without a misaligned read interrupt handler.
443	7. Checkdata bug introduced in 2.1 fixed.
444
445
4462.1-r2  15 DEC 2004	Code changed so it can be compiled with gcc 2.x
447
448	1.  In some of the code added for release 2.1 I unknowingly used some
449	    gcc extensions only supported by 3.x compilers.  I have received
450	    a couple of reports that the 2.1 release doesn't build on 2.x and so
451	    people are clearly still using gcc 2.x.  The code has been
452	    rewritten to remove these extensions.
453
4542.1	10 DEC 2004	Significantly improved directory handling plus numerous
455			other smaller improvements
456
457	1.  Fast indexed directories implemented.  These speed up directory
458	    operations (ls, file lookup etc.) significantly for directories
459	    larger than 8 KB.
460	2.  All directories are now sorted in alphabetical order.  This again
461	    speeds up directory operations, and in some cases it also results in
462	    a small compression improvement (greater data similarity between
463	    files with alphabetically similar names).
464	3.  Maximum directory size increased from 512 KB to 128 MB.
465	4.  Duplicate fragment checking and appending optimised in mksquashfs,
466	    depending on filesystem, this is now up to 25% faster.
467	5.  Mksquashfs help information reformatted and reorganised.
468	6.  The Squashfs version and release date is now printed at kernel
469	    boot-time or module insertion.  This addition will hopefully help
470	    to reduce the growing problem where the Squashfs version supported
471	    by a kernel is unknown and the kernel source is unavailable.
472        7.  New PERFORMANCE.README file.
473	8.  New -2.0 mksquashfs option.
474	9.  CHANGES file reorganised.
475	10. README file reorganised, clarified and updated to include the 2.0
476	    mksquashfs options.
477	11. New patch for Linux 2.6.9.
478	12. New patch for Linux 2.4.28.
479
4802.0r2	29 AUG 2004	Workaround for kernel bug in kernels 2.6.8 and newer
481			added
482
483	1. New patch for kernel 2.6.8.1.  This includes a workaround for a
484	   kernel bug introduced in 2.6.7bk14, which is present in all later
485	   versions of the kernel.
486
487	   If you're using a 2.6.8 kernel or later then you must use this
488	   2.6.8.1 patch.  If you've experienced hangs or oopses using Squashfs
489	   with a 2.6.8 or later kernel then you've hit this bug, and this
490	   patch will fix it.
491
492	   It is worth mentioning that this kernel bug potentially affects
493	   other filesystems.  If you receive odd results with other
494	   filesystems you may be experiencing this bug with that filesystem.
495	   I submitted a patch but this has not yet gone into the
496	   kernel, hopefully the bug will be fixed in later kernels.
497
4982.0	13 JULY 2004	A couple of new options, and some bug fixes
499
500	1. New mksquashfs -all-root, -root-owned, -force-uid, and -force-gid
501	   options.  These allow the uids/gids of files in the generated
502	   filesystem to be specified, overriding the uids/gids in the
503	   source filesystem.
504	2. Initrds are now supported for kernels 2.6.x.
505	3. amd64 bug fixes.  If you use an amd64, please read the README-AMD64
506	   file.
507	4. Check-data and gid bug fixes.  With 2.0-alpha when mounting 1.x
508	   filesystems in certain cases file gids were corrupted.
509	5. New patch for Linux 2.6.7.
510
5112.0-ALPHA	21 MAY 2004	Filesystem changes and compression improvements
512
513	1. Squashfs 2.0 has added the concept of fragment blocks.
514           Files smaller than the file block size and optionally the
515	   remainder of files that do not fit fully into a block (i.e. the
516	   last 32K in a 96K file) are packed into shared fragments and
517	   compressed together.  This achieves on average 5 - 20% better
518	   compression than Squashfs 1.x.
519	2. The maximum block size has been increased to 64K (in the ALPHA
520	   version of Squashfs 2.0).
521	3. The maximum number of UIDs has been increased to 256 (from 48 in
522	   1.x).
523	4. The maximum number of GIDs has been increased to 256 (from 15 in
524	   1.x).
525	5. Removal of sleep_on() function call in 2.6.x patch, to allow Squashfs
526	   to work on the Fedora rc2 kernel.
527	6. Numerous small bug fixes have been made.
528
5291.3r3	18 JAN 2004	Third release of 1.3, this adds a new mksquashfs option,
530			some bug fixes, and extra patches for new kernels
531
532	1. New mksquashfs -ef exclude option.  This option reads the exclude
533	   dirs/files from an exclude file, one exclude dir/file per line.  This
534	   avoids the command line size limit when using the -e exclude option,
535	2. When appending to existing filesystems, if mksquashfs experiences a
536	   fatal error (e.g. out of space when adding to the destination), the
537	   original filesystem is restored,
538	3. Mksquashfs now builds standalone, without the kernel needing to be
539	   patched.
540	4. Bug fix in the kernel squashfs filesystem, where the pages being
541	   filled were not kmapped.  This seems to only have caused problems
542	   on an Apple G5,
543	5. New patch for Linux 2.4.24,
544
545	6. New patch for Linux 2.6.1, this replaces the patch for 2.6.0-test7.
546
5471.3r2	14 OCT 2003	Second release of 1.3, bug fixes and extra patches for
548		        new kernels
549
550	1. Bug fix in routine that adds files to the filesystem being
551	   generated in mksquashfs.  This bug was introduced in 1.3
552	   (not enough testing...) when I rewrote it to handle files larger
553	   than available memory.  This bug caused a SEGV, so if you've ever
554	   got that, it is now fixed,
555	2. Long running bug where ls -s and du reported wrong block size
556	   fixed.  I'm pretty sure this used to work many kernel versions ago
557	   (2.4.7) but it broke somewhere along the line since then,
558	3. New patch for Linux 2.4.22,
559	4. New patch for 2.6.0-test7, this replaces the patch for 2.6.0-test1.
560
5611.3	29 JUL 2003	FIFO/Socket support added plus optimisations and
562		        improvements
563
564	1. FIFOs and Socket inodes are now supported,
565	2. Mksquashfs can now compress files larger than available
566	   memory,
567	3. File duplicate check routine optimised,
568	4. Exit codes fixed in Mksquashfs,
569	5. Patch for Linux 2.4.21,
570	6. Patch for Linux 2.6.0-test1.  Hopefully, this will work for
571	   the next few releases of 2.6.0-testx, otherwise, I'll be
572	   releasing a lot of updates to the 2.6.0 patch...
573
5741.2	13 MAR 2003	Append feature and new mksquashfs options added
575
576	Mksquashfs can now add to existing squashfs filesystems.  Three extra
577	options "-noappend", "-keep-as-directory", and "root-becomes"
578	have been added.
579
580	The append option with file duplicate detection, means squashfs can be
581	used as a simple versioning archiving filesystem. A squashfs
582	filesystem can be created with for example the linux-2.4.19 source.
583	Appending the linux-2.4.20 source will create a filesystem with the
584	two source trees, but only the changed files will take extra room,
585	the unchanged files will be detected as duplicates.
586
587	See the README file for usage changes.
588
5891.1b	16 JAN 2003	Bug fix release
590
591	Fixed readpage deadlock bug.  This was a rare deadlock bug that
592	happened when pushing pages into the page cache when using greater
593	than 4K blocks.  I never got this bug when I tested the filesystem,
594	but two people emailed me on the same day about the problem!
595	I fixed it by using a page cache function that wasn't there when
596	I originally did the work, which was nice :-)
597
5981.1	8 JAN 2003	Added features
599
600	1. Kernel squashfs can now mount different byte order filesystems.
601	2. Additional features added to mksquashfs.  Mksquashfs now supports
602	   exclude files and multiple source files/directories can be
603	   specified.  A nopad option has also been added, which
604	   informs mksquashfs not to pad filesystems to a multiple of 4K.
605	   See README for mksquashfs usage changes.
606	3. Greater than 2GB filesystems bug fix.  Filesystems greater than 2GB
607	   can now be created.
608
6091.0c 	14 NOV 2002	Bug fix release
610
611	Fixed bugs with initrds and device nodes
612
6131.0 	23 OCT 2002	Initial release
614