diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-04-18 16:03:43 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-04-18 16:03:43 +0000 | 
| commit | d18a9f7996165386392d7d546f9d5eeec8bed4fb (patch) | |
| tree | ef3521ca27b0ede8910170dec7d7b04cec8f8f17 | |
| parent | c352f2f98116127f5273363c1f3770427f632646 (diff) | |
move the lzma decompressor out of squashfs-lzma patch and into a new patch (i want to use it for initramfs in the future)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7001 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | target/linux/generic-2.6/patches/002-lzma_decompress.patch (renamed from target/linux/generic-2.6/patches/002-squashfs_lzma.patch) | 135 | ||||
| -rw-r--r-- | target/linux/generic-2.6/patches/003-squashfs_lzma.patch | 109 | ||||
| -rw-r--r-- | target/linux/generic-2.6/patches/010-disable_old_squashfs_compatibility.patch | 3 | 
3 files changed, 124 insertions, 123 deletions
| diff --git a/target/linux/generic-2.6/patches/002-squashfs_lzma.patch b/target/linux/generic-2.6/patches/002-lzma_decompress.patch index f32692bae..ca9767729 100644 --- a/target/linux/generic-2.6/patches/002-squashfs_lzma.patch +++ b/target/linux/generic-2.6/patches/002-lzma_decompress.patch @@ -1,114 +1,15 @@ -diff -urN linux-2.6.19.old/fs/squashfs/inode.c linux-2.6.19.dev/fs/squashfs/inode.c ---- linux-2.6.19.old/fs/squashfs/inode.c	2006-12-14 03:13:20.000000000 +0100 -+++ linux-2.6.19.dev/fs/squashfs/inode.c	2006-12-14 03:13:20.000000000 +0100 -@@ -4,6 +4,9 @@ -  * Copyright (c) 2002, 2003, 2004, 2005, 2006 -  * Phillip Lougher <phillip@lougher.org.uk> -  * -+ * LZMA decompressor support added by Oleg I. Vdovikin -+ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su> -+ * -  * 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, -@@ -21,6 +24,7 @@ -  * inode.c -  */ +--- linux-2.6.19.old/lib/Makefile	2007-04-18 17:41:22.679403384 +0200 ++++ linux-2.6.19.dev/lib/Makefile	2007-04-18 17:41:43.303268080 +0200 +@@ -54,6 +54,7 @@ + obj-$(CONFIG_AUDIT_GENERIC) += audit.o -+#define SQUASHFS_LZMA - #include <linux/types.h> - #include <linux/squashfs_fs.h> - #include <linux/module.h> -@@ -44,6 +48,19 @@ + obj-$(CONFIG_SWIOTLB) += swiotlb.o ++obj-y += LzmaDecode.o - #include "squashfs.h" -  -+#ifdef SQUASHFS_LZMA -+#include "LzmaDecode.h" -+ -+/* default LZMA settings, should be in sync with mksquashfs */ -+#define LZMA_LC 3 -+#define LZMA_LP 0 -+#define LZMA_PB 2 -+ -+#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \ -+      (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb)) -+ -+#endif -+ - static void squashfs_put_super(struct super_block *); - static int squashfs_statfs(struct dentry *, struct kstatfs *); - static int squashfs_symlink_readpage(struct file *file, struct page *page); -@@ -64,7 +81,11 @@ - 			const char *, void *, struct vfsmount *); -  -  -+#ifdef SQUASHFS_LZMA -+static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE]; -+#else - static z_stream stream; -+#endif -  - static struct file_system_type squashfs_fs_type = { - 	.owner = THIS_MODULE, -@@ -249,6 +270,15 @@ - 	if (compressed) { - 		int zlib_err; -  -+#ifdef SQUASHFS_LZMA -+		if ((zlib_err = LzmaDecode(lzma_workspace, -+			LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB, -+			c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK) -+		{ -+			ERROR("lzma returned unexpected result 0x%x\n", zlib_err); -+			bytes = 0; -+		} -+#else - 		stream.next_in = c_buffer; - 		stream.avail_in = c_byte; - 		stream.next_out = buffer; -@@ -263,7 +293,7 @@ - 			bytes = 0; - 		} else - 			bytes = stream.total_out; -- -+#endif - 		up(&msblk->read_data_mutex); - 	} -  -@@ -2045,15 +2075,19 @@ - 	printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) " - 		"Phillip Lougher\n"); -  -+#ifndef SQUASHFS_LZMA - 	if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) { - 		ERROR("Failed to allocate zlib workspace\n"); - 		destroy_inodecache(); - 		err = -ENOMEM; - 		goto out; - 	} -+#endif -  - 	if ((err = register_filesystem(&squashfs_fs_type))) { -+#ifndef SQUASHFS_LZMA - 		vfree(stream.workspace); -+#endif - 		destroy_inodecache(); - 	} -  -@@ -2064,7 +2098,9 @@ -  - static void __exit exit_squashfs_fs(void) - { -+#ifndef SQUASHFS_LZMA - 	vfree(stream.workspace); -+#endif - 	unregister_filesystem(&squashfs_fs_type); - 	destroy_inodecache(); - } -diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.c linux-2.6.19.dev/fs/squashfs/LzmaDecode.c ---- linux-2.6.19.old/fs/squashfs/LzmaDecode.c	1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.19.dev/fs/squashfs/LzmaDecode.c	2006-12-14 03:13:20.000000000 +0100 + hostprogs-y	:= gen_crc32table + clean-files	:= crc32table.h +--- linux-2.6.19.old/lib/LzmaDecode.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.19.dev/lib/LzmaDecode.c	2006-12-14 03:13:20.000000000 +0100  @@ -0,0 +1,663 @@  +/*  +  LzmaDecode.c @@ -131,7 +32,7 @@ diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.c linux-2.6.19.dev/fs/squashfs  +  to this file, however, are subject to the LGPL or CPL terms.  +*/  + -+#include "LzmaDecode.h" ++#include <linux/LzmaDecode.h>  +  +#ifndef Byte  +#define Byte unsigned char @@ -773,9 +674,8 @@ diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.c linux-2.6.19.dev/fs/squashfs  +  *outSizeProcessed = nowPos;  +  return LZMA_RESULT_OK;  +} -diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.h linux-2.6.19.dev/fs/squashfs/LzmaDecode.h ---- linux-2.6.19.old/fs/squashfs/LzmaDecode.h	1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.19.dev/fs/squashfs/LzmaDecode.h	2006-12-14 03:13:20.000000000 +0100 +--- linux-2.6.19.old/include/linux/LzmaDecode.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.19.dev/include/linux/LzmaDecode.h	2006-12-14 03:13:20.000000000 +0100  @@ -0,0 +1,100 @@  +/*  +  LzmaDecode.h @@ -877,11 +777,4 @@ diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.h linux-2.6.19.dev/fs/squashfs  +    UInt32 *outSizeProcessed);  +  +#endif -diff -urN linux-2.6.19.old/fs/squashfs/Makefile linux-2.6.19.dev/fs/squashfs/Makefile ---- linux-2.6.19.old/fs/squashfs/Makefile	2006-12-14 03:13:20.000000000 +0100 -+++ linux-2.6.19.dev/fs/squashfs/Makefile	2006-12-14 03:13:20.000000000 +0100 -@@ -5,3 +5,4 @@ - obj-$(CONFIG_SQUASHFS) += squashfs.o - squashfs-y += inode.o - squashfs-y += squashfs2_0.o -+squashfs-y += LzmaDecode.o + diff --git a/target/linux/generic-2.6/patches/003-squashfs_lzma.patch b/target/linux/generic-2.6/patches/003-squashfs_lzma.patch new file mode 100644 index 000000000..6a21227dc --- /dev/null +++ b/target/linux/generic-2.6/patches/003-squashfs_lzma.patch @@ -0,0 +1,109 @@ +diff -urN linux-2.6.19.old/fs/squashfs/inode.c linux-2.6.19.dev/fs/squashfs/inode.c +--- linux-2.6.19.old/fs/squashfs/inode.c	2006-12-14 03:13:20.000000000 +0100 ++++ linux-2.6.19.dev/fs/squashfs/inode.c	2006-12-14 03:13:20.000000000 +0100 +@@ -4,6 +4,9 @@ +  * Copyright (c) 2002, 2003, 2004, 2005, 2006 +  * Phillip Lougher <phillip@lougher.org.uk> +  * ++ * LZMA decompressor support added by Oleg I. Vdovikin ++ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su> ++ * +  * 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, +@@ -21,6 +24,7 @@ +  * inode.c +  */ +  ++#define SQUASHFS_LZMA + #include <linux/types.h> + #include <linux/squashfs_fs.h> + #include <linux/module.h> +@@ -44,6 +48,19 @@ +  + #include "squashfs.h" +  ++#ifdef SQUASHFS_LZMA ++#include <linux/LzmaDecode.h> ++ ++/* default LZMA settings, should be in sync with mksquashfs */ ++#define LZMA_LC 3 ++#define LZMA_LP 0 ++#define LZMA_PB 2 ++ ++#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \ ++      (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb)) ++ ++#endif ++ + static void squashfs_put_super(struct super_block *); + static int squashfs_statfs(struct dentry *, struct kstatfs *); + static int squashfs_symlink_readpage(struct file *file, struct page *page); +@@ -64,7 +81,11 @@ + 			const char *, void *, struct vfsmount *); +  +  ++#ifdef SQUASHFS_LZMA ++static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE]; ++#else + static z_stream stream; ++#endif +  + static struct file_system_type squashfs_fs_type = { + 	.owner = THIS_MODULE, +@@ -249,6 +270,15 @@ + 	if (compressed) { + 		int zlib_err; +  ++#ifdef SQUASHFS_LZMA ++		if ((zlib_err = LzmaDecode(lzma_workspace, ++			LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB, ++			c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK) ++		{ ++			ERROR("lzma returned unexpected result 0x%x\n", zlib_err); ++			bytes = 0; ++		} ++#else + 		stream.next_in = c_buffer; + 		stream.avail_in = c_byte; + 		stream.next_out = buffer; +@@ -263,7 +293,7 @@ + 			bytes = 0; + 		} else + 			bytes = stream.total_out; +- ++#endif + 		up(&msblk->read_data_mutex); + 	} +  +@@ -2045,15 +2075,19 @@ + 	printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) " + 		"Phillip Lougher\n"); +  ++#ifndef SQUASHFS_LZMA + 	if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) { + 		ERROR("Failed to allocate zlib workspace\n"); + 		destroy_inodecache(); + 		err = -ENOMEM; + 		goto out; + 	} ++#endif +  + 	if ((err = register_filesystem(&squashfs_fs_type))) { ++#ifndef SQUASHFS_LZMA + 		vfree(stream.workspace); ++#endif + 		destroy_inodecache(); + 	} +  +@@ -2064,7 +2098,9 @@ +  + static void __exit exit_squashfs_fs(void) + { ++#ifndef SQUASHFS_LZMA + 	vfree(stream.workspace); ++#endif + 	unregister_filesystem(&squashfs_fs_type); + 	destroy_inodecache(); + } + diff --git a/target/linux/generic-2.6/patches/010-disable_old_squashfs_compatibility.patch b/target/linux/generic-2.6/patches/010-disable_old_squashfs_compatibility.patch index dbc0185d0..4d556a413 100644 --- a/target/linux/generic-2.6/patches/010-disable_old_squashfs_compatibility.patch +++ b/target/linux/generic-2.6/patches/010-disable_old_squashfs_compatibility.patch @@ -1,12 +1,11 @@  diff -urN linux-2.6.19.old/fs/squashfs/Makefile linux-2.6.19.dev/fs/squashfs/Makefile  --- linux-2.6.19.old/fs/squashfs/Makefile	2006-12-14 03:13:22.000000000 +0100  +++ linux-2.6.19.dev/fs/squashfs/Makefile	2006-12-14 03:13:31.000000000 +0100 -@@ -4,5 +4,4 @@ +@@ -4,4 +4,3 @@   obj-$(CONFIG_SQUASHFS) += squashfs.o   squashfs-y += inode.o  -squashfs-y += squashfs2_0.o - squashfs-y += LzmaDecode.o  diff -urN linux-2.6.19.old/fs/squashfs/squashfs.h linux-2.6.19.dev/fs/squashfs/squashfs.h  --- linux-2.6.19.old/fs/squashfs/squashfs.h	2006-12-14 03:13:20.000000000 +0100  +++ linux-2.6.19.dev/fs/squashfs/squashfs.h	2006-12-14 03:13:31.000000000 +0100 | 
