diff options
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 914 |
1 files changed, 914 insertions, 0 deletions
@@ -0,0 +1,914 @@ + SQUASHFS CHANGE LOG + +4.6.1 25 MAR 2023 Bug fix release to fix race condition and XATTRs + code + + 1. Race condition which can cause corruption of the "fragment table" + fixed. This is a regression introduced in August 2022, and it has + been seen when tailend packing is used (-tailends option). + 2. Fix build failure when the tools are being built without extended + attribute (XATTRs) support. + 3. Fix XATTR error message when an unrecognised prefix is found + (Christian Hesse). + 4. Fix incorrect free of pointer when an unrecognised XATTR prefix is + found. + + +4.6 17 MAR 2023 Major improvements in extended attribute handling, + pseudo file handling, and miscellaneous new options and + improvements + + 1. Extended attribute handling improved in Mksquashfs and Sqfstar + + 1.1.New -xattrs-exclude option to exclude extended attributes + from files using a regular expression. + 1.2 New -xattrs-include option to include extended attributes + from files using a regular expression. + 1.3 New -xattrs-add option to add extended attributes to files. + 1.4 New Pseudo file xattr definition to add extended attributes + to files. + 1.5 New xattrs-add Action to add extended attributes to files + (Mksquashfs only). + + 2. Extended attribute handling improved in Unsquashfs + + 2.1 New -xattrs-exclude option to exclude extended attributes + from files using a regular expression. + 2.2 New -xattrs-include option to include extended attributes + from files using a regular expression. + 2.3 Extended attributes are now supported in Pseudo file output. + + 3. Other major improvements + + 3.1 Unsquashfs can now output Pseudo files to standard out. + 3.2 Mksquashfs can now input Pseudo files from standard in. + 3.3 Squashfs filesystems can now be converted (different block + size compression etc) without unpacking to an intermediate + filesystem or mounting, by piping the output of Unsquashfs + to Mksquashfs. + 3.4 Pseudo files are now supported by Sqfstar. + 3.5 "Non-anchored" excludes are now supported by Unsquashfs. + + 4. Mksquashfs minor improvements + + 4.1 A new -max-depth option has been added, which limits + the depth Mksquashfs descends when creating the filesystem. + 4.2 A new -mem-percent option which allows memory for caches to + be specified as a percentage of physical RAM, rather than + requiring an absolute value. + 4.3 A new -percentage option added which rather than generating + the full progress-bar instead outputs a percentage. This + can be used with dialog --gauge etc. + 4.4 -mkfs-time, -all-time and -root-time options now take + a human date string, in addition to the seconds since + the epoch of 1970 00:00 UTC. For example "now", + "last week", "Wed Mar 8 05:55:01 GMT 2023" are supported. + 4.5 -root-uid, -root-gid, -force-uid and -force-gid options now + take a user/group name in addition to the integer uid/gid. + 4.6 A new -mem-default option which displays default memory + usage for caches in Mbytes. + 4.7 A new -no-compression option which produces no compression, + and it is a short-cut for -noI, -noD, -noF and -noX. + 4.8 A new -pseudo-override option which makes pseudo file uids + and gids override -all-root, -force-uid and -force-gid + options. Normally these options take precedence. + + 5. Unsquashfs minor improvements + + 5.1 New -all-time option which sets all file timestamps to + <time>, rather than the time stored in the filesystem + inode. <time> can be an integer indicating seconds since + the epoch (1970-01-01) or a human string value such as + "now", "last week", or "Wed Feb 15 21:02:39 GMT 2023". + 5.2 New -full-precision option which uses full precision when + displaying times including seconds. Use with -linfo, -lls, + -lln and -llc options. + 5.3 New -match option where Unsquashfs will abort if any + extract file does not match on anything, and can not be + resolved. + 5.4 New -percentage option added which rather than generating + the full progress-bar instead outputs a percentage. This + can be used with dialog --gauge etc. + + 6. Sqfstar minor improvements + + 6.1 A new -ignore-zeros option added which allows tar files to + be concatenated together and fed to Sqfstar. Normally a + tarfile has two consecutive 512 byte blocks filled with + zeros which means EOF and Sqfstar will stop reading after + the first tar file on encountering them. This option makes + Sqfstar ignore the zero filled blocks. + 6.2 A new -mem-percent option which allows memory for caches to + be specified as a percentage of physical RAM, rather than + requiring an absolute value. + 6.3 A new -percentage option added which rather than generating + the full progress-bar instead outputs a percentage. This + can be used with dialog --gauge etc. + 6.4 -mkfs-time, -all-time and -root-time options now take + a human date string, in addition to the seconds since + the epoch of 1970 00:00 UTC. For example "now", + "last week", "Wed Mar 8 05:55:01 GMT 2023" are supported. + 6.5 -root-uid, -root-gid, -force-uid and -force-gid options now + take a user/group name in addition to the integer uid/gid. + 6.6 A new -mem-default option which displays default memory + usage for caches in Mbytes. + 6.7 A new -no-compression option which produces no compression, + and it is a short-cut for -noI, -noD, -noF and -noX. + 6.8 A new -pseudo-override option which makes pseudo file uids + and gids override -all-root, -force-uid and -force-gid + options. Normally these options take precedence. + 6.9 Do not abort if ZERO filled blocks indicating end of the + TAR archive are missing. + + 7. Other minor improvements + + 7.1 If Mksquashfs/Unsquashfs fails to execute generating the + manpages because they have been cross-compiled, fall back + to using the pre-built manpages. + 7.2 Add new Makefile configure option USE_PREBUILT_MANPAGES + to always use pre-built manpages rather than generating + them when "make install" is run. + + 8. Major bug fixes + + 8.1 Following a symlink in Sqfscat or where -follow-symlinks + option is given with Unsquashfs, incorrectly triggered the + corrupted filesystem loop detection code. + 8.2 In Unsquashfs if a file was not writable it could not add + extended attributes to it. + 8.3 Sqfstar would incorrectly reject compressor specific + options that have an argument. + 8.4 Sqfstar would incorrectly strip pathname components in PAX + header linkpath if symbolic. + 8.5 Sqfstar -root-uid, -root-gid and -root-time options were + documented but not implemented. + 8.6 Mksquashfs -one-file-system option would not create empty + mount point directory when filesystem boundary crossed. + 8.7 Mksquashfs did not check the close() return result. + + +4.5.1 17 MAR 2022 New Manpages, Fix CVE-2021-41072 and miscellaneous + improvements and bug fixes + + 1. Major improvements + + 1.1 This release adds Manpages for Mksquashfs(1), Unsquashfs(1), + Sqfstar(1) and Sqfscat(1). + 1.2 The -help text output from the utilities has been improved + and extended as well (but the Manpages are now more + comprehensive). + 1.3 CVE-2021-41072 which is a writing outside of destination + exploit, has been fixed. + + 2. Minor improvements + + 2.1 The number of hard-links in the filesystem is now also + displayed by Mksquashfs in the output summary. + 2.2 The number of hard-links written by Unsquashfs is now + also displayed in the output summary. + 2.3 Unsquashfs will now write to a pre-existing destination + directory, rather than aborting. + 2.4 Unsquashfs now allows "." to used as the destination, to + extract to the current directory. + 2.5 The Unsquashfs progress bar now tracks empty files and + hardlinks, in addition to data blocks. + 2.6 -no-hardlinks option has been implemented for Sqfstar. + 2.7 More sanity checking for "corrupted" filesystems, including + checks for multiply linked directories and directory loops. + 2.8 Options that may cause filesystems to be unmountable have + been moved into a new "experts" category in the Mksquashfs + help text (and Manpage). + + 3. Bug fixes + + 3.1 Maximum cpiostyle filename limited to PATH_MAX. This + prevents attempts to overflow the stack, or cause system + calls to fail with a too long pathname. + 3.2 Don't always use "max open file limit" when calculating + length of queues, as a very large file limit can cause + Unsquashfs to abort. Instead use the smaller of max open + file limit and cache size. + 3.3 Fix Mksquashfs silently ignoring Pseudo file definitions + when appending. + 3.4 Don't abort if no XATTR support has been built in, and + there's XATTRs in the filesystem. This is a regression + introduced in 2019 in Version 4.4. + 3.5 Fix duplicate check when the last file block is sparse. + + +4.5 22 JUL 2021 Major improvements including: Actions, Sqfstar, + tar and cpio style reading of input sources, Sqfscat + + 1. Mksquashfs improvements + + 1.1 Mksquashfs now supports "Actions". These are modelled on + "find" and allow compression, fragment packing, file + exclusion and file attributes to be changed. + 1.2 New sqfstar command which will create a Squashfs image from + a tar archive. + 1.3 Tar style handling of source pathnames in Mksquashfs. + 1.4 Cpio style handling of source pathnames in Mksquashfs. + 1.5 New option to throttle the amount of CPU and I/O. + 1.6 New Pseudo file definitions which support timestamps. + 1.7 New Pseudo file definitions to create File references. + 1.8 New Pseudo file definitions to create Sockets/Fifos. + 1.9 Mksquashfs now allows no source directory to be specified. + 1.10 New Pseudo file "R" definition which allows a Regular file + to be created with data stored within the Pseudo file. + + 2. Major improvements in Unsquashfs + + 2.1 Sqfscat command which outputs files to stdout. + 2.2 Symbolic links are now followed in extract files (using + -follow-symlinks or -missing-symlinks). + 2.3 Unsquashfs now supports "exclude" files. + 2.4 Max depth traversal option added. + 2.5 Unsquashfs can now output a "Pseudo file" representing the + input Squashfs filesystem. + + 3. Minor improvements and bug fixes + + 3.1 The progress bar is now displayed and updated whilst the + input is being scanned. + 3.2 New -one-file-system option in Mksquashfs. + 3.3 New -no-hardlinks option in Mksquashfs. + 3.4 New -help options in Mksquashfs and Unsquashfs which output + to standard out. + 3.5 New -root-uid option in Mksquashfs. + 3.6 New -root-gid option in Mksquashfs. + 3.7 New -root-time option in Mksquashfs. + 3.8 -no-exit-code option added to Unsquashfs which makes it + not output an error exit code. + 3.9 Exit code in Unsquashfs changed to distinguish between + non-fatal errors (exit 2), and fatal errors (exit 1). + 3.10 Mksquashfs when appending, now writes the recovery file to + the home directory, rather than the current directory. + 3.11 New -recovery-path <name> option. + 3.12 Xattr id count added in Unsquashfs "-stat" output. + 3.13 Unsquashfs "write outside directory" exploit fixed. + 3.14 Error handling in Unsquashfs writer thread fixed. + 3.15 Fix failure to truncate destination if appending aborted. + 3.16 Prevent Mksquashfs reading the destination file. + +4.4 29 AUG 2019 Reproducible builds, new compressors, + CVE fixes, security hardening and new options + for Mksquashfs/Unsquashfs. + + 1. Overall improvements: + + 1.1 Mksquashfs now generates reproducible images by default. + 1.2 Mkfs time and file timestamps can also be specified. + 1.3 Support for the Zstandard (ZSTD) compression algorithm. + 1.4 CVE-2015-4645 and CVE-2015-4646 have been fixed. + + 2. Mksquashfs improvements and major bug fixes: + + 2.1 Pseudo files now support symbolic links. + 2.2 New -mkfs-time option. + 2.3 New -all-time option. + 2.4 New -root-mode option. + 2.5 New -quiet option. + 2.6 New -noId option. + 2.7 New -offset option. + 2.8 Update lz4 wrapper to use new functions introduced + in 1.7.0. + 2.9 Bug fix, don't allow "/" pseudo filenames. + 2.10 Bug fix, allow quoting of pseudo files, to + better handle filenames with spaces. + 2.11 Fix compilation with glibc 2.25+. + + 3. Unsquashfs improvements and major bug fixes: + + 3.1 CVE-2015-4645 and CVE-2015-4646 have been fixed. + 3.2 Unsquashfs has been further hardened against corrupted + filestems. + 3.3 Unsquashfs is now more strict about error handling. + 3.4 New -ignore-errors option. + 3.5 New -strict-errors option. + 3.6 New -lln[umeric] option. + 3.7 New -lc option. + 3.8 New -llc option. + 3.9 New -mkfs-time option. + 3.10 New -UTC option. + 3.11 New -offset option. + 3.12 New -quiet option. + 3.13 Update lz4 wrapper to use new functions introduced + in 1.7.0. + 3.14 Bug fix, fatal and non-fatal errors now set the exit + code to 1. + 3.15 Bug fix, fix time setting for symlinks. + 3.16 Bug fix, try to set sticky-bit when running as a + user process. + 3.17 Fix compilation with glibc 2.25+. + +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 |