			SQUASHFS CHANGE LOG

1.0 	23 OCT 2002	Initial release

1.0c 	14 NOV 2002	Bug fix release

	Fixed bugs with initrds and device nodes

1.1	8 JAN 2003	Added features

	1. Kernel squashfs can now mount different byte order filesystems.
	2. Additional features added to mksquashfs.  Mksquashfs now supports
	   exclude files and multiple source files/directories can be
	   specified.  A nopad option has also been added, which
	   informs mksquashfs not to pad filesystems to a multiple of 4K.
	   See README for mksquashfs usage changes.
	3. Greater than 2GB filesystems bug fix.  Filesystems greater than 2GB
	   can now be created.
	4. Patch for 2.4.20 kernels.

1.1b	16 JAN 2003	Bug fix release

	Fixed readpage deadlock bug.  This was a rare deadlock bug that
	happened when pushing pages into the page cache when using greater
	than 4K blocks.  I never got this bug when I tested the filesystem,
	but two people emailed me on the same day about the problem!
	I fixed it by using a page cache function that wasn't there when
	I originally did the work, which was nice :-)

1.2	13 MAR 2003	Append feature and new mksquashfs options added

	Mksquashfs can now add to existing squashfs filesystems.  Three extra
	options "-noappend", "-keep-as-directory", and "root-becomes"
	have been added.

	The append option with file duplicate detection, means squashfs can be
	used as a simple versioning archiving filesystem. A squashfs
	filesystem can be created with for example the linux-2.4.19 source.
	Appending the linux-2.4.20 source will create a filesystem with the
	two source trees, but only the changed files will take extra room,
	the unchanged files will be detected as duplicates.

	See the README file for usage changes.

1.3	29 JUL 2003	FIFO/Socket support added plus optimisations and
		        improvements

	1. FIFOs and Socket inodes are now supported,
	2. Mksquashfs can now compress files larger than available
	   memory,
	3. File duplicate check routine optimised,
	4. Exit codes fixed in Mksquashfs,
	5. Patch for Linux 2.4.21,
	6. Patch for Linux 2.6.0-test1.  Hopefully, this will work for
	   the next few releases of 2.6.0-testx, otherwise, I'll be
	   releasing a lot of updates to the 2.6.0 patch...

1.3r2	14 OCT 2003	Second release of 1.3, bug fixes and extra patches for
		        new kernels

	1. Bug fix in routine that adds files to the filesystem being
	   generated in mksquashfs.  This bug was introduced in 1.3
	   (not enough testing...) when I rewrote it to handle files larger
	   than available memory.  This bug caused a SEGV, so if you've ever
	   got that, it is now fixed,
	2. Long running bug where ls -s and du reported wrong block size
	   fixed.  I'm pretty sure this used to work many kernel versions ago
	   (2.4.7) but it broke somewhere along the line since then,
	3. New patch for Linux 2.4.22,
	4. New patch for 2.6.0-test7, this replaces the patch for 2.6.0-test1.
