changeset 374:043bd07468b6

Add conditional compilation for background processing
author charles <charles>
date Wed, 10 Mar 2010 01:22:19 +0000
parents 59862f4bbd87
children b3ebe9f0a186
files Kconfig moduleconfig.h yaffs_fs.c
diffstat 3 files changed, 48 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Kconfig
+++ b/Kconfig
@@ -175,6 +175,8 @@ config YAFFS_EMPTY_LOST_AND_FOUND
 	  If this is enabled then the contents of lost and found is
 	  automatically dumped at mount.
 
+	  If unsure, say N.
+
 config YAFFS_DISABLE_BLOCK_REFRESHING
 	bool "Disable yaffs2 block refreshing"
 	depends on YAFFS_FS
@@ -184,3 +186,15 @@ config YAFFS_DISABLE_BLOCK_REFRESHING
 	 Block refreshing infrequently refreshes the oldest block in
 	 a yaffs2 file system. This mechanism helps to refresh flash to
 	 mitigate against data loss. This is particularly useful for MLC.
+
+	  If unsure, say N.
+
+config YAFFS_DISABLE_BACKGROUND
+	bool "Disable yaffs2 background processing"
+	depends on YAFFS_FS
+	default n
+	help
+	 If this is set, then background processing is disabled.
+	 Background processing makes many foreground activities faster.
+
+	  If unsure, say N.
--- a/moduleconfig.h
+++ b/moduleconfig.h
@@ -57,6 +57,10 @@
 /* Block Refreshing periodically rewrites the oldest block. */
 /* #define CONFIG_DISABLE_BLOCK_REFRESHING */
 
+/* Default: Unselected */
+/* Meaning: Select to disable background processing */
+/* #define CONFIG_DISABLE_BACKGROUND */
+
 
 /*
 Older-style on-NAND data format has a "pageStatus" byte to record
--- a/yaffs_fs.c
+++ b/yaffs_fs.c
@@ -32,10 +32,15 @@
  */
 
 const char *yaffs_fs_c_version =
-    "$Id: yaffs_fs.c,v 1.97 2010-03-09 04:12:00 charles Exp $";
+    "$Id: yaffs_fs.c,v 1.98 2010-03-10 01:22:19 charles Exp $";
 extern const char *yaffs_guts_c_version;
 
 #include <linux/version.h>
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 10))
+#define YAFFS_COMPILE_BACKGROUND
+#endif
+
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19))
 #include <linux/config.h>
 #endif
@@ -52,7 +57,11 @@ extern const char *yaffs_guts_c_version;
 #include <linux/string.h>
 #include <linux/ctype.h>
 
+#ifdef YAFFS_COMPILE_BACKGROUND
 #include <linux/kthread.h>
+#include <linux/delay.h>
+#endif
+
 
 #include "asm/div64.h"
 
@@ -1840,6 +1849,7 @@ static int yaffs_do_sync_fs(struct super
  * The thread should not do any writing while the fs is in read only.
  */
 
+#ifdef YAFFS_COMPILE_BACKGROUND
 static int yaffs_BackgroundThread(void *data)
 {
 	yaffs_Device *dev = (yaffs_Device *)data;
@@ -1892,6 +1902,22 @@ static void yaffs_BackgroundStop(yaffs_D
 		ctxt->bgThread = NULL;
 	}
 }
+#else
+static int yaffs_BackgroundThread(void *data)
+{
+	return 0;
+}
+
+static int yaffs_BackgroundStart(yaffs_Device *dev)
+{
+	return 0;
+}
+
+static void yaffs_BackgroundStop(yaffs_Device *dev)
+{
+}
+#endif
+
 
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 17))
 static void yaffs_write_super(struct super_block *sb)
@@ -2370,7 +2396,10 @@ static struct super_block *yaffs_interna
 	param->noTagsECC = 1;
 #endif
 
+#ifdef CONFIG_YAFFS_DISABLE_BACKGROUND
+#else
 	param->deferDirectoryUpdate = 1;
+#endif
 
 	if(options.tags_ecc_overridden)
 		param->noTagsECC = !options.tags_ecc_on;