diff options
-rw-r--r-- | target/linux/generic/patches-2.6.36/005-squashfs_revert_to_2.6.35.patch | 249 | ||||
-rw-r--r-- | target/linux/generic/patches-2.6.36/006-squashfs_add_lzma.patch | 28 |
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; |