+/*
+ * yaffs background thread functions .
+ * yaffs_BackgroundThread() the thread function
+ * yaffs_BackgroundStart() launches the background thread.
+ * yaffs_BackgroundStop() cleans up the background thread.
+ *
+ * NB:
+ * The thread should only run after the yaffs is initialised
+ * The thread should be stopped before yaffs is unmounted.
+ * 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;
+ struct yaffs_LinuxContext *context = yaffs_DeviceToContext(dev);
+
+ T(YAFFS_TRACE_BACKGROUND,
+ ("yaffs_background starting for dev %p\n",
+ (void *)dev));
+
+ while(context->bgRunning){
+ T(YAFFS_TRACE_BACKGROUND,
+ ("yaffs_background\n"));
+
+ if(kthread_should_stop())
+ break;
+ yaffs_GrossLock(dev);
+ yaffs_UpdateDirtyDirectories(dev);