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

Top Page
Attachments:
Message as email
+ (text/plain)
+ yaffs_kernel_02_fixup_in_kernel_tree.patch (text/plain)
Delete this message
Reply to this message
Author: Frank Rowand
Date:  
To: yaffs
CC: frowand
Subject: [Yaffs] yaffs on Linux 2.6.9 - patch 2 of 7
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)