diff -Nrup linux-2.6.0-test4-uc0/fs/Kconfig linux-2.6.x/fs/Kconfig
--- linux-2.6.0-test4-uc0/fs/Kconfig	2003-08-23 01:56:58.000000000 +0200
+++ linux-2.6.x/fs/Kconfig	2003-08-23 05:18:17.000000000 +0200
@@ -1095,6 +1095,17 @@ config JFFS2_FS_NAND
 	  Say 'N' unless you have NAND flash and you are willing to test and
 	  develop JFFS2 support for it.
 
+config JFFS2_FS_GC_TWEAKS
+	bool "Tweak JFFS2 garbage collector for Am29PL160 flash (EXPERIMENTAL)"
+	depends on JFFS2_FS && EXPERIMENTAL
+	default n
+	help
+	  The Am29PL160 flash device used some embedded boards such as Motorola's
+	  M5272C3 EVM is a 2MB device with just 7 big blocks of 256KB.
+
+	  By enabling this option, the GC parameters will be dangerously tweaked
+	  to allow writing to a device with very few blocks.
+
 config CRAMFS
 	tristate "Compressed ROM file system support"
 	select ZLIB_INFLATE
diff -Nrup linux-2.6.0-test4-uc0/fs/jffs2/nodelist.h linux-2.6.x/fs/jffs2/nodelist.h
--- linux-2.6.0-test4-uc0/fs/jffs2/nodelist.h	2003-08-23 02:03:19.000000000 +0200
+++ linux-2.6.x/fs/jffs2/nodelist.h	2003-08-23 05:18:17.000000000 +0200
@@ -240,6 +240,20 @@ struct jffs2_eraseblock
 #define ALLOC_DELETION	1	/* Deletion node. Best to allow it */
 #define ALLOC_GC	2	/* Space requested for GC. Give it or die */
 
+
+/* Settings for Am29PL160 flash device, with big 256k blocks */
+#ifdef CONFIG_JFFS2_FS_GC_TWEAKS
+
+#define JFFS2_RESERVED_BLOCKS_BASE 1						/* Number of free blocks there must be before we... */
+#define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 1)		/* ... allow a normal filesystem write */
+#define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE)		/* ... allow a normal filesystem deletion */
+#define JFFS2_RESERVED_BLOCKS_GCTRIGGER (JFFS2_RESERVED_BLOCKS_BASE + 1)	/* ... wake up the GC thread */
+#define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE)                /* ... pick a block from the bad_list to GC */
+#define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE)	        /* ... merge pages when garbage collecting */
+
+#else /* !CONFIG_JFFS2_FS_GC_TWEAKS */
+
+/* Sane settings */
 #define JFFS2_RESERVED_BLOCKS_BASE 3						/* Number of free blocks there must be before we... */
 #define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 2)		/* ... allow a normal filesystem write */
 #define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE)		/* ... allow a normal filesystem deletion */
@@ -247,6 +261,8 @@ struct jffs2_eraseblock
 #define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE + 1)		/* ... pick a block from the bad_list to GC */
 #define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE)		/* ... merge pages when garbage collecting */
 
+#endif /* !CONFIG_JFFS2_FS_GC_TWEAKS */
+
 
 /* How much dirty space before it goes on the very_dirty_list */
 #define VERYDIRTY(c, size) ((size) >= ((c)->sector_size / 2))
