Fix typo
[yaffs2.git] / yaffs_guts.h
index 53ab280aa67173d3dec74dba29b42805b34c77ca..7643dfc6d2805d9201ed29059275738ef0022ac5 100644 (file)
@@ -63,7 +63,7 @@
 
 #define YAFFS_OBJECT_SPACE             0x40000
 
-#define YAFFS_CHECKPOINT_VERSION       3
+#define YAFFS_CHECKPOINT_VERSION       4
 
 #ifdef CONFIG_YAFFS_UNICODE
 #define YAFFS_MAX_NAME_LENGTH          127
@@ -386,6 +386,7 @@ typedef struct {
 
 typedef struct {
        struct ylist_head children;     /* list of child links */
+       struct ylist_head dirty;        /* Entry for list of dirty directories */
 } yaffs_DirectoryStructure;
 
 typedef struct {
@@ -557,6 +558,8 @@ struct yaffs_DeviceParamStruct {
 
        int emptyLostAndFound;  /* Auto-empty lost+found directory on mount */
 
+       int refreshPeriod;      /* How often we should check to do a block refresh */
+
        /* Checkpoint control. Can be set before or after initialisation */
        __u8 skipCheckpointRead;
        __u8 skipCheckpointWrite;
@@ -600,12 +603,9 @@ struct yaffs_DeviceParamStruct {
        int useHeaderFileSize;  /* Flag to determine if we should use file sizes from the header */
        int disableLazyLoad;    /* Disable lazy loading on this device */
        int wideTnodesDisabled; /* Set to disable wide tnodes */
-
-       YCHAR *pathDividers;    /* String of legal path dividers */
-
        
-
-       /* End of stuff that must be set before initialisation. */
+       int deferDirectoryUpdate; /* Set to defer directory updates */
+       
 };
 
 typedef struct yaffs_DeviceParamStruct yaffs_DeviceParam;
@@ -698,6 +698,7 @@ struct yaffs_DeviceStruct {
        yaffs_ObjectList *allocatedObjectList;
 
        yaffs_ObjectBucket objectBucket[YAFFS_NOBJECT_BUCKETS];
+       __u32 bucketFinder;
 
        int nFreeChunks;
 
@@ -723,8 +724,6 @@ struct yaffs_DeviceStruct {
        yaffs_ChunkCache *srCache;
        int srLastUse;
 
-       int cacheHits;
-
        /* Stuff for background deletion and unlinked files.*/
        yaffs_Object *unlinkedDir;      /* Directory where unlinked and deleted files live. */
        yaffs_Object *deletedDir;       /* Directory where deleted objects are sent to disappear. */
@@ -733,7 +732,6 @@ struct yaffs_DeviceStruct {
        int nUnlinkedFiles;             /* Count of unlinked files. */
        int nBackgroundDeletions;       /* Count of background deletions. */
 
-
        /* Temporary buffer management */
        yaffs_TempBuffer tempBuffer[YAFFS_N_TEMP_BUFFERS];
        int maxTemp;
@@ -744,7 +742,13 @@ struct yaffs_DeviceStruct {
        /* yaffs2 runtime stuff */
        unsigned sequenceNumber;        /* Sequence number of currently allocating block */
        unsigned oldestDirtySequence;
-       
+
+       /* Block refreshing */
+       int refreshSkip;        /* A skip down counter. Refresh happens when this gets to zero. */
+
+       /* Dirty directory handling */
+       struct ylist_head dirtyDirectories; /* List of dirty directories */
+
 
        /* Statistcs */
        int nPageWrites;
@@ -762,6 +766,9 @@ struct yaffs_DeviceStruct {
        int tagsEccUnfixed;
        int nDeletions;
        int nUnmarkedDeletions;
+       int refreshCount;
+       int cacheHits;
+
 };
 
 typedef struct yaffs_DeviceStruct yaffs_Device;
@@ -793,7 +800,6 @@ typedef struct {
 
        /* yaffs2 runtime stuff */
        unsigned sequenceNumber;        /* Sequence number of currently allocating block */
-       unsigned oldestDirtySequence;
 
 } yaffs_CheckpointDevice;
 
@@ -882,6 +888,10 @@ void yfsd_WinFileTimeNow(__u32 target[2]);
 
 void yaffs_HandleDeferedFree(yaffs_Object *obj);
 
+
+void yaffs_UpdateDirtyDirectories(yaffs_Device *dev);
+
+
 /* Debug dump  */
 int yaffs_DumpObject(yaffs_Object *obj);
 
@@ -896,4 +906,5 @@ void yaffs_HandleChunkError(yaffs_Device *dev, yaffs_BlockInfo *bi);
 __u8 *yaffs_GetTempBuffer(yaffs_Device *dev, int lineNo);
 void yaffs_ReleaseTempBuffer(yaffs_Device *dev, __u8 *buffer, int lineNo);
 
+
 #endif