Index: linux-2.6.9/fs/Makefile
===================================================================
--- linux-2.6.9.orig/fs/Makefile
+++ linux-2.6.9/fs/Makefile
@@ -93,3 +93,4 @@
obj-$(CONFIG_BEFS_FS) += befs/
obj-$(CONFIG_HOSTFS) += hostfs/
obj-$(CONFIG_HPPFS) += hppfs/
+obj-$(CONFIG_YAFFS_FS) += yaffs/
Index: linux-2.6.9/fs/yaffs/Makefile
===================================================================
--- /dev/null
+++ linux-2.6.9/fs/yaffs/Makefile
@@ -0,0 +1,13 @@
+
+#
+# Makefile for the linux YAFFS filesystem routines.
+#
+
+obj-$(CONFIG_YAFFS_FS) += yaffs.o
+
+# do not need to build nand_ecc.o yaffsdev.o yaffs_fileem.o yaffs-header.c
+
+yaffs-y := yaffs_ecc.o yaffs_fs.o yaffs_guts.o
+
+yaffs-$(CONFIG_YAFFS_MTD_ENABLED) += yaffs_mtdif.o
+yaffs-$(CONFIG_YAFFS_RAM_ENABLED) += yaffs_ramem.o
Index: linux-2.6.9/fs/Kconfig
===================================================================
--- linux-2.6.9.orig/fs/Kconfig
+++ linux-2.6.9/fs/Kconfig
@@ -1371,6 +1371,133 @@
Say Y here if you want to try writing to UFS partitions. This is
experimental, so you should back up your UFS partitions beforehand.
+config YAFFS_FS
+ tristate "Yet Another Flash Filing System(YAFFS) file system support"
+ help
+ YAFFS, for Yet Another Flash Filing System, is a filing system
+ optimised for NAND Flash chips.
+
+ To compile the YAFFS file system support as a module, choose M here:
+ the module will be called yaffs.
+
+ If unsure, say N.
+
+ Further information on YAFFS is available at
+ .
+
+config YAFFS_MTD_ENABLED
+ bool "NAND mtd support"
+ depends on YAFFS_FS
+ help
+ This adds the yaffs file system support for working with a NAND mtd.
+
+ If unsure, say Y.
+
+config YAFFS_RAM_ENABLED
+ bool "yaffsram file system support"
+ depends on YAFFS_FS
+ help
+ This adds the yaffsram file system support. Nice for testing on x86,
+ but uses 2MB of RAM. Don't enable for NAND-based targets.
+
+ If unsure, say N.
+
+comment "WARNING: mtd and/or yaffsram support should be selected"
+ depends on YAFFS_FS && !YAFFS_MTD_ENABLED && !YAFFS_RAM_ENABLED
+
+config YAFFS_USE_OLD_MTD
+ bool "Old mtd support"
+ depends on YAFFS_FS && 0
+ help
+ Enable this to use the old MTD stuff that did not have yaffs support.
+ You can use this to get around compilation problems, but the best
+ thing to do is to upgrade your MTD support. You will get better speed.
+
+ If unsure, say N.
+
+config YAFFS_USE_NANDECC
+ bool "Use ECC functions of the generic MTD-NAND driver"
+ depends on YAFFS_FS
+ default y
+ help
+ This enables the ECC functions of the generic MTD-NAND driver.
+ This will not work if you are using the old mtd.
+
+ NB Use NAND ECC does not work at present with yaffsram.
+
+ If unsure, say Y.
+
+config YAFFS_ECC_WRONG_ORDER
+ bool "Use the same ecc byte order as Steven Hill's nand_ecc.c"
+ depends on YAFFS_FS
+ help
+ This makes yaffs_ecc.c use the same ecc byte order as
+ Steven Hill's nand_ecc.c. If not set, then you get the
+ same ecc byte order as SmartMedia.
+
+ If unsure, say N.
+
+config YAFFS_USE_GENERIC_RW
+ bool "Use Linux file caching layer"
+ default y
+ depends on YAFFS_FS
+ help
+ Use generic_read/generic_write for reading/writing files. This
+ enables the use of the Linux file caching layer.
+
+ If you disable this, then caching is disabled and file read/write
+ is direct.
+
+ If unsure, say Y.
+
+config YAFFS_USE_HEADER_FILE_SIZE
+ bool "Use object header size"
+ depends on YAFFS_FS
+ help
+ When the flash is scanned, two file sizes are constructed:
+ * The size taken from the object header for the file.
+ * The size figured out by scanning the data chunks.
+ If this option is enabled, then the object header size is used,
+ otherwise the scanned size is used.
+
+ If unsure, say N.
+
+config YAFFS_DISABLE_CHUNK_ERASED_CHECK
+ bool "Turn off debug chunk erase check"
+ depends on YAFFS_FS
+ default y
+ help
+ Enabling this turns off the test that chunks are erased in flash
+ before writing to them. This is safe, since the write verification
+ will fail. Suggest enabling the test (ie. say N)
+ during development to help debug things.
+
+ If unsure, say Y.
+
+#config YAFFS_DISABLE_WRITE_VERIFY
+# bool "Disable write verify (DANGEROUS)"
+# depends on YAFFS_FS && EXPERIMENTAL
+# help
+# I am severely reluctant to provide this config. Disabling the
+# verification is not a good thing to do since NAND writes can
+# fail silently. Disabling the write verification will cause your
+# teeth to rot, rats to eat your corn and give you split ends.
+# You have been warned. ie. Don't uncomment the following line.
+#
+# If unsure, say N.
+#
+
+config YAFFS_SHORT_NAMES_IN_RAM
+ bool "Cache short names in RAM"
+ depends on YAFFS_FS
+ default y
+ help
+ If this config is set, then short names are stored with the
+ yaffs_Object. This costs an extra 16 bytes of RAM per object,
+ but makes look-ups faster.
+
+ If unsure, say Y.
+
endmenu
menu "Network File Systems"
Index: linux-2.6.9/fs/yaffs/yaffs_ecc.c
===================================================================
--- linux-2.6.9.orig/fs/yaffs/yaffs_ecc.c
+++ linux-2.6.9/fs/yaffs/yaffs_ecc.c
@@ -31,6 +31,7 @@
const char *yaffs_ecc_c_version = "$Id: yaffs_ecc.c,v 1.3 2004/04/04 03:47:02 charles Exp $";
+#include
#include "yaffs_ecc.h"
Index: linux-2.6.9/fs/yaffs/yaffs_guts.c
===================================================================
--- linux-2.6.9.orig/fs/yaffs/yaffs_guts.c
+++ linux-2.6.9/fs/yaffs/yaffs_guts.c
@@ -16,6 +16,8 @@
const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.37 2004/10/20 20:12:43 charles Exp $";
+#include
+
#include "yportenv.h"
#include "yaffsinterface.h"
Index: linux-2.6.9/fs/yaffs/yaffs_ramem.c
===================================================================
--- linux-2.6.9.orig/fs/yaffs/yaffs_ramem.c
+++ linux-2.6.9/fs/yaffs/yaffs_ramem.c
@@ -17,6 +17,8 @@
const char *yaffs_ramem_c_version = "$Id: yaffs_ramem.c,v 1.6 2002/11/26 01:15:37 charles Exp $";
+#include
+
#ifndef __KERNEL__
#define CONFIG_YAFFS_RAM_ENABLED
#endif
Index: linux-2.6.9/fs/yaffs/yaffs_mtdif.c
===================================================================
--- linux-2.6.9.orig/fs/yaffs/yaffs_mtdif.c
+++ linux-2.6.9/fs/yaffs/yaffs_mtdif.c
@@ -15,6 +15,8 @@
const char *yaffs_mtdif_c_version = "$Id: yaffs_mtdif.c,v 1.10 2004/09/19 08:14:50 charles Exp $";
+#include
+
#ifdef CONFIG_YAFFS_MTD_ENABLED
#include "yportenv.h"
Index: linux-2.6.9/fs/yaffs/yaffs_fs.c
===================================================================
--- linux-2.6.9.orig/fs/yaffs/yaffs_fs.c
+++ linux-2.6.9/fs/yaffs/yaffs_fs.c
@@ -1301,7 +1301,11 @@
#ifdef CONFIG_YAFFS_RAM_ENABLED
// Set the yaffs_Device up for ram emulation
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+ sb->s_fs_info = dev = kmalloc(sizeof(yaffs_Device),GFP_KERNEL);
+#else
sb->u.generic_sbp = dev = kmalloc(sizeof(yaffs_Device),GFP_KERNEL);
+#endif
if(!dev)
{
// Deep shit could not allocate device structure
@@ -1525,13 +1529,15 @@
/* changes NCB 2.5.70 */
//static DECLARE_FSTYPE(yaffs_fs_type, "yaffs", yaffs_read_super, FS_REQUIRES_DEV);
-static struct file_system_type yaffs_fs_type = {
+static struct file_system_type yaffs_ram_fs_type = {
.owner = THIS_MODULE,
.name = "yaffsram",
.get_sb = yaffs_ram_read_super,
// .kill_sb = kill_block_super,
.kill_sb = kill_litter_super,
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,5,0))
.fs_flags = FS_SINGLE,
+#endif
};
#else
static struct super_block *yaffs_ram_read_super(struct super_block * sb, void * data, int silent)