OSDN Git Service

Fix no pic
[uclinux-h8/uClinux-dist.git] / user / squashfs-new / CHANGES
1                         SQUASHFS CHANGE LOG
2
3 4.2     28 FEB 2011     XZ compression, and compression options support
4
5         1. Filesystem improvements:
6
7             1.1 Added XZ compression
8             1.2 Added compression options support
9
10         2. Miscellaneous improvements/bug fixes
11
12             1.1 Add missing NO_XATTR filesystem flag to indicate no-xattrs
13                 option was specified and no xattrs should be stored when
14                 appending.
15             1.2 Add suppport in Unquashfs -stat option for displaying
16                 NO_XATTR flag.
17             1.3 Remove checkdata entry from Unsquashfs -stat option if a 4.0
18                 filesystem - checkdata is no longer supported.
19             1.4 Fix appending bug when appending to an empty filesystem - this
20                 would be incorrectly treated as an error.
21             1.5 Use glibc sys/xattr.h include rather than using attr/xattr.h
22                 which isn't present by default on some distributions.
23             1.6 Unsquashfs, fix block calculation error with regular files when
24                 file size is between 2^32-block_size+1 and 2^32-1.
25             1.7 Unsquashfs, fix sparse file writing when holes are larger than
26                 2^31-1.
27             1.8 Add external CFLAGS and LDFLAGS support to Makefile, and allow
28                 build options to be specified on command line.  Also don't
29                 over-write passed in CFLAGS definition.
30         
31
32 4.1     19 SEPT 2010    Major filesystem and tools improvements
33
34         1. Filesystem improvements:
35
36             1.1 Extended attribute support
37             1.2 New compression framework
38             1.3 Support for LZO compression
39             1.4 Support for LZMA compression (not yet in mainline)
40
41         2. Mksquashfs improvements:
42
43             1.1 Enhanced pseudo file support
44             1.2 New options for choosing compression algorithm used
45             1.3 New options for controlling extended attributes
46             1.4 Fix misalignment issues with memcpy etc. seen on ARM
47             1.5 Fix floating point error in progress_bar when max == 0
48             1.6 Removed use of get_nproc() call unavailable in ulibc
49             1.7 Reorganised help text
50           
51         3. Unsquashfs improvements:
52
53             1.1 New options for controlling extended attributes
54             1.2 Fix misalignment issues with memcpy etc. seen on ARM
55             1.3 Fix floating point error in progress_bar when max == 0
56             1.4 Removed use of get_nproc() call unavailable in ulibc
57
58           
59 4.0     5 APR 2009      Major filesystems improvements
60
61         1. Kernel code improvements:
62
63             1.1 Fixed little endian layout adopted.  All swapping macros
64                 removed, and in-line swapping added for big-endian
65                 architectures.
66             1.2 Kernel code substantially improved and restructured.
67             1.3 Kernel code split into separate files along functional lines.
68             1.4 Vmalloc usage removed, and code changed to use separately
69                 allocated 4K buffers
70
71         2. Unsquashfs improvements:
72
73             2.1 Support for 4.0 filesystems added.
74             2.2 Swapping macros rewritten.
75             2.3 Unsquashfs code restructured and split into separate files.
76
77         3. Mksquashfs improvements:
78
79             3.1 Swapping macros rewritten.  Fixed little-endian layout allows
80                 code to be optimised and only added at compile time for
81                 big endian systems.
82             3.2 Support for pseudo files added.
83          
84 3.4     26 AUG 2008     Performance improvements to Unsquashfs, Mksquashfs
85                         and the kernel code.  Plus many small bug fixes.
86
87         1. Kernel code improvements:
88
89             1.1 Internal Squashfs kernel metadata and fragment cache
90                 implementations have been merged and optimised.  Spinlocks are
91                 now used, locks are held for smaller periods and wakeups have
92                 been minimised.  Small race condition fixed where if two or
93                 more processes tried to read the same cache block
94                 simultaneously they would both read and decompress it.  10-20%+
95                 speed improvement has been seen on tests.
96             1.2 NFS export code rewritten following VFS changes in
97                 linux-2.6.24.
98             1.3 New patches for linux-2.6.25, linux-2.6.26, and linux-2.6.27.
99                 Fixed patch for linux-2.6.24.
100             1.4 Fixed small buffer_head leak in squashfs_read_data when
101                 handling badly corrupted filesystems.
102             1.5 Fixed bug in get_dir_index_using_offset.
103
104         2. Unsquashfs improvements:
105
106             2.1 Unsquashfs has been parallelised.  Filesystem reading, writing
107                 and decompression is now multi-threaded.  Up to 40% speed
108                 improvement seen on tests.
109             2.2 Unsquashfs now has a progress bar.  Use -no-progress to
110                 disable it.
111             2.3 Fixed small bug where unistd.h wasn't being included on
112                 some distributions, leading to lseek being used rather than
113                 lseek64 - which meant on these distributions Unsquashfs
114                 couldn't unsquash filesystems larger than 4GB.
115
116        3. Mksquashfs improvements:
117
118             3.1 Removed some small remaining parallelisation bottlenecks.
119                 Depending on source filesystem, up to 10%+ speed improvement.
120             3.2 Progress bar improved, and moved to separate thread.
121             3.3 Sparse file handling bug in Mksquashfs 3.3 fixed.
122             3.4 Two rare appending restore bugs fixed (when ^C hit twice).
123
124
125 3.3     1 NOV 2007      Increase in block size, sparse file support,
126                         Mksquashfs and Unsquashfs extended to use
127                         pattern matching in exclude/extract files, plus
128                         many more improvements and bug fixes.
129
130         1. Filesystem improvements:
131
132              1.1. Maximum block size has been increased to 1Mbyte, and the
133                   default block size has been increased to 128 Kbytes.
134                   This improves compression.
135
136              1.2. Sparse files are now supported.  Sparse files are files
137                   which have large areas of unallocated data commonly called
138                   holes.  These files are now detected by Squashfs and stored
139                   more efficiently.  This improves compression and read
140                   performance for sparse files.
141
142         2. Mksquashfs improvements:
143
144            2.1.  Exclude files have been extended to use wildcard pattern
145                  matching and regular expressions.  Support has also been
146                  added for non-anchored excludes, which means it is
147                  now possible to specify excludes which match anywhere
148                  in the filesystem (i.e. leaf files), rather than always
149                  having to specify exclude files starting from the root
150                  directory (anchored excludes).
151
152            2.2.  Recovery files are now created when appending to existing
153                  Squashfs filesystems.  This allows the original filesystem
154                  to be recovered if Mksquashfs aborts unexpectedly
155                  (i.e. power failure).
156
157         3. Unsquashfs improvements:
158
159             3.1. Multiple extract files can now be specified on the
160                  command line, and the files/directories to be extracted can
161                  now also be given in a file.
162
163             3.2. Extract files have been extended to use wildcard pattern
164                  matching and regular expressions.
165
166             3.3. Filename printing has been enhanced and Unquashfs can
167                  now display filenames with file attributes
168                  ('ls -l' style output).
169
170             3.4. A -stat option has been added which displays the filesystem
171                  superblock information.
172
173             3.5. Unsquashfs now supports 1.x filesystems.
174
175         4. Miscellaneous improvements/bug fixes:
176
177             4.1. Squashfs kernel code improved to use SetPageError in
178                  squashfs_readpage() if I/O error occurs.
179
180             4.2. Fixed Squashfs kernel code bug preventing file
181                  seeking beyond 2GB.
182
183             4.3. Mksquashfs now detects file size changes between
184                  first phase directory scan and second phase filesystem create.
185                  It also deals better with file I/O errors.
186
187
188 3.2-r2  15 JAN 2007     Kernel patch update and progress bar bug fix
189
190         1. Kernel patches 2.6.19/2.6.20 have been updated to use
191            const structures and mutexes rather than older semaphores.
192         2. Minor SMP bug fixes.
193         3. Progress bar broken on x86-64.  Fixed.
194
195 3.2     2 JAN 2007      NFS support, improvements to the Squashfs-tools, major
196                         bug fixes, lots of small improvements/bug fixes, and new
197                         kernel patches.
198
199         Improvements:
200
201         1. Squashfs filesystems can now be exported via NFS.
202         2. Unsquashfs now supports 2.x filesystems.
203         3. Mksquashfs now displays a progress bar.
204         4. Squashfs kernel code has been hardened against accidently or
205            maliciously corrupted Squashfs filesystems.
206
207         Bug fixes:
208
209         5. Race condition occurring on S390 in readpage() fixed.
210         6. Odd behaviour of MIPS memcpy in read_data() routine worked-around.
211         7. Missing cache_flush in Squashfs symlink_readpage() added.
212         
213
214 3.1-r2  30 AUG 2006     Mksquashfs -sort bug fix
215
216                         A code optimisation after testing unfortunately
217                         broke sorting in Mksquashfs.  This has been fixed.
218
219 3.1     19 AUG 2006     This release has some major improvements to
220                         the squashfs-tools, a couple of major bug
221                         fixes, lots of small improvements/bug fixes,
222                         and new kernel patches.
223
224                         
225         1. Mksquashfs has been rewritten to be multi-threaded.  It
226            has the following improvements
227
228            1.1. Parallel compression.  By default as many compression and
229                 fragment compression threads are created as there are available
230                 processors.  This significantly speeds up performance on SMP
231                 systems.
232            1.2. File input and filesystem output is peformed in parallel on
233                 separate threads to maximise I/O performance.  Even on single
234                 processor systems this speeds up performance by at least 10%.
235            1.3. Appending has been significantly improved, and files within the
236                 filesystem being appended to are no longer scanned and
237                 checksummed.  This significantly improves append time for large
238                 filesystems.
239            1.4. File duplicate checking has been optimised, and split into two
240                 separate phases.  Only files which are considered possible
241                 duplicates after the first phase are checksummed and cached in
242                 memory.
243            1.5  The use of swap memory was found to significantly impact
244                 performance. The amount of memory used to cache files is now a
245                 command line option, by default this is 512 Mbytes.
246  
247         2. Unsquashfs has the following improvements
248
249            2.1  Unsquashfs now allows you to specify the filename or the
250                 directory within the Squashfs filesystem that is to be
251                 extracted, rather than always extracting the entire filesystem.
252            2.2  A new -force option has been added which forces Unsquashfs to
253                 output to the destination directory even if files and directories
254                 already exist in the destination directory.  This allows you to
255                 update an already existing directory tree, or to Unsquashfs to
256                 a partially filled directory tree.  Without the -force option
257                 Unsquashfs will refuse to output.
258
259         3.  The following major bug fixes have been made
260
261           3.1   A fragment table rounding bug has been fixed in Mksquashfs.
262                 Previously if the number of fragments in the filesystem
263                 were a multiple of 512, Mksquashfs would generate an
264                 incorrect filesystem.
265           3.2   A rare SMP bug which occurred when simultaneously acccessing
266                 multiply mounted Squashfs filesystems has been fixed.
267
268         4. Miscellaneous improvements/bug fixes
269
270           4.1   Kernel code stack usage has been reduced.  This is to ensure
271                 Squashfs works with 4K stacks.
272           4.2   Readdir (Squashfs kernel code) has been fixed to always
273                 return 0, rather than the number of directories read.  Squashfs
274                 should now interact better with NFS.
275           4.3   Lseek bug in Mksquashfs when appending to larger than 4GB
276                 filesystems fixed.
277           4.4   Squashfs 2.x initrds can now been mounted.
278           4.5   Unsquashfs exit status fixed.
279           4.6   New patches for linux-2.6.18 and linux-2.4.33.
280
281         
282 3.0     15 MAR 2006     Major filesystem improvements
283
284         1. Filesystems are no longer limited to 4 GB.  In
285            theory 2^64 or 4 exabytes is now supported.
286         2. Files are no longer limited to 4 GB.  In theory the maximum
287            file size is 4 exabytes.
288         3. Metadata (inode table and directory tables) are no longer
289            restricted to 16 Mbytes.
290         4. Hardlinks are now suppported.
291         5. Nlink counts are now supported.
292         6. Readdir now returns '.' and '..' entries.
293         7. Special support for files larger than 256 MB has been added to
294            the Squashfs kernel code for faster read access.
295         8. Inode numbers are now stored within the inode rather than being
296            computed from inode location on disk (this is not so much an
297            improvement, but a change forced by the previously listed
298            improvements).
299
300 2.2-r2  8 SEPT 2005     Second release of 2.2, this release fixes a couple
301                         of small bugs, a couple of small documentation
302                         mistakes, and adds a patch for kernel 2.6.13. 
303
304         1. Mksquashfs now deletes the output filesystem image file if an
305            error occurs whilst generating the filesystem.  Previously on
306            error the image file was left empty or partially written.
307         2. Updated mksquashfs so that it doesn't allow you to generate
308            filesystems with block sizes smaller than 4K.  Squashfs hasn't
309            supported block sizes less than 4K since 2.0-alpha.
310         3. Mksquashfs now ignores missing files/directories in sort files.
311            This was the original behaviour before 2.2.
312         4. Fixed small mistake in fs/Kconfig where the version was still
313            listed as 2.0.
314         5. Updated ACKNOWLEDGEMENTS file.
315
316
317 2.2     3 JUL 2005      This release has some small improvements, bug fixes
318                         and patches for new kernels.
319
320         1. Sort routine re-worked and debugged from release 2.1.  It now allows
321            you to give Mkisofs style sort files and checks for filenames that
322            don't match anything.  Sort priority has also been changed to
323            conform to Mkisofs usage, highest priority files are now placed
324            at the start of the filesystem (this means they will be on the
325            inside of a CD or DVD).
326         2. New Configure options for embedded systems (memory constrained
327            systems).  See INSTALL file for further details.
328         3. Directory index bug fixed where chars were treated as signed on
329            some architectures.  A file would not be found in the rare case
330            that the filename started with a chracter greater than 127.
331         4. Bug introduced into the read_data() routine when sped up to use data
332            block queueing fixed.  If the second or later block resulted in an
333            I/O error this was not checked.
334         5. Append bug introduced in 2.1 fixed.  The code to compute the new
335            compressed and uncompressed directory parts after appending was
336            wrong.
337         6. Metadata block length read routine altered to not perform a
338            misaligned short read.  This was to fix reading on an ARM7 running
339            uCLinux without a misaligned read interrupt handler.
340         7. Checkdata bug introduced in 2.1 fixed.
341         
342
343 2.1-r2  15 DEC 2004     Code changed so it can be compiled with gcc 2.x
344
345         1.  In some of the code added for release 2.1 I unknowingly used some
346             gcc extensions only supported by 3.x compilers.  I have received
347             a couple of reports that the 2.1 release doesn't build on 2.x and so
348             people are clearly still using gcc 2.x.  The code has been
349             rewritten to remove these extensions.
350
351 2.1     10 DEC 2004     Significantly improved directory handling plus numerous
352                         other smaller improvements
353
354         1.  Fast indexed directories implemented.  These speed up directory
355             operations (ls, file lookup etc.) significantly for directories
356             larger than 8 KB.
357         2.  All directories are now sorted in alphabetical order.  This again
358             speeds up directory operations, and in some cases it also results in
359             a small compression improvement (greater data similarity between
360             files with alphabetically similar names).
361         3.  Maximum directory size increased from 512 KB to 128 MB.
362         4.  Duplicate fragment checking and appending optimised in mksquashfs,
363             depending on filesystem, this is now up to 25% faster.
364         5.  Mksquashfs help information reformatted and reorganised.
365         6.  The Squashfs version and release date is now printed at kernel
366             boot-time or module insertion.  This addition will hopefully help
367             to reduce the growing problem where the Squashfs version supported
368             by a kernel is unknown and the kernel source is unavailable.
369         7.  New PERFORMANCE.README file.
370         8.  New -2.0 mksquashfs option.
371         9.  CHANGES file reorganised.
372         10. README file reorganised, clarified and updated to include the 2.0
373             mksquashfs options.
374         11. New patch for Linux 2.6.9.
375         12. New patch for Linux 2.4.28.
376
377 2.0r2   29 AUG 2004     Workaround for kernel bug in kernels 2.6.8 and newer
378                         added
379
380         1. New patch for kernel 2.6.8.1.  This includes a workaround for a
381            kernel bug introduced in 2.6.7bk14, which is present in all later
382            versions of the kernel.  
383
384            If you're using a 2.6.8 kernel or later then you must use this
385            2.6.8.1 patch.  If you've experienced hangs or oopses using Squashfs
386            with a 2.6.8 or later kernel then you've hit this bug, and this
387            patch will fix it.
388
389            It is worth mentioning that this kernel bug potentially affects
390            other filesystems.  If you receive odd results with other
391            filesystems you may be experiencing this bug with that filesystem.
392            I submitted a patch but this has not yet gone into the
393            kernel, hopefully the bug will be fixed in later kernels. 
394
395 2.0     13 JULY 2004    A couple of new options, and some bug fixes
396
397         1. New mksquashfs -all-root, -root-owned, -force-uid, and -force-gid
398            options.  These allow the uids/gids of files in the generated
399            filesystem to be specified, overriding the uids/gids in the
400            source filesystem.
401         2. Initrds are now supported for kernels 2.6.x.
402         3. amd64 bug fixes.  If you use an amd64, please read the README-AMD64
403            file.
404         4. Check-data and gid bug fixes.  With 2.0-alpha when mounting 1.x
405            filesystems in certain cases file gids were corrupted.
406         5. New patch for Linux 2.6.7.
407
408 2.0-ALPHA       21 MAY 2004     Filesystem changes and compression improvements
409
410         1. Squashfs 2.0 has added the concept of fragment blocks.
411            Files smaller than the file block size and optionally the
412            remainder of files that do not fit fully into a block (i.e. the
413            last 32K in a 96K file) are packed into shared fragments and
414            compressed together.  This achieves on average 5 - 20% better
415            compression than Squashfs 1.x.
416         2. The maximum block size has been increased to 64K (in the ALPHA
417            version of Squashfs 2.0).
418         3. The maximum number of UIDs has been increased to 256 (from 48 in
419            1.x).
420         4. The maximum number of GIDs has been increased to 256 (from 15 in
421            1.x).
422         5. Removal of sleep_on() function call in 2.6.x patch, to allow Squashfs
423            to work on the Fedora rc2 kernel.
424         6. Numerous small bug fixes have been made.
425
426 1.3r3   18 JAN 2004     Third release of 1.3, this adds a new mksquashfs option,
427                         some bug fixes, and extra patches for new kernels
428
429         1. New mksquashfs -ef exclude option.  This option reads the exclude
430            dirs/files from an exclude file, one exclude dir/file per line.  This
431            avoids the command line size limit when using the -e exclude option,
432         2. When appending to existing filesystems, if mksquashfs experiences a
433            fatal error (e.g. out of space when adding to the destination), the
434            original filesystem is restored,
435         3. Mksquashfs now builds standalone, without the kernel needing to be
436            patched.
437         4. Bug fix in the kernel squashfs filesystem, where the pages being
438            filled were not kmapped.  This seems to only have caused problems
439            on an Apple G5,
440         5. New patch for Linux 2.4.24,
441
442         6. New patch for Linux 2.6.1, this replaces the patch for 2.6.0-test7.
443
444 1.3r2   14 OCT 2003     Second release of 1.3, bug fixes and extra patches for
445                         new kernels
446
447         1. Bug fix in routine that adds files to the filesystem being
448            generated in mksquashfs.  This bug was introduced in 1.3
449            (not enough testing...) when I rewrote it to handle files larger
450            than available memory.  This bug caused a SEGV, so if you've ever
451            got that, it is now fixed,
452         2. Long running bug where ls -s and du reported wrong block size
453            fixed.  I'm pretty sure this used to work many kernel versions ago
454            (2.4.7) but it broke somewhere along the line since then,
455         3. New patch for Linux 2.4.22,
456         4. New patch for 2.6.0-test7, this replaces the patch for 2.6.0-test1.
457
458 1.3     29 JUL 2003     FIFO/Socket support added plus optimisations and
459                         improvements
460
461         1. FIFOs and Socket inodes are now supported,
462         2. Mksquashfs can now compress files larger than available
463            memory,
464         3. File duplicate check routine optimised,
465         4. Exit codes fixed in Mksquashfs,
466         5. Patch for Linux 2.4.21,
467         6. Patch for Linux 2.6.0-test1.  Hopefully, this will work for
468            the next few releases of 2.6.0-testx, otherwise, I'll be
469            releasing a lot of updates to the 2.6.0 patch...
470
471 1.2     13 MAR 2003     Append feature and new mksquashfs options added
472
473         Mksquashfs can now add to existing squashfs filesystems.  Three extra
474         options "-noappend", "-keep-as-directory", and "root-becomes"
475         have been added.
476
477         The append option with file duplicate detection, means squashfs can be
478         used as a simple versioning archiving filesystem. A squashfs
479         filesystem can be created with for example the linux-2.4.19 source.
480         Appending the linux-2.4.20 source will create a filesystem with the
481         two source trees, but only the changed files will take extra room,
482         the unchanged files will be detected as duplicates.
483
484         See the README file for usage changes.
485
486 1.1b    16 JAN 2003     Bug fix release
487
488         Fixed readpage deadlock bug.  This was a rare deadlock bug that
489         happened when pushing pages into the page cache when using greater
490         than 4K blocks.  I never got this bug when I tested the filesystem,
491         but two people emailed me on the same day about the problem!
492         I fixed it by using a page cache function that wasn't there when
493         I originally did the work, which was nice :-)
494
495 1.1     8 JAN 2003      Added features
496
497         1. Kernel squashfs can now mount different byte order filesystems.
498         2. Additional features added to mksquashfs.  Mksquashfs now supports
499            exclude files and multiple source files/directories can be
500            specified.  A nopad option has also been added, which
501            informs mksquashfs not to pad filesystems to a multiple of 4K.
502            See README for mksquashfs usage changes.
503         3. Greater than 2GB filesystems bug fix.  Filesystems greater than 2GB
504            can now be created.
505
506 1.0c    14 NOV 2002     Bug fix release
507
508         Fixed bugs with initrds and device nodes
509
510 1.0     23 OCT 2002     Initial release