[Yaffs] yaffs on Linux 2.6.9 - patch 2 of 7

Frank Rowand frowand@mvista.com
Thu, 16 Dec 2004 17:34:53 -0800


This is a multi-part message in MIME format.
--------------040608000804060800070607
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit


--------------040608000804060800070607
Content-Type: text/plain;
 name="yaffs_kernel_02_fixup_in_kernel_tree.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="yaffs_kernel_02_fixup_in_kernel_tree.patch"

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
+	  <http://www.aleph1.co.uk/yaffs/>.
+
+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 <linux/config.h>
 
 #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 <linux/config.h>
+
 #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 <linux/config.h>
+
 #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 <linux/config.h>
+
 #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)

--------------040608000804060800070607--