614 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			614 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 			SQUASHFS CHANGE LOG
 | |
| 
 | |
| 4.3	12 MAY 2014	New compressor options, new Mksquashfs/Unsquashfs
 | |
| 			functionality, duplicate checking optimisations,
 | |
| 			stability improvements (option/file parsing,
 | |
| 			buffer/memory overflow checks, filesystem hardening
 | |
| 			on corrupted filesystems), CVE fixes.
 | |
| 
 | |
| 	Too many changes to do the traditional custom changelog.  But, this
 | |
| 	is now unnecessary, so instead list most significant 15% of commits
 | |
| 	from git changelog in chronological order.
 | |
| 
 | |
| 	- unsquashfs: add checks for corrupted data in opendir functions
 | |
| 	- unsquashfs: completely empty filesystems incorrectly generate an error
 | |
| 	- unsquashfs: fix open file limit
 | |
| 	- mksquashfs: Use linked list to store directory entries rather
 | |
| 	- mksquashfs: Remove qsort and add a bottom up linked list merge sort
 | |
| 	- mksquashfs: optimise lookup_inode2() for dirs
 | |
| 	- pseudo: fix handling of modify pseudo files
 | |
| 	- pseudo: fix handling of directory pseudo files
 | |
| 	- xattr: Fix ERROR() so that it is synchronised with the progress bar
 | |
| 	- mksquashfs/sort: Fix INFO() so that it is synced with the progress bar
 | |
| 	- mksquashfs: Add -progress to force progress bar when using -info
 | |
| 	- error.h: consolidate the various error macros into one header file
 | |
| 	- mksquashfs: fix stack overflow in write_fragment_table()
 | |
| 	- mksquashfs: move list allocation from off the stack
 | |
| 	- unsquashfs: fix oversight in directory permission setting
 | |
| 	- mksquashfs: dynamically allocate recovery_file
 | |
| 	- mksquashfs: dynamically allocate buffer in subpathname()
 | |
| 	- mksquashfs: dynamically allocate buffer in pathname()
 | |
| 	- unsquashfs: fix CVE-2012-4024
 | |
| 	- unsquashfs: fix CVE-2012-4025
 | |
| 	- mksquashfs: fix potential stack overflow in get_component()
 | |
| 	- mksquashfs: add parse_number() helper for numeric command line options
 | |
| 	- mksquasfs: check return value of fstat() in reader_read_file()
 | |
| 	- mksquashfs: dynamically allocate filename in old_add_exclude()
 | |
| 	- unsquashfs: dynamically allocate pathname in dir_scan()
 | |
| 	- unsquashfs: dynamically allocate pathname in pre_scan()
 | |
| 	- sort: dynamically allocate filename in add_sort_list()
 | |
| 	- mksquashfs: fix dir_scan() exit if lstat of source directory fails
 | |
| 	- pseudo: fix memory leak in read_pseudo_def() if exec_file() fails
 | |
| 	- pseudo: dynamically allocate path in dump_pseudo()
 | |
| 	- mksquashfs: dynamically allocate path in display_path2()
 | |
| 	- mksquashfs: dynamically allocate b_buffer in getbase()
 | |
| 	- pseudo: fix potential stack overflow in get_component()
 | |
| 	- pseudo: avoid buffer overflow in read_pseudo_def() using sscanf()
 | |
| 	- pseudo: dynamically allocate filename in exec_file()
 | |
| 	- pseudo: avoid buffer overflow in read_sort_file() using fscanf()
 | |
| 	- sort: tighten up sort file parsing
 | |
| 	- unsquashfs: fix name under-allocation in process_extract_files()
 | |
| 	- unsquashfs: avoid buffer overflow in print_filename() using sprintf()
 | |
| 	- Fix some limits in the file parsing routines
 | |
| 	- pseudo: Rewrite pseudo file processing
 | |
| 	- read_fs: fix small memory leaks in read_filesystem()
 | |
| 	- mksquashfs: fix fclose leak in reader_read_file() on I/O error
 | |
| 	- mksquashfs: fix frag struct leak in write_file_{process|blocks|frag}
 | |
| 	- unsquashfs_xattr: fix memory leak in write_xattr()
 | |
| 	- read_xattrs: fix xattr free in get_xattr() in error path
 | |
| 	- unsquashfs: add -user-xattrs option to only extract user.xxx xattrs
 | |
| 	- unsquashfs: add code to only print "not superuser" error message once
 | |
| 	- unsquashfs: check for integer overflow in user input
 | |
| 	- mksquashfs: check for integer overflow in user input
 | |
| 	- mksquashfs: fix "new" variable leak in dir_scan1()
 | |
| 	- read_fs: prevent buffer {over|under}flow in read_block() with
 | |
| 	  corrupted filesystems
 | |
| 	- read_fs: check metadata blocks are expected size in scan_inode_table()
 | |
| 	- read_fs: check the root inode block is found in scan_inode_table()
 | |
| 	- read_fs: Further harden scan_inode_table() against corrupted
 | |
| 	  filesystems
 | |
| 	- unsquashfs: prevent buffer {over|under}flow in read_block() with
 | |
| 	  corrupted filesystems
 | |
| 	- read_xattrs: harden xattr data reading against corrupted filesystems
 | |
| 	- unsquash-[23]: harden frag table reading against corrupted filesystems
 | |
| 	- unsquash-4.c: harden uid/gid & frag table reading against corruption
 | |
| 	- unsquashfs: harden inode/directory table reading against corruption
 | |
| 	- mksquashfs: improve out of space in output filesystem handling
 | |
| 	- mksquashfs: flag lseek error in writer as probable out of space
 | |
| 	- mksquashfs: flag lseek error in write_destination as probable out of
 | |
| 	  space
 | |
| 	- mksquashfs: print file being squashed when ^\ (SIGQUIT) typed
 | |
| 	- mksquashfs: make EXIT_MKSQUASHFS() etc restore via new restore thread
 | |
| 	- mksquashfs: fix recursive restore failure check
 | |
| 	- info: dump queue and cache status if ^\ hit twice within one second
 | |
| 	- mksquashfs: fix rare race condition in "locked fragment" queueing
 | |
| 	- lz4: add experimental support for lz4 compression
 | |
| 	- lz4: add support for lz4 "high compression"
 | |
| 	- lzo_wrapper: new implementation with compression options
 | |
| 	- gzip_wrapper: add compression options
 | |
| 	- mksquashfs: redo -comp <compressor> parsing
 | |
| 	- mksquashfs: display compressor options when -X option isn't recognised
 | |
| 	- mksquashfs: add -Xhelp option
 | |
| 	- mksquashfs/unsquashfs: fix mtime signedness
 | |
| 	- Mksquashfs: optimise duplicate checking when appending
 | |
| 	- Mksquashfs: introduce additional per CPU fragment process threads
 | |
| 	- Mksquashfs: significantly optimise fragment duplicate checking
 | |
| 	- read_fs: scan_inode_table(), fix memory leak on filesystem corruption
 | |
| 	- pseudo: add_pseudo(), fix use of freed variable
 | |
| 	- mksquashfs/unsquashfs: exclude/extract/pseudo files, fix handling of
 | |
| 	  leaf name
 | |
| 	- mksquashfs: rewrite default queue size so it's based on physical mem
 | |
| 	- mksquashfs: add a new -mem <mbytes> option
 | |
| 	- mksquashfs: fix limit on the number of dynamic pseudo files
 | |
| 	- mksquashfs: make -mem take a normal byte value, optionally with a
 | |
| 	  K, M or G 
 | |
| 
 | |
| 4.2	28 FEB 2011	XZ compression, and compression options support
 | |
| 
 | |
| 	1. Filesystem improvements:
 | |
| 
 | |
| 	    1.1 Added XZ compression
 | |
| 	    1.2 Added compression options support
 | |
| 
 | |
| 	2. Miscellaneous improvements/bug fixes
 | |
| 
 | |
| 	    1.1 Add missing NO_XATTR filesystem flag to indicate no-xattrs
 | |
| 		option was specified and no xattrs should be stored when
 | |
| 		appending.
 | |
| 	    1.2 Add suppport in Unquashfs -stat option for displaying
 | |
| 		NO_XATTR flag.
 | |
| 	    1.3 Remove checkdata entry from Unsquashfs -stat option if a 4.0
 | |
| 		filesystem - checkdata is no longer supported.
 | |
| 	    1.4 Fix appending bug when appending to an empty filesystem - this
 | |
| 		would be incorrectly treated as an error.
 | |
| 	    1.5 Use glibc sys/xattr.h include rather than using attr/xattr.h
 | |
| 		which isn't present by default on some distributions.
 | |
| 	    1.6 Unsquashfs, fix block calculation error with regular files when
 | |
| 		file size is between 2^32-block_size+1 and 2^32-1.
 | |
| 	    1.7 Unsquashfs, fix sparse file writing when holes are larger than
 | |
| 		2^31-1.
 | |
| 	    1.8 Add external CFLAGS and LDFLAGS support to Makefile, and allow
 | |
| 		build options to be specified on command line.  Also don't
 | |
| 		over-write passed in CFLAGS definition.
 | |
| 	
 | |
| 
 | |
| 4.1	19 SEPT 2010	Major filesystem and tools improvements
 | |
| 
 | |
| 	1. Filesystem improvements:
 | |
| 
 | |
| 	    1.1 Extended attribute support
 | |
| 	    1.2 New compression framework
 | |
| 	    1.3 Support for LZO compression
 | |
| 	    1.4 Support for LZMA compression (not yet in mainline)
 | |
| 
 | |
| 	2. Mksquashfs improvements:
 | |
| 
 | |
| 	    1.1 Enhanced pseudo file support
 | |
| 	    1.2 New options for choosing compression algorithm used
 | |
| 	    1.3 New options for controlling extended attributes
 | |
| 	    1.4 Fix misalignment issues with memcpy etc. seen on ARM
 | |
| 	    1.5 Fix floating point error in progress_bar when max == 0
 | |
| 	    1.6 Removed use of get_nproc() call unavailable in ulibc
 | |
| 	    1.7 Reorganised help text
 | |
| 	  
 | |
| 	3. Unsquashfs improvements:
 | |
| 
 | |
| 	    1.1 New options for controlling extended attributes
 | |
| 	    1.2 Fix misalignment issues with memcpy etc. seen on ARM
 | |
| 	    1.3 Fix floating point error in progress_bar when max == 0
 | |
| 	    1.4 Removed use of get_nproc() call unavailable in ulibc
 | |
| 
 | |
| 	  
 | |
| 4.0	5 APR 2009	Major filesystems improvements
 | |
| 
 | |
| 	1. Kernel code improvements:
 | |
| 
 | |
| 	    1.1 Fixed little endian layout adopted.  All swapping macros
 | |
| 		removed, and in-line swapping added for big-endian
 | |
| 		architectures.
 | |
| 	    1.2 Kernel code substantially improved and restructured.
 | |
| 	    1.3 Kernel code split into separate files along functional lines.
 | |
| 	    1.4 Vmalloc usage removed, and code changed to use separately
 | |
| 		allocated 4K buffers
 | |
| 
 | |
| 	2. Unsquashfs improvements:
 | |
| 
 | |
| 	    2.1 Support for 4.0 filesystems added.
 | |
| 	    2.2 Swapping macros rewritten.
 | |
| 	    2.3 Unsquashfs code restructured and split into separate files.
 | |
| 
 | |
| 	3. Mksquashfs improvements:
 | |
| 
 | |
| 	    3.1 Swapping macros rewritten.  Fixed little-endian layout allows
 | |
| 		code to be optimised and only added at compile time for
 | |
| 		big endian systems.
 | |
| 	    3.2 Support for pseudo files added.
 | |
| 	 
 | |
| 3.4	26 AUG 2008	Performance improvements to Unsquashfs, Mksquashfs
 | |
| 			and the kernel code.  Plus many small bug fixes.
 | |
| 
 | |
| 	1. Kernel code improvements:
 | |
| 
 | |
| 	    1.1 Internal Squashfs kernel metadata and fragment cache
 | |
| 		implementations have been merged and optimised.  Spinlocks are
 | |
| 		now used, locks are held for smaller periods and wakeups have
 | |
| 		been minimised.  Small race condition fixed where if two or
 | |
| 		more processes tried to read the same cache block
 | |
| 		simultaneously they would both read and decompress it.  10-20%+
 | |
| 		speed improvement has been seen on tests.
 | |
| 	    1.2 NFS export code rewritten following VFS changes in
 | |
| 		linux-2.6.24.
 | |
| 	    1.3 New patches for linux-2.6.25, linux-2.6.26, and linux-2.6.27.
 | |
| 		Fixed patch for linux-2.6.24.
 | |
| 	    1.4 Fixed small buffer_head leak in squashfs_read_data when
 | |
| 		handling badly corrupted filesystems.
 | |
| 	    1.5 Fixed bug in get_dir_index_using_offset.
 | |
| 
 | |
| 	2. Unsquashfs improvements:
 | |
| 
 | |
| 	    2.1 Unsquashfs has been parallelised.  Filesystem reading, writing
 | |
| 		and decompression is now multi-threaded.  Up to 40% speed
 | |
| 		improvement seen on tests.
 | |
| 	    2.2 Unsquashfs now has a progress bar.  Use -no-progress to
 | |
| 		disable it.
 | |
| 	    2.3 Fixed small bug where unistd.h wasn't being included on
 | |
| 		some distributions, leading to lseek being used rather than
 | |
| 		lseek64 - which meant on these distributions Unsquashfs
 | |
| 		couldn't unsquash filesystems larger than 4GB.
 | |
| 
 | |
|        3. Mksquashfs improvements:
 | |
| 
 | |
| 	    3.1 Removed some small remaining parallelisation bottlenecks.
 | |
| 		Depending on source filesystem, up to 10%+ speed improvement.
 | |
| 	    3.2 Progress bar improved, and moved to separate thread.
 | |
| 	    3.3 Sparse file handling bug in Mksquashfs 3.3 fixed.
 | |
| 	    3.4 Two rare appending restore bugs fixed (when ^C hit twice).
 | |
| 
 | |
| 
 | |
| 3.3	1 NOV 2007	Increase in block size, sparse file support,
 | |
| 			Mksquashfs and Unsquashfs extended to use
 | |
| 			pattern matching in exclude/extract files, plus
 | |
| 			many more improvements and bug fixes.
 | |
| 
 | |
| 	1. Filesystem improvements:
 | |
| 
 | |
| 	     1.1. Maximum block size has been increased to 1Mbyte, and the
 | |
| 	    	  default block size has been increased to 128 Kbytes.
 | |
| 		  This improves compression.
 | |
| 
 | |
| 	     1.2. Sparse files are now supported.  Sparse files are files
 | |
| 		  which have large areas of unallocated data commonly called
 | |
| 		  holes.  These files are now detected by Squashfs and stored
 | |
| 		  more efficiently.  This improves compression and read
 | |
| 		  performance for sparse files.
 | |
| 
 | |
| 	2. Mksquashfs improvements:
 | |
| 
 | |
| 	   2.1.  Exclude files have been extended to use wildcard pattern
 | |
| 		 matching and regular expressions.  Support has also been
 | |
| 		 added for non-anchored excludes, which means it is
 | |
| 		 now possible to specify excludes which match anywhere
 | |
| 		 in the filesystem (i.e. leaf files), rather than always
 | |
| 		 having to specify exclude files starting from the root
 | |
| 		 directory (anchored excludes).
 | |
| 
 | |
| 	   2.2.  Recovery files are now created when appending to existing
 | |
| 		 Squashfs filesystems.  This allows the original filesystem
 | |
| 		 to be recovered if Mksquashfs aborts unexpectedly
 | |
| 		 (i.e. power failure).
 | |
| 
 | |
| 	3. Unsquashfs improvements:
 | |
| 
 | |
| 	    3.1. Multiple extract files can now be specified on the
 | |
| 		 command line, and the files/directories to be extracted can
 | |
| 		 now also be given in a file.
 | |
| 
 | |
| 	    3.2. Extract files have been extended to use wildcard pattern
 | |
| 		 matching and regular expressions.
 | |
| 
 | |
| 	    3.3. Filename printing has been enhanced and Unquashfs can
 | |
| 		 now display filenames with file attributes
 | |
| 		 ('ls -l' style output).
 | |
| 
 | |
| 	    3.4. A -stat option has been added which displays the filesystem
 | |
| 		 superblock information.
 | |
| 
 | |
| 	    3.5. Unsquashfs now supports 1.x filesystems.
 | |
| 
 | |
| 	4. Miscellaneous improvements/bug fixes:
 | |
| 
 | |
| 	    4.1. Squashfs kernel code improved to use SetPageError in
 | |
| 		 squashfs_readpage() if I/O error occurs.
 | |
| 
 | |
| 	    4.2. Fixed Squashfs kernel code bug preventing file
 | |
| 		 seeking beyond 2GB.
 | |
| 
 | |
| 	    4.3. Mksquashfs now detects file size changes between
 | |
| 		 first phase directory scan and second phase filesystem create.
 | |
| 		 It also deals better with file I/O errors.
 | |
| 
 | |
| 
 | |
| 3.2-r2	15 JAN 2007	Kernel patch update and progress bar bug fix
 | |
| 
 | |
| 	1. Kernel patches 2.6.19/2.6.20 have been updated to use
 | |
| 	   const structures and mutexes rather than older semaphores.
 | |
| 	2. Minor SMP bug fixes.
 | |
| 	3. Progress bar broken on x86-64.  Fixed.
 | |
| 
 | |
| 3.2	2 JAN 2007	NFS support, improvements to the Squashfs-tools, major
 | |
| 			bug fixes, lots of small improvements/bug fixes, and new
 | |
| 			kernel patches.
 | |
| 
 | |
| 	Improvements:
 | |
| 
 | |
| 	1. Squashfs filesystems can now be exported via NFS.
 | |
| 	2. Unsquashfs now supports 2.x filesystems.
 | |
| 	3. Mksquashfs now displays a progress bar.
 | |
| 	4. Squashfs kernel code has been hardened against accidently or
 | |
| 	   maliciously corrupted Squashfs filesystems.
 | |
| 
 | |
| 	Bug fixes:
 | |
| 
 | |
| 	5. Race condition occurring on S390 in readpage() fixed.
 | |
| 	6. Odd behaviour of MIPS memcpy in read_data() routine worked-around.
 | |
| 	7. Missing cache_flush in Squashfs symlink_readpage() added.
 | |
| 	
 | |
| 
 | |
| 3.1-r2	30 AUG 2006	Mksquashfs -sort bug fix
 | |
| 
 | |
| 			A code optimisation after testing unfortunately
 | |
| 			broke sorting in Mksquashfs.  This has been fixed.
 | |
| 
 | |
| 3.1	19 AUG 2006	This release has some major improvements to
 | |
| 			the squashfs-tools, a couple of major bug
 | |
| 			fixes, lots of small improvements/bug fixes,
 | |
| 			and new kernel patches.
 | |
| 
 | |
| 			
 | |
| 	1. Mksquashfs has been rewritten to be multi-threaded.  It
 | |
| 	   has the following improvements
 | |
| 
 | |
| 	   1.1. Parallel compression.  By default as many compression and
 | |
| 		fragment compression threads are created as there are available
 | |
| 		processors.  This significantly speeds up performance on SMP
 | |
| 		systems.
 | |
| 	   1.2. File input and filesystem output is peformed in parallel on
 | |
| 		separate threads to maximise I/O performance.  Even on single
 | |
| 		processor systems this speeds up performance by at least 10%.
 | |
| 	   1.3. Appending has been significantly improved, and files within the
 | |
| 		filesystem being appended to are no longer scanned and
 | |
| 		checksummed.  This significantly improves append time for large
 | |
| 		filesystems.
 | |
| 	   1.4. File duplicate checking has been optimised, and split into two
 | |
| 		separate phases.  Only files which are considered possible
 | |
| 		duplicates after the first phase are checksummed and cached in
 | |
| 		memory.
 | |
| 	   1.5	The use of swap memory was found to significantly impact
 | |
| 		performance. The amount of memory used to cache files is now a
 | |
| 		command line option, by default this is 512 Mbytes.
 | |
|  
 | |
| 	2. Unsquashfs has the following improvements
 | |
| 
 | |
| 	   2.1  Unsquashfs now allows you to specify the filename or the
 | |
| 		directory within the Squashfs filesystem that is to be
 | |
| 		extracted, rather than always extracting the entire filesystem.
 | |
| 	   2.2  A new -force option has been added which forces Unsquashfs to
 | |
| 		output to the destination directory even if files and directories
 | |
| 		already exist in the destination directory.  This allows you to
 | |
| 		update an already existing directory tree, or to Unsquashfs to
 | |
| 		a partially filled directory tree.  Without the -force option
 | |
| 		Unsquashfs will refuse to output.
 | |
| 
 | |
| 	3.  The following major bug fixes have been made
 | |
| 
 | |
| 	  3.1  	A fragment table rounding bug has been fixed in Mksquashfs.
 | |
| 		Previously if the number of fragments in the filesystem
 | |
| 		were a multiple of 512, Mksquashfs would generate an
 | |
| 		incorrect filesystem.
 | |
| 	  3.2  	A rare SMP bug which occurred when simultaneously acccessing
 | |
| 		multiply mounted Squashfs filesystems has been fixed.
 | |
| 
 | |
| 	4. Miscellaneous improvements/bug fixes
 | |
| 
 | |
| 	  4.1	Kernel code stack usage has been reduced.  This is to ensure
 | |
| 		Squashfs works with 4K stacks.
 | |
| 	  4.2   Readdir (Squashfs kernel code) has been fixed to always
 | |
| 		return 0, rather than the number of directories read.  Squashfs
 | |
| 		should now interact better with NFS.
 | |
| 	  4.3	Lseek bug in Mksquashfs when appending to larger than 4GB
 | |
| 		filesystems fixed.
 | |
| 	  4.4	Squashfs 2.x initrds can now been mounted.
 | |
| 	  4.5	Unsquashfs exit status fixed.
 | |
| 	  4.6	New patches for linux-2.6.18 and linux-2.4.33.
 | |
| 
 | |
| 	
 | |
| 3.0	15 MAR 2006	Major filesystem improvements
 | |
| 
 | |
| 	1. Filesystems are no longer limited to 4 GB.  In
 | |
| 	   theory 2^64 or 4 exabytes is now supported.
 | |
| 	2. Files are no longer limited to 4 GB.  In theory the maximum
 | |
| 	   file size is 4 exabytes.
 | |
| 	3. Metadata (inode table and directory tables) are no longer
 | |
| 	   restricted to 16 Mbytes.
 | |
| 	4. Hardlinks are now suppported.
 | |
| 	5. Nlink counts are now supported.
 | |
| 	6. Readdir now returns '.' and '..' entries.
 | |
| 	7. Special support for files larger than 256 MB has been added to
 | |
| 	   the Squashfs kernel code for faster read access.
 | |
| 	8. Inode numbers are now stored within the inode rather than being
 | |
| 	   computed from inode location on disk (this is not so much an
 | |
| 	   improvement, but a change forced by the previously listed
 | |
| 	   improvements).
 | |
| 
 | |
| 2.2-r2	8 SEPT 2005	Second release of 2.2, this release fixes a couple
 | |
| 			of small bugs, a couple of small documentation
 | |
| 			mistakes, and adds a patch for kernel 2.6.13. 
 | |
| 
 | |
| 	1. Mksquashfs now deletes the output filesystem image file if an
 | |
| 	   error occurs whilst generating the filesystem.  Previously on
 | |
| 	   error the image file was left empty or partially written.
 | |
| 	2. Updated mksquashfs so that it doesn't allow you to generate
 | |
| 	   filesystems with block sizes smaller than 4K.  Squashfs hasn't
 | |
| 	   supported block sizes less than 4K since 2.0-alpha.
 | |
| 	3. Mksquashfs now ignores missing files/directories in sort files.
 | |
| 	   This was the original behaviour before 2.2.
 | |
| 	4. Fixed small mistake in fs/Kconfig where the version was still
 | |
| 	   listed as 2.0.
 | |
| 	5. Updated ACKNOWLEDGEMENTS file.
 | |
| 
 | |
| 
 | |
| 2.2	3 JUL 2005	This release has some small improvements, bug fixes
 | |
| 			and patches for new kernels.
 | |
| 
 | |
| 	1. Sort routine re-worked and debugged from release 2.1.  It now allows
 | |
| 	   you to give Mkisofs style sort files and checks for filenames that
 | |
| 	   don't match anything.  Sort priority has also been changed to
 | |
| 	   conform to Mkisofs usage, highest priority files are now placed
 | |
| 	   at the start of the filesystem (this means they will be on the
 | |
| 	   inside of a CD or DVD).
 | |
| 	2. New Configure options for embedded systems (memory constrained
 | |
| 	   systems).  See INSTALL file for further details.
 | |
| 	3. Directory index bug fixed where chars were treated as signed on
 | |
|            some architectures.  A file would not be found in the rare case
 | |
| 	   that the filename started with a chracter greater than 127.
 | |
| 	4. Bug introduced into the read_data() routine when sped up to use data
 | |
| 	   block queueing fixed.  If the second or later block resulted in an
 | |
| 	   I/O error this was not checked.
 | |
| 	5. Append bug introduced in 2.1 fixed.  The code to compute the new
 | |
| 	   compressed and uncompressed directory parts after appending was
 | |
| 	   wrong.
 | |
| 	6. Metadata block length read routine altered to not perform a
 | |
| 	   misaligned short read.  This was to fix reading on an ARM7 running
 | |
| 	   uCLinux without a misaligned read interrupt handler.
 | |
| 	7. Checkdata bug introduced in 2.1 fixed.
 | |
| 	
 | |
| 
 | |
| 2.1-r2  15 DEC 2004	Code changed so it can be compiled with gcc 2.x
 | |
| 
 | |
| 	1.  In some of the code added for release 2.1 I unknowingly used some
 | |
| 	    gcc extensions only supported by 3.x compilers.  I have received
 | |
| 	    a couple of reports that the 2.1 release doesn't build on 2.x and so
 | |
| 	    people are clearly still using gcc 2.x.  The code has been
 | |
| 	    rewritten to remove these extensions.
 | |
| 
 | |
| 2.1	10 DEC 2004	Significantly improved directory handling plus numerous
 | |
| 			other smaller improvements
 | |
| 
 | |
| 	1.  Fast indexed directories implemented.  These speed up directory
 | |
| 	    operations (ls, file lookup etc.) significantly for directories
 | |
| 	    larger than 8 KB.
 | |
| 	2.  All directories are now sorted in alphabetical order.  This again
 | |
| 	    speeds up directory operations, and in some cases it also results in
 | |
| 	    a small compression improvement (greater data similarity between
 | |
| 	    files with alphabetically similar names).
 | |
| 	3.  Maximum directory size increased from 512 KB to 128 MB.
 | |
| 	4.  Duplicate fragment checking and appending optimised in mksquashfs,
 | |
| 	    depending on filesystem, this is now up to 25% faster.
 | |
| 	5.  Mksquashfs help information reformatted and reorganised.
 | |
| 	6.  The Squashfs version and release date is now printed at kernel
 | |
| 	    boot-time or module insertion.  This addition will hopefully help
 | |
| 	    to reduce the growing problem where the Squashfs version supported
 | |
| 	    by a kernel is unknown and the kernel source is unavailable.
 | |
|         7.  New PERFORMANCE.README file.
 | |
| 	8.  New -2.0 mksquashfs option.
 | |
| 	9.  CHANGES file reorganised.
 | |
| 	10. README file reorganised, clarified and updated to include the 2.0
 | |
| 	    mksquashfs options.
 | |
| 	11. New patch for Linux 2.6.9.
 | |
| 	12. New patch for Linux 2.4.28.
 | |
| 
 | |
| 2.0r2	29 AUG 2004	Workaround for kernel bug in kernels 2.6.8 and newer
 | |
| 			added
 | |
| 
 | |
| 	1. New patch for kernel 2.6.8.1.  This includes a workaround for a
 | |
| 	   kernel bug introduced in 2.6.7bk14, which is present in all later
 | |
| 	   versions of the kernel.  
 | |
| 
 | |
| 	   If you're using a 2.6.8 kernel or later then you must use this
 | |
| 	   2.6.8.1 patch.  If you've experienced hangs or oopses using Squashfs
 | |
| 	   with a 2.6.8 or later kernel then you've hit this bug, and this
 | |
| 	   patch will fix it.
 | |
| 
 | |
| 	   It is worth mentioning that this kernel bug potentially affects
 | |
| 	   other filesystems.  If you receive odd results with other
 | |
| 	   filesystems you may be experiencing this bug with that filesystem.
 | |
| 	   I submitted a patch but this has not yet gone into the
 | |
| 	   kernel, hopefully the bug will be fixed in later kernels. 
 | |
| 
 | |
| 2.0	13 JULY 2004	A couple of new options, and some bug fixes
 | |
| 
 | |
| 	1. New mksquashfs -all-root, -root-owned, -force-uid, and -force-gid
 | |
| 	   options.  These allow the uids/gids of files in the generated
 | |
| 	   filesystem to be specified, overriding the uids/gids in the
 | |
| 	   source filesystem.
 | |
| 	2. Initrds are now supported for kernels 2.6.x.
 | |
| 	3. amd64 bug fixes.  If you use an amd64, please read the README-AMD64
 | |
| 	   file.
 | |
| 	4. Check-data and gid bug fixes.  With 2.0-alpha when mounting 1.x
 | |
| 	   filesystems in certain cases file gids were corrupted.
 | |
| 	5. New patch for Linux 2.6.7.
 | |
| 
 | |
| 2.0-ALPHA	21 MAY 2004	Filesystem changes and compression improvements
 | |
| 
 | |
| 	1. Squashfs 2.0 has added the concept of fragment blocks.
 | |
|            Files smaller than the file block size and optionally the
 | |
| 	   remainder of files that do not fit fully into a block (i.e. the
 | |
| 	   last 32K in a 96K file) are packed into shared fragments and
 | |
| 	   compressed together.  This achieves on average 5 - 20% better
 | |
| 	   compression than Squashfs 1.x.
 | |
| 	2. The maximum block size has been increased to 64K (in the ALPHA
 | |
| 	   version of Squashfs 2.0).
 | |
| 	3. The maximum number of UIDs has been increased to 256 (from 48 in
 | |
| 	   1.x).
 | |
| 	4. The maximum number of GIDs has been increased to 256 (from 15 in
 | |
| 	   1.x).
 | |
| 	5. Removal of sleep_on() function call in 2.6.x patch, to allow Squashfs
 | |
| 	   to work on the Fedora rc2 kernel.
 | |
| 	6. Numerous small bug fixes have been made.
 | |
| 
 | |
| 1.3r3	18 JAN 2004	Third release of 1.3, this adds a new mksquashfs option,
 | |
| 			some bug fixes, and extra patches for new kernels
 | |
| 
 | |
| 	1. New mksquashfs -ef exclude option.  This option reads the exclude
 | |
| 	   dirs/files from an exclude file, one exclude dir/file per line.  This
 | |
| 	   avoids the command line size limit when using the -e exclude option,
 | |
| 	2. When appending to existing filesystems, if mksquashfs experiences a
 | |
| 	   fatal error (e.g. out of space when adding to the destination), the
 | |
| 	   original filesystem is restored,
 | |
| 	3. Mksquashfs now builds standalone, without the kernel needing to be
 | |
| 	   patched.
 | |
| 	4. Bug fix in the kernel squashfs filesystem, where the pages being
 | |
| 	   filled were not kmapped.  This seems to only have caused problems
 | |
| 	   on an Apple G5,
 | |
| 	5. New patch for Linux 2.4.24,
 | |
| 
 | |
| 	6. New patch for Linux 2.6.1, this replaces the patch for 2.6.0-test7.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| 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.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.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.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.
 | |
| 
 | |
| 1.0c 	14 NOV 2002	Bug fix release
 | |
| 
 | |
| 	Fixed bugs with initrds and device nodes
 | |
| 
 | |
| 1.0 	23 OCT 2002	Initial release
 |