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)