summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/generic/patches-2.6.36/005-squashfs_revert_to_2.6.35.patch249
-rw-r--r--target/linux/generic/patches-2.6.36/006-squashfs_add_lzma.patch28
2 files changed, 263 insertions, 14 deletions
diff --git a/target/linux/generic/patches-2.6.36/005-squashfs_revert_to_2.6.35.patch b/target/linux/generic/patches-2.6.36/005-squashfs_revert_to_2.6.35.patch
new file mode 100644
index 000000000..3c0e56e4f
--- /dev/null
+++ b/target/linux/generic/patches-2.6.36/005-squashfs_revert_to_2.6.35.patch
@@ -0,0 +1,249 @@
+--- a/fs/squashfs/decompressor.c
++++ b/fs/squashfs/decompressor.c
+@@ -40,11 +40,9 @@ static const struct squashfs_decompresso
+ NULL, NULL, NULL, LZMA_COMPRESSION, "lzma", 0
+ };
+
+-#ifndef CONFIG_SQUASHFS_LZO
+ static const struct squashfs_decompressor squashfs_lzo_unsupported_comp_ops = {
+ NULL, NULL, NULL, LZO_COMPRESSION, "lzo", 0
+ };
+-#endif
+
+ static const struct squashfs_decompressor squashfs_unknown_comp_ops = {
+ NULL, NULL, NULL, 0, "unknown", 0
+@@ -53,11 +51,7 @@ static const struct squashfs_decompresso
+ static const struct squashfs_decompressor *decompressor[] = {
+ &squashfs_zlib_comp_ops,
+ &squashfs_lzma_unsupported_comp_ops,
+-#ifdef CONFIG_SQUASHFS_LZO
+- &squashfs_lzo_comp_ops,
+-#else
+ &squashfs_lzo_unsupported_comp_ops,
+-#endif
+ &squashfs_unknown_comp_ops
+ };
+
+--- a/fs/squashfs/Kconfig
++++ b/fs/squashfs/Kconfig
+@@ -5,13 +5,13 @@ config SQUASHFS
+ help
+ Saying Y here includes support for SquashFS 4.0 (a Compressed
+ Read-Only File System). Squashfs is a highly compressed read-only
+- filesystem for Linux. It uses zlib/lzo compression to compress both
++ filesystem for Linux. It uses zlib compression to compress both
+ files, inodes and directories. Inodes in the system are very small
+ and all blocks are packed to minimise data overhead. Block sizes
+ greater than 4K are supported up to a maximum of 1 Mbytes (default
+ block size 128K). SquashFS 4.0 supports 64 bit filesystems and files
+ (larger than 4GB), full uid/gid information, hard links and
+- timestamps.
++ timestamps.
+
+ Squashfs is intended for general read-only filesystem use, for
+ archival use (i.e. in cases where a .tar.gz file may be used), and in
+@@ -26,7 +26,7 @@ config SQUASHFS
+
+ If unsure, say N.
+
+-config SQUASHFS_XATTR
++config SQUASHFS_XATTRS
+ bool "Squashfs XATTR support"
+ depends on SQUASHFS
+ default n
+@@ -37,24 +37,9 @@ config SQUASHFS_XATTR
+
+ If unsure, say N.
+
+-config SQUASHFS_LZO
+- bool "Include support for LZO compressed file systems"
+- depends on SQUASHFS
+- default n
+- select LZO_DECOMPRESS
+- help
+- Saying Y here includes support for reading Squashfs file systems
+- compressed with LZO compresssion. LZO compression is mainly
+- aimed at embedded systems with slower CPUs where the overheads
+- of zlib are too high.
+-
+- LZO is not the standard compression used in Squashfs and so most
+- file systems will be readable without selecting this option.
+-
+- If unsure, say N.
+-
+ config SQUASHFS_EMBEDDED
+- bool "Additional option for memory-constrained systems"
++
++ bool "Additional option for memory-constrained systems"
+ depends on SQUASHFS
+ default n
+ help
+--- a/fs/squashfs/lzo_wrapper.c
++++ b/fs/squashfs/lzo_wrapper.c
+@@ -1,136 +0,0 @@
+-/*
+- * Squashfs - a compressed read only filesystem for Linux
+- *
+- * Copyright (c) 2010 LG Electronics
+- * Chan Jeong <chan.jeong@lge.com>
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License
+- * as published by the Free Software Foundation; either version 2,
+- * or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- * lzo_wrapper.c
+- */
+-
+-#include <linux/mutex.h>
+-#include <linux/buffer_head.h>
+-#include <linux/slab.h>
+-#include <linux/vmalloc.h>
+-#include <linux/lzo.h>
+-
+-#include "squashfs_fs.h"
+-#include "squashfs_fs_sb.h"
+-#include "squashfs_fs_i.h"
+-#include "squashfs.h"
+-#include "decompressor.h"
+-
+-struct squashfs_lzo {
+- void *input;
+- void *output;
+-};
+-
+-static void *lzo_init(struct squashfs_sb_info *msblk)
+-{
+- int block_size = max_t(int, msblk->block_size, SQUASHFS_METADATA_SIZE);
+-
+- struct squashfs_lzo *stream = kzalloc(sizeof(*stream), GFP_KERNEL);
+- if (stream == NULL)
+- goto failed;
+- stream->input = vmalloc(block_size);
+- if (stream->input == NULL)
+- goto failed;
+- stream->output = vmalloc(block_size);
+- if (stream->output == NULL)
+- goto failed2;
+-
+- return stream;
+-
+-failed2:
+- vfree(stream->input);
+-failed:
+- ERROR("Failed to allocate lzo workspace\n");
+- kfree(stream);
+- return NULL;
+-}
+-
+-
+-static void lzo_free(void *strm)
+-{
+- struct squashfs_lzo *stream = strm;
+-
+- if (stream) {
+- vfree(stream->input);
+- vfree(stream->output);
+- }
+- kfree(stream);
+-}
+-
+-
+-static int lzo_uncompress(struct squashfs_sb_info *msblk, void **buffer,
+- struct buffer_head **bh, int b, int offset, int length, int srclength,
+- int pages)
+-{
+- struct squashfs_lzo *stream = msblk->stream;
+- void *buff = stream->input;
+- int avail, i, bytes = length, res;
+- size_t out_len = srclength;
+-
+- mutex_lock(&msblk->read_data_mutex);
+-
+- for (i = 0; i < b; i++) {
+- wait_on_buffer(bh[i]);
+- if (!buffer_uptodate(bh[i]))
+- goto block_release;
+-
+- avail = min(bytes, msblk->devblksize - offset);
+- memcpy(buff, bh[i]->b_data + offset, avail);
+- buff += avail;
+- bytes -= avail;
+- offset = 0;
+- put_bh(bh[i]);
+- }
+-
+- res = lzo1x_decompress_safe(stream->input, (size_t)length,
+- stream->output, &out_len);
+- if (res != LZO_E_OK)
+- goto failed;
+-
+- res = bytes = (int)out_len;
+- for (i = 0, buff = stream->output; bytes && i < pages; i++) {
+- avail = min_t(int, bytes, PAGE_CACHE_SIZE);
+- memcpy(buffer[i], buff, avail);
+- buff += avail;
+- bytes -= avail;
+- }
+-
+- mutex_unlock(&msblk->read_data_mutex);
+- return res;
+-
+-block_release:
+- for (; i < b; i++)
+- put_bh(bh[i]);
+-
+-failed:
+- mutex_unlock(&msblk->read_data_mutex);
+-
+- ERROR("lzo decompression failed, data probably corrupt\n");
+- return -EIO;
+-}
+-
+-const struct squashfs_decompressor squashfs_lzo_comp_ops = {
+- .init = lzo_init,
+- .free = lzo_free,
+- .decompress = lzo_uncompress,
+- .id = LZO_COMPRESSION,
+- .name = "lzo",
+- .supported = 1
+-};
+--- a/fs/squashfs/Makefile
++++ b/fs/squashfs/Makefile
+@@ -5,5 +5,5 @@
+ obj-$(CONFIG_SQUASHFS) += squashfs.o
+ squashfs-y += block.o cache.o dir.o export.o file.o fragment.o id.o inode.o
+ squashfs-y += namei.o super.o symlink.o zlib_wrapper.o decompressor.o
+-squashfs-$(CONFIG_SQUASHFS_XATTR) += xattr.o xattr_id.o
+-squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o
++squashfs-$(CONFIG_SQUASHFS_XATTRS) += xattr.o xattr_id.o
++
+--- a/fs/squashfs/squashfs.h
++++ b/fs/squashfs/squashfs.h
+@@ -104,6 +104,3 @@ extern const struct xattr_handler *squas
+
+ /* zlib_wrapper.c */
+ extern const struct squashfs_decompressor squashfs_zlib_comp_ops;
+-
+-/* lzo_wrapper.c */
+-extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
+--- a/fs/squashfs/xattr.h
++++ b/fs/squashfs/xattr.h
+@@ -21,7 +21,7 @@
+ * xattr.h
+ */
+
+-#ifdef CONFIG_SQUASHFS_XATTR
++#ifdef CONFIG_SQUASHFS_XATTRS
+ extern __le64 *squashfs_read_xattr_id_table(struct super_block *, u64,
+ u64 *, int *);
+ extern int squashfs_xattr_lookup(struct super_block *, unsigned int, int *,
diff --git a/target/linux/generic/patches-2.6.36/006-squashfs_add_lzma.patch b/target/linux/generic/patches-2.6.36/006-squashfs_add_lzma.patch
index d1b62e549..ff715788e 100644
--- a/target/linux/generic/patches-2.6.36/006-squashfs_add_lzma.patch
+++ b/target/linux/generic/patches-2.6.36/006-squashfs_add_lzma.patch
@@ -32,26 +32,27 @@ Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
bool "Additional option for memory-constrained systems"
--- a/fs/squashfs/Makefile
+++ b/fs/squashfs/Makefile
-@@ -5,5 +5,4 @@
+@@ -5,5 +5,5 @@
obj-$(CONFIG_SQUASHFS) += squashfs.o
squashfs-y += block.o cache.o dir.o export.o file.o fragment.o id.o inode.o
squashfs-y += namei.o super.o symlink.o zlib_wrapper.o decompressor.o
--squashfs-$(CONFIG_SQUASHFS_XATTR) += xattr.o xattr_id.o
--squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o
+-squashfs-$(CONFIG_SQUASHFS_XATTRS) += xattr.o xattr_id.o
+squashfs-$(CONFIG_SQUASHFS_LZMA) += lzma_wrapper.o
+
--- a/fs/squashfs/decompressor.c
+++ b/fs/squashfs/decompressor.c
-@@ -53,8 +53,8 @@ static const struct squashfs_decompresso
+@@ -50,7 +50,11 @@ static const struct squashfs_decompresso
+
static const struct squashfs_decompressor *decompressor[] = {
&squashfs_zlib_comp_ops,
- &squashfs_lzma_unsupported_comp_ops,
--#ifdef CONFIG_SQUASHFS_LZO
-- &squashfs_lzo_comp_ops,
+#ifdef CONFIG_SQUASHFS_LZMA
+ &squashfs_lzma_comp_ops,
- #else
++#else
+ &squashfs_lzma_unsupported_comp_ops,
++#endif
&squashfs_lzo_unsupported_comp_ops,
- #endif
+ &squashfs_unknown_comp_ops
+ };
--- /dev/null
+++ b/fs/squashfs/lzma_wrapper.c
@@ -0,0 +1,152 @@
@@ -209,11 +210,10 @@ Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
+
--- a/fs/squashfs/squashfs.h
+++ b/fs/squashfs/squashfs.h
-@@ -105,5 +105,5 @@ extern const struct xattr_handler *squas
+@@ -104,3 +104,6 @@ extern const struct xattr_handler *squas
+
/* zlib_wrapper.c */
extern const struct squashfs_decompressor squashfs_zlib_comp_ops;
-
--/* lzo_wrapper.c */
--extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
-+/* lzma_wrapper.c */
++
++/* lzma wrapper.c */
+extern const struct squashfs_decompressor squashfs_lzma_comp_ops;