Phillip Lougher | e162193 | 2014-08-08 05:30:01 +0100 | [diff] [blame] | 1 | SQUASHFS CHANGE LOG |
Phillip Lougher | 676fcce | 2014-08-08 21:27:38 +0100 | [diff] [blame] | 2 | |
Phillip Lougher | 0254342 | 2014-08-08 22:10:59 +0100 | [diff] [blame] | 3 | 4.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 | |
Phillip Lougher | a650bcc | 2014-08-08 22:02:51 +0100 | [diff] [blame] | 106 | 4.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 | |
Phillip Lougher | bef677b | 2014-08-08 21:59:19 +0100 | [diff] [blame] | 135 | 4.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 | |
Phillip Lougher | 06034ad | 2014-08-08 21:56:15 +0100 | [diff] [blame] | 162 | 4.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 | |
Phillip Lougher | 1918283 | 2014-08-08 21:49:25 +0100 | [diff] [blame] | 187 | 3.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 | |
Phillip Lougher | 13b3f39 | 2014-08-08 21:46:45 +0100 | [diff] [blame] | 228 | 3.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 | |
Phillip Lougher | 3958c82 | 2014-08-08 21:44:03 +0100 | [diff] [blame] | 291 | 3.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 | |
Phillip Lougher | d48c9e3 | 2014-08-08 21:34:13 +0100 | [diff] [blame] | 298 | 3.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 | |
Phillip Lougher | 9999810 | 2014-08-08 21:29:29 +0100 | [diff] [blame] | 317 | 3.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 | |
Phillip Lougher | 676fcce | 2014-08-08 21:27:38 +0100 | [diff] [blame] | 322 | 3.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. |
Phillip Lougher | 68c7c8a | 2014-08-08 21:11:34 +0100 | [diff] [blame] | 349 | |
Phillip Lougher | 676fcce | 2014-08-08 21:27:38 +0100 | [diff] [blame] | 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 | |
Phillip Lougher | 2bb7423 | 2014-08-08 21:24:28 +0100 | [diff] [blame] | 385 | 3.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 | |
Phillip Lougher | accd832 | 2014-08-08 21:20:45 +0100 | [diff] [blame] | 403 | 2.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 | |
Phillip Lougher | 5f69230 | 2014-08-08 21:18:11 +0100 | [diff] [blame] | 420 | 2.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 | |
Phillip Lougher | 68c7c8a | 2014-08-08 21:11:34 +0100 | [diff] [blame] | 446 | 2.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. |
Phillip Lougher | e162193 | 2014-08-08 05:30:01 +0100 | [diff] [blame] | 453 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 454 | 2.1 10 DEC 2004 Significantly improved directory handling plus numerous |
| 455 | other smaller improvements |
Phillip Lougher | e162193 | 2014-08-08 05:30:01 +0100 | [diff] [blame] | 456 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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. |
Phillip Lougher | e162193 | 2014-08-08 05:30:01 +0100 | [diff] [blame] | 479 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 480 | 2.0r2 29 AUG 2004 Workaround for kernel bug in kernels 2.6.8 and newer |
| 481 | added |
Phillip Lougher | e162193 | 2014-08-08 05:30:01 +0100 | [diff] [blame] | 482 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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. |
Phillip Lougher | e162193 | 2014-08-08 05:30:01 +0100 | [diff] [blame] | 486 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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. |
Phillip Lougher | 8dc5c62 | 2014-08-08 05:35:27 +0100 | [diff] [blame] | 491 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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. |
Phillip Lougher | 8dc5c62 | 2014-08-08 05:35:27 +0100 | [diff] [blame] | 497 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 498 | 2.0 13 JULY 2004 A couple of new options, and some bug fixes |
Phillip Lougher | 2ce29a9 | 2014-08-08 05:44:57 +0100 | [diff] [blame] | 499 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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. |
Phillip Lougher | 8e7b9a6 | 2014-08-08 20:30:49 +0100 | [diff] [blame] | 510 | |
Phillip Lougher | c11f006 | 2014-08-08 20:39:26 +0100 | [diff] [blame] | 511 | 2.0-ALPHA 21 MAY 2004 Filesystem changes and compression improvements |
Phillip Lougher | 8e7b9a6 | 2014-08-08 20:30:49 +0100 | [diff] [blame] | 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. |
Phillip Lougher | c11f006 | 2014-08-08 20:39:26 +0100 | [diff] [blame] | 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). |
Phillip Lougher | 8e7b9a6 | 2014-08-08 20:30:49 +0100 | [diff] [blame] | 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. |
Phillip Lougher | c11f006 | 2014-08-08 20:39:26 +0100 | [diff] [blame] | 528 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 529 | 1.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 |
Phillip Lougher | c11f006 | 2014-08-08 20:39:26 +0100 | [diff] [blame] | 531 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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, |
Phillip Lougher | cfc2ea7 | 2014-08-08 20:44:49 +0100 | [diff] [blame] | 544 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 545 | 6. New patch for Linux 2.6.1, this replaces the patch for 2.6.0-test7. |
Phillip Lougher | cfc2ea7 | 2014-08-08 20:44:49 +0100 | [diff] [blame] | 546 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 547 | 1.3r2 14 OCT 2003 Second release of 1.3, bug fixes and extra patches for |
| 548 | new kernels |
Phillip Lougher | cfc2ea7 | 2014-08-08 20:44:49 +0100 | [diff] [blame] | 549 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 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. |
Phillip Lougher | cfc2ea7 | 2014-08-08 20:44:49 +0100 | [diff] [blame] | 560 | |
Phillip Lougher | fd0e08a | 2014-08-08 20:55:59 +0100 | [diff] [blame] | 561 | 1.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 | |
| 574 | 1.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 | |
| 589 | 1.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 | |
| 598 | 1.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 | |
| 609 | 1.0c 14 NOV 2002 Bug fix release |
| 610 | |
| 611 | Fixed bugs with initrds and device nodes |
| 612 | |
| 613 | 1.0 23 OCT 2002 Initial release |