1 SQUASHFS CHANGE LOG 2 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 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 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 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 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 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 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 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 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 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. 349 350 2. Unsquashfs has the following improvements 351 352 2.1 Unsquashfs now allows you to specify the filename or the 353 directory within the Squashfs filesystem that is to be 354 extracted, rather than always extracting the entire filesystem. 355 2.2 A new -force option has been added which forces Unsquashfs to 356 output to the destination directory even if files and directories 357 already exist in the destination directory. This allows you to 358 update an already existing directory tree, or to Unsquashfs to 359 a partially filled directory tree. Without the -force option 360 Unsquashfs will refuse to output. 361 362 3. The following major bug fixes have been made 363 364 3.1 A fragment table rounding bug has been fixed in Mksquashfs. 365 Previously if the number of fragments in the filesystem 366 were a multiple of 512, Mksquashfs would generate an 367 incorrect filesystem. 368 3.2 A rare SMP bug which occurred when simultaneously acccessing 369 multiply mounted Squashfs filesystems has been fixed. 370 371 4. Miscellaneous improvements/bug fixes 372 373 4.1 Kernel code stack usage has been reduced. This is to ensure 374 Squashfs works with 4K stacks. 375 4.2 Readdir (Squashfs kernel code) has been fixed to always 376 return 0, rather than the number of directories read. Squashfs 377 should now interact better with NFS. 378 4.3 Lseek bug in Mksquashfs when appending to larger than 4GB 379 filesystems fixed. 380 4.4 Squashfs 2.x initrds can now been mounted. 381 4.5 Unsquashfs exit status fixed. 382 4.6 New patches for linux-2.6.18 and linux-2.4.33. 383 384 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 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 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 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. 453 454 2.1 10 DEC 2004 Significantly improved directory handling plus numerous 455 other smaller improvements 456 457 1. Fast indexed directories implemented. These speed up directory 458 operations (ls, file lookup etc.) significantly for directories 459 larger than 8 KB. 460 2. All directories are now sorted in alphabetical order. This again 461 speeds up directory operations, and in some cases it also results in 462 a small compression improvement (greater data similarity between 463 files with alphabetically similar names). 464 3. Maximum directory size increased from 512 KB to 128 MB. 465 4. Duplicate fragment checking and appending optimised in mksquashfs, 466 depending on filesystem, this is now up to 25% faster. 467 5. Mksquashfs help information reformatted and reorganised. 468 6. The Squashfs version and release date is now printed at kernel 469 boot-time or module insertion. This addition will hopefully help 470 to reduce the growing problem where the Squashfs version supported 471 by a kernel is unknown and the kernel source is unavailable. 472 7. New PERFORMANCE.README file. 473 8. New -2.0 mksquashfs option. 474 9. CHANGES file reorganised. 475 10. README file reorganised, clarified and updated to include the 2.0 476 mksquashfs options. 477 11. New patch for Linux 2.6.9. 478 12. New patch for Linux 2.4.28. 479 480 2.0r2 29 AUG 2004 Workaround for kernel bug in kernels 2.6.8 and newer 481 added 482 483 1. New patch for kernel 2.6.8.1. This includes a workaround for a 484 kernel bug introduced in 2.6.7bk14, which is present in all later 485 versions of the kernel. 486 487 If you're using a 2.6.8 kernel or later then you must use this 488 2.6.8.1 patch. If you've experienced hangs or oopses using Squashfs 489 with a 2.6.8 or later kernel then you've hit this bug, and this 490 patch will fix it. 491 492 It is worth mentioning that this kernel bug potentially affects 493 other filesystems. If you receive odd results with other 494 filesystems you may be experiencing this bug with that filesystem. 495 I submitted a patch but this has not yet gone into the 496 kernel, hopefully the bug will be fixed in later kernels. 497 498 2.0 13 JULY 2004 A couple of new options, and some bug fixes 499 500 1. New mksquashfs -all-root, -root-owned, -force-uid, and -force-gid 501 options. These allow the uids/gids of files in the generated 502 filesystem to be specified, overriding the uids/gids in the 503 source filesystem. 504 2. Initrds are now supported for kernels 2.6.x. 505 3. amd64 bug fixes. If you use an amd64, please read the README-AMD64 506 file. 507 4. Check-data and gid bug fixes. With 2.0-alpha when mounting 1.x 508 filesystems in certain cases file gids were corrupted. 509 5. New patch for Linux 2.6.7. 510 511 2.0-ALPHA 21 MAY 2004 Filesystem changes and compression improvements 512 513 1. Squashfs 2.0 has added the concept of fragment blocks. 514 Files smaller than the file block size and optionally the 515 remainder of files that do not fit fully into a block (i.e. the 516 last 32K in a 96K file) are packed into shared fragments and 517 compressed together. This achieves on average 5 - 20% better 518 compression than Squashfs 1.x. 519 2. The maximum block size has been increased to 64K (in the ALPHA 520 version of Squashfs 2.0). 521 3. The maximum number of UIDs has been increased to 256 (from 48 in 522 1.x). 523 4. The maximum number of GIDs has been increased to 256 (from 15 in 524 1.x). 525 5. Removal of sleep_on() function call in 2.6.x patch, to allow Squashfs 526 to work on the Fedora rc2 kernel. 527 6. Numerous small bug fixes have been made. 528 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 531 532 1. New mksquashfs -ef exclude option. This option reads the exclude 533 dirs/files from an exclude file, one exclude dir/file per line. This 534 avoids the command line size limit when using the -e exclude option, 535 2. When appending to existing filesystems, if mksquashfs experiences a 536 fatal error (e.g. out of space when adding to the destination), the 537 original filesystem is restored, 538 3. Mksquashfs now builds standalone, without the kernel needing to be 539 patched. 540 4. Bug fix in the kernel squashfs filesystem, where the pages being 541 filled were not kmapped. This seems to only have caused problems 542 on an Apple G5, 543 5. New patch for Linux 2.4.24, 544 545 6. New patch for Linux 2.6.1, this replaces the patch for 2.6.0-test7. 546 547 1.3r2 14 OCT 2003 Second release of 1.3, bug fixes and extra patches for 548 new kernels 549 550 1. Bug fix in routine that adds files to the filesystem being 551 generated in mksquashfs. This bug was introduced in 1.3 552 (not enough testing...) when I rewrote it to handle files larger 553 than available memory. This bug caused a SEGV, so if you've ever 554 got that, it is now fixed, 555 2. Long running bug where ls -s and du reported wrong block size 556 fixed. I'm pretty sure this used to work many kernel versions ago 557 (2.4.7) but it broke somewhere along the line since then, 558 3. New patch for Linux 2.4.22, 559 4. New patch for 2.6.0-test7, this replaces the patch for 2.6.0-test1. 560 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 614