Message ID | 20231106101403.80409-1-goliath@infraroot.at |
---|---|
State | Accepted |
Commit | fa894a36a9090c53050cf0e9cf186c4521209974 |
Delegated to: | Tom Rini |
Headers | show |
Series | fs/squashfs: enable LZ4 compression support | expand |
Hello, David Thanks for this contribution! Em seg., 6 de nov. de 2023 às 11:15, David Oberhollenzer < goliath@infraroot.at> escreveu: > 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>
On Mon, Nov 06, 2023 at 11:14:03AM +0100, David Oberhollenzer wrote: > 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> Applied to u-boot/next, thanks!
diff --git a/fs/squashfs/sqfs_decompressor.c b/fs/squashfs/sqfs_decompressor.c index 6b3e01cdad..cfd1153fd7 100644 --- a/fs/squashfs/sqfs_decompressor.c +++ b/fs/squashfs/sqfs_decompressor.c @@ -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);
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> --- fs/squashfs/sqfs_decompressor.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)