upgrade to squashfs 3.0
[openwrt/svn-archive/archive.git] / openwrt / target / linux / generic-2.6 / patches / 002-squashfs_lzma.patch
index be4c19bd7e87b3fa0b85dac9390583f1d4095f9a..a166e849716484e4f2a3f99ab50e09de05fde58a 100644 (file)
@@ -1,6 +1,113 @@
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.c
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.c 2005-08-29 00:02:44.099124176 +0200
+diff -Nur linux-2.6.16/fs/squashfs/inode.c linux-2.6.16-owrt/fs/squashfs/inode.c
+--- linux-2.6.16/fs/squashfs/inode.c   2006-03-21 10:55:59.000000000 +0100
++++ linux-2.6.16-owrt/fs/squashfs/inode.c      2006-03-21 12:24:37.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 "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 super_block *, struct kstatfs *);
+ static int squashfs_symlink_readpage(struct file *file, struct page *page);
+@@ -64,7 +81,11 @@
+                               const char *, void *);
++#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,6 +293,7 @@
+                       bytes = 0;
+               } else
+                       bytes = stream.total_out;
++#endif
+               
+               up(&msblk->read_data_mutex);
+       }
+@@ -2046,15 +2077,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();
+       }
+@@ -2065,7 +2100,9 @@
+ static void __exit exit_squashfs_fs(void)
+ {
++#ifndef SQUASHFS_LZMA
+       vfree(stream.workspace);
++#endif
+       unregister_filesystem(&squashfs_fs_type);
+       destroy_inodecache();
+ }
+diff -Nur linux-2.6.16/fs/squashfs/LzmaDecode.c linux-2.6.16-owrt/fs/squashfs/LzmaDecode.c
+--- linux-2.6.16/fs/squashfs/LzmaDecode.c      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-owrt/fs/squashfs/LzmaDecode.c 2006-03-21 10:56:57.000000000 +0100
 @@ -0,0 +1,663 @@
 +/*
 +  LzmaDecode.c
@@ -665,9 +772,9 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  *outSizeProcessed = nowPos;
 +  return LZMA_RESULT_OK;
 +}
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.h
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.h 2005-08-29 00:02:44.099124176 +0200
+diff -Nur linux-2.6.16/fs/squashfs/LzmaDecode.h linux-2.6.16-owrt/fs/squashfs/LzmaDecode.h
+--- linux-2.6.16/fs/squashfs/LzmaDecode.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-owrt/fs/squashfs/LzmaDecode.h 2006-03-21 10:56:57.000000000 +0100
 @@ -0,0 +1,100 @@
 +/* 
 +  LzmaDecode.h
@@ -769,122 +876,11 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-b
 +    UInt32 *outSizeProcessed);
 +
 +#endif
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/Makefile linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/Makefile
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/Makefile  2005-08-28 23:44:05.046246000 +0200
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/Makefile     2005-08-29 00:06:21.872017664 +0200
-@@ -4,4 +4,4 @@
+diff -Nur linux-2.6.16/fs/squashfs/Makefile linux-2.6.16-owrt/fs/squashfs/Makefile
+--- linux-2.6.16/fs/squashfs/Makefile  2006-03-21 10:55:59.000000000 +0100
++++ linux-2.6.16-owrt/fs/squashfs/Makefile     2006-03-21 10:57:08.000000000 +0100
+@@ -5,3 +5,4 @@
  obj-$(CONFIG_SQUASHFS) += squashfs.o
--squashfs-objs := inode.o
-+squashfs-objs := inode.o LzmaDecode.o
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/inode.c linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/inode.c
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/inode.c   2005-08-28 23:44:05.045246000 +0200
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/inode.c      2005-08-29 00:19:48.473476904 +0200
-@@ -3,6 +3,9 @@
-  *
-  * Copyright (c) 2002, 2003, 2004, 2005 Phillip Lougher <phillip@lougher.demon.co.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,
-@@ -20,7 +23,11 @@
-  * inode.c
-  */
-+#define SQUASHFS_LZMA
-+
-+#ifndef SQUASHFS_LZMA
- #define SQUASHFS_1_0_COMPATIBILITY
-+#endif
- #include <linux/types.h>
- #include <linux/squashfs_fs.h>
-@@ -43,6 +50,19 @@
- #include <linux/blkdev.h>
- #include <linux/vmalloc.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
-+
- #ifdef SQUASHFS_TRACE
- #define TRACE(s, args...)                             printk(KERN_NOTICE "SQUASHFS: "s, ## args)
- #else
-@@ -85,7 +105,11 @@
- DECLARE_MUTEX(read_data_mutex);
-+#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,
-@@ -274,6 +298,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;
-@@ -285,6 +318,7 @@
-                       bytes = 0;
-               } else
-                       bytes = stream.total_out;
-+#endif
-               up(&read_data_mutex);
-       }
-@@ -1725,14 +1759,17 @@
-       printk(KERN_INFO "Squashfs 2.2 (released 2005/07/03) (C) 2002-2005 Phillip Lougher\n");
-+#ifndef SQUASHFS_LZMA
-       if(!(stream.workspace = (char *) vmalloc(zlib_inflate_workspacesize()))) {
-               ERROR("Failed to allocate zlib workspace\n");
-               destroy_inodecache();
-               return -ENOMEM;
-       }
--
-+#endif
-       if((err = register_filesystem(&squashfs_fs_type))) {
-+#ifndef SQUASHFS_LZMA
-               vfree(stream.workspace);
-+#endif
-               destroy_inodecache();
-       }
-@@ -1742,7 +1779,9 @@
- static void __exit exit_squashfs_fs(void)
- {
-+#ifndef SQUASHFS_LZMA
-       vfree(stream.workspace);
-+#endif
-       unregister_filesystem(&squashfs_fs_type);
-       destroy_inodecache();
- }
+ squashfs-y += inode.o
+ squashfs-y += squashfs2_0.o
++squashfs-y += LzmaDecode.o