mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
fs/squashfs: enable LZ4 compression support
The structure is identical to the existing compressor implementations, trivially adding lz4 decompression to sqfs_decompress. The changes were tested using a sandbox build. An LZ4 compressed squashfs image was bound as a host block device. Signed-off-by: David Oberhollenzer <goliath@infraroot.at> Reviewed-by: Joao Marcos Costa <jmcosta944@gmail.com>
This commit is contained in:
parent
99374ff189
commit
fa894a36a9
1 changed files with 23 additions and 0 deletions
|
@ -18,6 +18,10 @@
|
|||
#include <u-boot/zlib.h>
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_LZ4)
|
||||
#include <u-boot/lz4.h>
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZSTD)
|
||||
#include <linux/zstd.h>
|
||||
#endif
|
||||
|
@ -38,6 +42,10 @@ int sqfs_decompressor_init(struct squashfs_ctxt *ctxt)
|
|||
case SQFS_COMP_ZLIB:
|
||||
break;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_LZ4)
|
||||
case SQFS_COMP_LZ4:
|
||||
break;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_ZSTD)
|
||||
case SQFS_COMP_ZSTD:
|
||||
ctxt->zstd_workspace = malloc(zstd_dctx_workspace_bound());
|
||||
|
@ -66,6 +74,10 @@ void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt)
|
|||
case SQFS_COMP_ZLIB:
|
||||
break;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_LZ4)
|
||||
case SQFS_COMP_LZ4:
|
||||
break;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_ZSTD)
|
||||
case SQFS_COMP_ZSTD:
|
||||
free(ctxt->zstd_workspace);
|
||||
|
@ -139,6 +151,17 @@ int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
|
|||
|
||||
break;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_LZ4)
|
||||
case SQFS_COMP_LZ4:
|
||||
ret = LZ4_decompress_safe(source, dest, src_len, *dest_len);
|
||||
if (ret < 0) {
|
||||
printf("LZ4 decompression failed.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
break;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_ZSTD)
|
||||
case SQFS_COMP_ZSTD:
|
||||
ret = sqfs_zstd_decompress(ctxt, dest, *dest_len, source, src_len);
|
||||
|
|
Loading…
Reference in a new issue