-Index: linux-2.4.35.4/Documentation/Configure.help
-===================================================================
---- linux-2.4.35.4.orig/Documentation/Configure.help 2007-12-15 05:19:42.546845646 +0100
-+++ linux-2.4.35.4/Documentation/Configure.help 2007-12-15 05:19:49.287229757 +0100
-@@ -17580,6 +17580,32 @@
+--- a/Documentation/Configure.help
++++ b/Documentation/Configure.help
+@@ -17592,6 +17592,32 @@ CONFIG_JFFS2_FS_DEBUG
If reporting bugs, please try to have available a full dump of the
messages at debug level 1 while the misbehaviour was occurring.
JFFS stats available in /proc filesystem
CONFIG_JFFS_PROC_FS
Enabling this option will cause statistics from mounted JFFS file systems
-Index: linux-2.4.35.4/fs/Config.in
-===================================================================
---- linux-2.4.35.4.orig/fs/Config.in 2007-12-15 05:19:48.635192599 +0100
-+++ linux-2.4.35.4/fs/Config.in 2007-12-15 05:19:49.287229757 +0100
-@@ -50,6 +50,12 @@
+--- a/fs/Config.in
++++ b/fs/Config.in
+@@ -50,6 +50,12 @@ dep_tristate 'Journalling Flash File Sys
if [ "$CONFIG_JFFS2_FS" = "y" -o "$CONFIG_JFFS2_FS" = "m" ] ; then
int 'JFFS2 debugging verbosity (0 = quiet, 2 = noisy)' CONFIG_JFFS2_FS_DEBUG 0
fi
tristate 'Compressed ROM file system support' CONFIG_CRAMFS
tristate 'Squashed file system support' CONFIG_SQUASHFS
if [ "$CONFIG_SQUASHFS" = "y" -o "$CONFIG_SQUASHFS" = "m" ] ; then
-Index: linux-2.4.35.4/fs/jffs2/Config.in.bbc.inc
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/Config.in.bbc.inc 2007-12-15 05:19:49.295230212 +0100
+--- /dev/null
++++ b/fs/jffs2/Config.in.bbc.inc
@@ -0,0 +1,5 @@
+dep_mbool ' ARMLIB compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_ARMLIB $CONFIG_JFFS2_FS
+dep_mbool ' LZO1X-* compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZO $CONFIG_JFFS2_FS
+dep_mbool ' LZARI compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZARI $CONFIG_JFFS2_FS
+dep_mbool ' LZHD compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZHD $CONFIG_JFFS2_FS
+dep_mbool ' LZSS compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZSS $CONFIG_JFFS2_FS
-Index: linux-2.4.35.4/fs/jffs2/Configure.help.bbc.inc
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/Configure.help.bbc.inc 2007-12-15 05:19:49.299230441 +0100
+--- /dev/null
++++ b/fs/jffs2/Configure.help.bbc.inc
@@ -0,0 +1,25 @@
+ARMLIB compression support for BBC (EXPERIMENTAL)
+CONFIG_JFFS2_BBC_ARMLIB
+ This enables simple LempelZiv-Storer-Szymanski compression for BBC
+ (faster than LZHD, and, and has a not-so-good compression ratio,
+ was included just for testing)
-Index: linux-2.4.35.4/fs/jffs2/Kconfig.bbc.inc
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/Kconfig.bbc.inc 2007-12-15 05:19:49.303230670 +0100
+--- /dev/null
++++ b/fs/jffs2/Kconfig.bbc.inc
@@ -0,0 +1,40 @@
+config JFFS2_BBC_ARMLIB
+ bool "ARMLIB compression support for BBC (EXPERIMENTAL)"
+ This enables simple LempelZiv-Storer-Szymanski compression for BBC
+ (faster than LZHD, and, and has a not-so-good compression ratio,
+ was included just for testing)
-Index: linux-2.4.35.4/fs/jffs2/Makefile
-===================================================================
---- linux-2.4.35.4.orig/fs/jffs2/Makefile 2007-12-15 05:19:42.578847470 +0100
-+++ linux-2.4.35.4/fs/jffs2/Makefile 2007-12-15 05:19:49.307230896 +0100
+--- a/fs/jffs2/Makefile
++++ b/fs/jffs2/Makefile
@@ -10,9 +10,23 @@
# Note 2! The CFLAGS definitions are now in the main makefile...
read.o nodemgmt.o readinode.o super.o write.o scan.o gc.o \
symlink.o build.o erase.o background.o
-Index: linux-2.4.35.4/fs/jffs2/Makefile.bbc.inc
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/Makefile.bbc.inc 2007-12-15 05:19:49.307230896 +0100
+--- /dev/null
++++ b/fs/jffs2/Makefile.bbc.inc
@@ -0,0 +1,12 @@
+JFFS2_BBC_KERNEL_OBJS-y = jffs2_bbc_framework.o jffs2_bbc_fs.o
+
+
+JFFS2_BBC_MKFS_OBJS = jffs2_bbc_mkfs.o jffs2_bbc_framework.o jffs2_bbc_armlib_comp.o jffs2_bbc_lzo_comp.o\
+ jffs2_bbc_lzss_comp.o jffs2_bbc_lzari_comp.o jffs2_bbc_lzhd_comp.o
-Index: linux-2.4.35.4/fs/jffs2/compr_zlib.c
-===================================================================
---- linux-2.4.35.4.orig/fs/jffs2/compr_zlib.c 2007-12-15 05:19:42.590848151 +0100
-+++ linux-2.4.35.4/fs/jffs2/compr_zlib.c 2007-12-15 05:19:49.307230896 +0100
-@@ -85,7 +85,7 @@
+--- a/fs/jffs2/compr_zlib.c
++++ b/fs/jffs2/compr_zlib.c
+@@ -85,7 +85,7 @@ void jffs2_zlib_exit(void)
vfree(inflate_workspace);
}
__u32 *sourcelen, __u32 *dstlen)
{
z_stream strm;
-@@ -145,7 +145,7 @@
+@@ -145,7 +145,7 @@ int zlib_compress(unsigned char *data_in
return 0;
}
__u32 srclen, __u32 destlen)
{
z_stream strm;
-@@ -175,3 +175,19 @@
+@@ -175,3 +175,19 @@ void zlib_decompress(unsigned char *data
zlib_inflateEnd(&strm);
up(&inflate_sem);
}
+ jffs2_zlib_decompress(data_in,cpage_out,srclen,destlen);
+}
+
-Index: linux-2.4.35.4/fs/jffs2/file.c
-===================================================================
---- linux-2.4.35.4.orig/fs/jffs2/file.c 2007-12-15 05:19:42.594848380 +0100
-+++ linux-2.4.35.4/fs/jffs2/file.c 2007-12-15 05:19:49.307230896 +0100
+--- a/fs/jffs2/file.c
++++ b/fs/jffs2/file.c
@@ -35,6 +35,7 @@
*
*/
#include <linux/kernel.h>
#include <linux/mtd/compatmac.h> /* for min() */
#include <linux/slab.h>
-@@ -459,6 +460,7 @@
+@@ -459,6 +460,7 @@ int jffs2_commit_write (struct file *fil
comprbuf = kmalloc(cdatalen, GFP_KERNEL);
if (comprbuf) {
comprtype = jffs2_compress(page_address(pg)+ (file_ofs & (PAGE_CACHE_SIZE-1)), comprbuf, &datalen, &cdatalen);
}
if (comprtype == JFFS2_COMPR_NONE) {
-Index: linux-2.4.35.4/fs/jffs2/gc.c
-===================================================================
---- linux-2.4.35.4.orig/fs/jffs2/gc.c 2007-12-15 05:19:42.602848836 +0100
-+++ linux-2.4.35.4/fs/jffs2/gc.c 2007-12-15 05:19:49.311231126 +0100
+--- a/fs/jffs2/gc.c
++++ b/fs/jffs2/gc.c
@@ -35,6 +35,7 @@
*
*/
#include <linux/kernel.h>
#include <linux/mtd/mtd.h>
#include <linux/slab.h>
-@@ -651,6 +652,7 @@
+@@ -651,6 +652,7 @@ static int jffs2_garbage_collect_dnode(s
writebuf = pg_ptr + (offset & (PAGE_CACHE_SIZE -1));
if (comprbuf) {
comprtype = jffs2_compress(writebuf, comprbuf, &datalen, &cdatalen);
}
if (comprtype) {
-Index: linux-2.4.35.4/fs/jffs2/hpatch
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/hpatch 2007-12-15 05:19:49.311231126 +0100
+--- /dev/null
++++ b/fs/jffs2/hpatch
@@ -0,0 +1,191 @@
+#!/usr/bin/perl
+# A patch-like utility
+}
+file_end();
+close(CMD);
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_armlib_comp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_armlib_comp.c 2007-12-15 05:19:49.311231126 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_armlib_comp.c
@@ -0,0 +1,2224 @@
+/*
+ * JFFS2-BBC: armlib compressor plugin
+}
+
+/*END OF ARMLIB*/
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_framework.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_framework.c 2007-12-15 05:19:49.315231352 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_framework.c
@@ -0,0 +1,1324 @@
+/*
+ * JFFS2-BBC: Compression Framework
+}
+
+#endif
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_framework.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_framework.h 2007-12-15 05:19:49.315231352 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_framework.h
@@ -0,0 +1,202 @@
+/*
+ * JFFS2-BBC: Compression Framework - headers
+int jffs2_bbc_get_memory_counter(void);
+
+#endif
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_fs.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_fs.c 2007-12-15 05:19:49.315231352 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_fs.c
@@ -0,0 +1,331 @@
+/*
+ * JFFS2-BBC: File System Extension for Linux Kernel
+ jffs2_bbc_compressor_deinit();
+ remove_proc_entry("jffs2_bbc", NULL);
+}
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_fs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_fs.h 2007-12-15 05:19:49.315231352 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_fs.h
@@ -0,0 +1,30 @@
+/*
+ * JFFS2 BBC: File System Extension for Linux Kernel - headers
+
+void jffs2_bbc_proc_init(void);
+void jffs2_bbc_proc_deinit(void);
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzari_comp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzari_comp.c 2007-12-15 05:19:49.319231581 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_lzari_comp.c
@@ -0,0 +1,788 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+
+{
+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzari);
+}
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzhd_comp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzhd_comp.c 2007-12-15 05:19:49.319231581 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_lzhd_comp.c
@@ -0,0 +1,747 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+
+{
+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzhd);
+}
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzo_comp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzo_comp.c 2007-12-15 05:19:49.323231810 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_lzo_comp.c
@@ -0,0 +1,2435 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+
+{
+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzo);
+}
-Index: linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzss_comp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/jffs2_bbc_lzss_comp.c 2007-12-15 05:19:49.323231810 +0100
+--- /dev/null
++++ b/fs/jffs2/jffs2_bbc_lzss_comp.c
@@ -0,0 +1,385 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+
+{
+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzss);
+}
-Index: linux-2.4.35.4/fs/jffs2/linux-2.4.25.hpatch
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.4.35.4/fs/jffs2/linux-2.4.25.hpatch 2007-12-15 05:19:49.323231810 +0100
+--- /dev/null
++++ b/fs/jffs2/linux-2.4.25.hpatch
@@ -0,0 +1,97 @@
+FMakefile
+=BBC insertion
+?{
++ jffs2_bbc_proc_deinit(); /**BBC**/
++
-Index: linux-2.4.35.4/fs/jffs2/read.c
-===================================================================
---- linux-2.4.35.4.orig/fs/jffs2/read.c 2007-12-15 05:19:42.666852484 +0100
-+++ linux-2.4.35.4/fs/jffs2/read.c 2007-12-15 05:19:49.323231810 +0100
+--- a/fs/jffs2/read.c
++++ b/fs/jffs2/read.c
@@ -35,6 +35,7 @@
*
*/
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/jffs2.h>
-@@ -140,6 +141,7 @@
+@@ -140,6 +141,7 @@ int jffs2_read_dnode(struct jffs2_sb_inf
D2(printk(KERN_DEBUG "Data CRC matches calculated CRC %08x\n", crc));
if (ri->compr != JFFS2_COMPR_NONE) {
D2(printk(KERN_DEBUG "Decompress %d bytes from %p to %d bytes at %p\n", ri->csize, readbuf, ri->dsize, decomprbuf));
ret = jffs2_decompress(ri->compr, readbuf, decomprbuf, ri->csize, ri->dsize);
if (ret) {
printk(KERN_WARNING "Error: jffs2_decompress returned %d\n", ret);
-Index: linux-2.4.35.4/fs/jffs2/super.c
-===================================================================
---- linux-2.4.35.4.orig/fs/jffs2/super.c 2007-12-15 05:19:42.678853169 +0100
-+++ linux-2.4.35.4/fs/jffs2/super.c 2007-12-15 05:19:49.323231810 +0100
+--- a/fs/jffs2/super.c
++++ b/fs/jffs2/super.c
@@ -35,6 +35,7 @@
*
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
-@@ -272,6 +273,7 @@
+@@ -272,6 +273,7 @@ static struct super_block *jffs2_read_su
sb->s_magic = JFFS2_SUPER_MAGIC;
if (!(sb->s_flags & MS_RDONLY))
jffs2_start_garbage_collect_thread(c);
return sb;
out_root_i:
-@@ -288,6 +290,7 @@
+@@ -288,6 +290,7 @@ static struct super_block *jffs2_read_su
void jffs2_put_super (struct super_block *sb)
{
struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
D2(printk(KERN_DEBUG "jffs2: jffs2_put_super()\n"));
-@@ -344,6 +347,9 @@
+@@ -344,6 +347,9 @@ static int __init init_jffs2_fs(void)
{
int ret;
printk(KERN_NOTICE "JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.\n");
#ifdef JFFS2_OUT_OF_KERNEL
-@@ -388,6 +394,8 @@
+@@ -388,6 +394,8 @@ static int __init init_jffs2_fs(void)
static void __exit exit_jffs2_fs(void)
{