History log of /external/squashfs-tools/squashfs-tools/lz4_wrapper.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b642c41261e510bc2b314008d8b01b9902554e58 31-Dec-2013 Phillip Lougher <phillip@squashfs.org.uk> compressor: don't overload extract_options

When I added LZ4 support, I realised that Unsquashfs should
check the compression options (if any) to ensure that the decompressor
can decompress the filesystem.

This situation never occurred before because gzip and lzo doesn't
have any options, and I envisaged that xz will always implicitly be able
to *decompress* any filesystem irrespective of any hitherto unimplemented
compression features. In otherwords I anticipated we should check the
options in mksquashfs (on append), but not on decompression with
unsquashfs.

LZ4 changed that because the kernel is currently using the LZ4
legacy format, and this may change, creating a situation where in
the future there may be a new format, which is *not* currently understood.
Therefore Unsquashfs needs to check the options too.

I initially used extract_options(), but this has thrown up subtle
differences in the handling of compression options between unsquashfs
and mksquashfs. Specificallyx, in the handling of the presence of
compression options where the compressor hasn't got an extract_options
function. This is clear indication that the filesystem is newer than
the code because it has compression options whereas the code hasn't
any support for them.

Now in mksquashfs where it is appending to the filesystem, this is a
definate fail because we obviously cannot extract the options and
set the compressor to the appropriate state. But, this should not
be a fail for Unsquashfs, because in retro-fitting compression
options to a compressor which didn't originally have them (i.e. LZO),
we have to ensure that the new compression options are implicitly
decompressible by the original code, because the original code
doesn't check them.

So for instance with LZO, we cannot allow an old Mksquashfs to append
to an LZO filesystem compressed with the new compression options, but,
it is perfectly possible for an old version of Unsquashfs to decompress
this filesystem.

So don't overload extract_options, and instead introduce a new
check_options specifically for Unsquashfs, and specifically only
for the decompressors (LZ4) which need to check them.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
bf5221a76130cbae601757773152eff9e7de9379 20-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4_wrapper: update URL to LZ4 homepage

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
6c1892a1c1d90dde9b4597544a5491971d6fce8d 17-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: get rid of commented out line in lz4_compress

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
13b4a50e086a1a615d8ed7c140a6d6a9a3a597db 17-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: add some more error messages to lz4_print_options

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
13b2c8bad478315bcda4d3c281487e4410f150e0 17-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: add some more error messages to lz4_extract options

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
e098e2a80f8dda8b46717e8a31a8350d946be61a 08-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4_wrapper: get rid of lz4_init()

It's not needed.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
47a61565b99385af7c917cf8c501421211cb00ab 08-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4_wrapper: get rid of lz4_options_post()

It's not needed.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
ba27aff35ac999c5bcde541827c672d407bb1ecd 08-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4_wrapper: implement lz4_usage()

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
5206640f43a80737a0ea19f1399bd9b6bc968010 08-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4_wrapper: implement lz4 compression options display

Add support to display the lz4 compression options specified
(currently only LZ4_HC) in lz4_display_options(), which is used
by the -stat option in unsquashfs.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
a76a7b15fcc65a2e2104eef43e4f775f9f394bf8 07-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: add support for lz4 "high compression"

Add -Xhc option

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
80e3f9901d310acecdc378f6921bf53fe1d45514 07-Jul-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4_wrapper: make global comp_opts a static inside lz4_dump_options

This was global purely to allow lz4_dump_options() to return
a pointer to it. However, making it global runs the risk coding
mistakes which should refer to a local comp_opts are hidden as they
pick up the global instead. As the global is potentially swapped and
not in host byte order this isn't a good thing.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
e1daf2ea2a80cc5f82eee3ea6c9bf019649582e8 21-Jun-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: add flags field to comp_opts structure

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
4436e4e248174011638fbda85e6a22b40e2b1078 21-Jun-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: add setting of comp_opts structure

Currently the comp_opts structure has a version field.

The code expects a comp_opts structure to be present, and
it expects a version of LZ4_LEGACY.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c
2d4c918a517cc567ca935c352e3993133d39945f 17-Jun-2013 Phillip Lougher <phillip@squashfs.org.uk> lz4: add experimental support for lz4 compression

* IMPORTANT HIGHLY EXPERIMENTAL * only use for experimental
testing of lz4 compression. LZ4 compressed filesystems produced
by this code will be guaranteed to become unreadable in a couple of
days!

This code produces "legacy" LZ4 format compression - this is the
format supported by the LZ4 kernel code currently in linux-next.

It is currently unclear whether the kernel code expects the LZ4
magic to be present - if so this has to be explictly added as it is not
generated by the LZ4 calls.

More importantly, it is unclear whether in the long term the
kernel code will continue to use the "legacy" format or move to the
more complicated newer format.

Due to this it is important to mark these LZ4 compressed streams as
using "legacy" format, to enable the code to distinquish between
"legacy" format and the newer format, in the event the kernel code
moves to the newer format.

This could be achieved by having two compression types, LZ4 == legacy, and
LZ4_XXX for any newer format, but this is messy, and makes an
unnecessary distinction (at the level of the compression type) between
the formats.

A better option is to make comp_opts (compression options) mandatory
for LZ4, and this comp_opt structure will encode the version of the
format, which will be used in the event the legacy format is superseded
in the kernel.

Currently this code lacks setting a comp_opts structure. In the
near future this code will be added, and the presence of the
comp_opts structure in the filesystem will become mandatory - and
any filesystems generated by this code will become unreadable. You have
been warned!

Checking into lz4 branch for this reason!

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
/external/squashfs-tools/squashfs-tools/lz4_wrapper.c