aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhillip Lougher <phillip@squashfs.org.uk>2014-11-27 13:48:44 -0500
committerPhillip Lougher <phillip@squashfs.org.uk>2014-11-27 13:48:44 -0500
commit62421645bb702c077ee5a462815525106cb53bcf (patch)
tree83d98b98348bcaa8c7c0ddf2cc720104fdb6e52d
parent9c06a46f1524a05b2dccf5c74d7555b2cfcbe5db (diff)
Squashfs: Add LZ4 compression configuration option
Add the glue code, and also update the documentation. Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
-rw-r--r--Documentation/filesystems/squashfs.txt8
-rw-r--r--fs/squashfs/Kconfig15
-rw-r--r--fs/squashfs/Makefile1
-rw-r--r--fs/squashfs/decompressor.c7
-rw-r--r--fs/squashfs/decompressor.h4
5 files changed, 31 insertions, 4 deletions
diff --git a/Documentation/filesystems/squashfs.txt b/Documentation/filesystems/squashfs.txt
index 403c090aca39..e5274f84dc56 100644
--- a/Documentation/filesystems/squashfs.txt
+++ b/Documentation/filesystems/squashfs.txt
@@ -2,10 +2,10 @@ SQUASHFS 4.0 FILESYSTEM
2======================= 2=======================
3 3
4Squashfs is a compressed read-only filesystem for Linux. 4Squashfs is a compressed read-only filesystem for Linux.
5It uses zlib/lzo/xz compression to compress files, inodes and directories. 5It uses zlib, lz4, lzo, or xz compression to compress files, inodes and
6Inodes in the system are very small and all blocks are packed to minimise 6directories. Inodes in the system are very small and all blocks are packed to
7data overhead. Block sizes greater than 4K are supported up to a maximum 7minimise data overhead. Block sizes greater than 4K are supported up to a
8of 1Mbytes (default block size 128K). 8maximum of 1Mbytes (default block size 128K).
9 9
10Squashfs is intended for general read-only filesystem use, for archival 10Squashfs is intended for general read-only filesystem use, for archival
11use (i.e. in cases where a .tar.gz file may be used), and in constrained 11use (i.e. in cases where a .tar.gz file may be used), and in constrained
diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig
index b6fa8657dcbc..ffb093e72b6c 100644
--- a/fs/squashfs/Kconfig
+++ b/fs/squashfs/Kconfig
@@ -120,6 +120,21 @@ config SQUASHFS_ZLIB
120 120
121 If unsure, say Y. 121 If unsure, say Y.
122 122
123config SQUASHFS_LZ4
124 bool "Include support for LZ4 compressed file systems"
125 depends on SQUASHFS
126 select LZ4_DECOMPRESS
127 help
128 Saying Y here includes support for reading Squashfs file systems
129 compressed with LZ4 compression. LZ4 compression is mainly
130 aimed at embedded systems with slower CPUs where the overheads
131 of zlib are too high.
132
133 LZ4 is not the standard compression used in Squashfs and so most
134 file systems will be readable without selecting this option.
135
136 If unsure, say N.
137
123config SQUASHFS_LZO 138config SQUASHFS_LZO
124 bool "Include support for LZO compressed file systems" 139 bool "Include support for LZO compressed file systems"
125 depends on SQUASHFS 140 depends on SQUASHFS
diff --git a/fs/squashfs/Makefile b/fs/squashfs/Makefile
index 4132520b4ff2..246a6f329d89 100644
--- a/fs/squashfs/Makefile
+++ b/fs/squashfs/Makefile
@@ -11,6 +11,7 @@ squashfs-$(CONFIG_SQUASHFS_DECOMP_SINGLE) += decompressor_single.o
11squashfs-$(CONFIG_SQUASHFS_DECOMP_MULTI) += decompressor_multi.o 11squashfs-$(CONFIG_SQUASHFS_DECOMP_MULTI) += decompressor_multi.o
12squashfs-$(CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU) += decompressor_multi_percpu.o 12squashfs-$(CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU) += decompressor_multi_percpu.o
13squashfs-$(CONFIG_SQUASHFS_XATTR) += xattr.o xattr_id.o 13squashfs-$(CONFIG_SQUASHFS_XATTR) += xattr.o xattr_id.o
14squashfs-$(CONFIG_SQUASHFS_LZ4) += lz4_wrapper.o
14squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o 15squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o
15squashfs-$(CONFIG_SQUASHFS_XZ) += xz_wrapper.o 16squashfs-$(CONFIG_SQUASHFS_XZ) += xz_wrapper.o
16squashfs-$(CONFIG_SQUASHFS_ZLIB) += zlib_wrapper.o 17squashfs-$(CONFIG_SQUASHFS_ZLIB) += zlib_wrapper.o
diff --git a/fs/squashfs/decompressor.c b/fs/squashfs/decompressor.c
index ac22fe73b0ad..e9034bf6e5ae 100644
--- a/fs/squashfs/decompressor.c
+++ b/fs/squashfs/decompressor.c
@@ -41,6 +41,12 @@ static const struct squashfs_decompressor squashfs_lzma_unsupported_comp_ops = {
41 NULL, NULL, NULL, NULL, LZMA_COMPRESSION, "lzma", 0 41 NULL, NULL, NULL, NULL, LZMA_COMPRESSION, "lzma", 0
42}; 42};
43 43
44#ifndef CONFIG_SQUASHFS_LZ4
45static const struct squashfs_decompressor squashfs_lz4_comp_ops = {
46 NULL, NULL, NULL, NULL, LZ4_COMPRESSION, "lz4", 0
47};
48#endif
49
44#ifndef CONFIG_SQUASHFS_LZO 50#ifndef CONFIG_SQUASHFS_LZO
45static const struct squashfs_decompressor squashfs_lzo_comp_ops = { 51static const struct squashfs_decompressor squashfs_lzo_comp_ops = {
46 NULL, NULL, NULL, NULL, LZO_COMPRESSION, "lzo", 0 52 NULL, NULL, NULL, NULL, LZO_COMPRESSION, "lzo", 0
@@ -65,6 +71,7 @@ static const struct squashfs_decompressor squashfs_unknown_comp_ops = {
65 71
66static const struct squashfs_decompressor *decompressor[] = { 72static const struct squashfs_decompressor *decompressor[] = {
67 &squashfs_zlib_comp_ops, 73 &squashfs_zlib_comp_ops,
74 &squashfs_lz4_comp_ops,
68 &squashfs_lzo_comp_ops, 75 &squashfs_lzo_comp_ops,
69 &squashfs_xz_comp_ops, 76 &squashfs_xz_comp_ops,
70 &squashfs_lzma_unsupported_comp_ops, 77 &squashfs_lzma_unsupported_comp_ops,
diff --git a/fs/squashfs/decompressor.h b/fs/squashfs/decompressor.h
index af0985321808..a25713c031a5 100644
--- a/fs/squashfs/decompressor.h
+++ b/fs/squashfs/decompressor.h
@@ -46,6 +46,10 @@ static inline void *squashfs_comp_opts(struct squashfs_sb_info *msblk,
46extern const struct squashfs_decompressor squashfs_xz_comp_ops; 46extern const struct squashfs_decompressor squashfs_xz_comp_ops;
47#endif 47#endif
48 48
49#ifdef CONFIG_SQUASHFS_LZ4
50extern const struct squashfs_decompressor squashfs_lz4_comp_ops;
51#endif
52
49#ifdef CONFIG_SQUASHFS_LZO 53#ifdef CONFIG_SQUASHFS_LZO
50extern const struct squashfs_decompressor squashfs_lzo_comp_ops; 54extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
51#endif 55#endif