/*
* YAFFS: Yet another Flash File System . A NAND-flash specific file system.
*
- * Copyright (C) 2002-2007 Aleph One Ltd.
+ * Copyright (C) 2002-2010 Aleph One Ltd.
* for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
int nFreeTnodes;
yaffs_TnodeList *allocatedTnodeList;
- int isDoingGC;
- int gcBlock;
- int gcChunk;
-
int nObjectsCreated;
yaffs_Object *freeObjects;
int nFreeObjects;
int nFreeChunks;
- int currentDirtyChecker; /* Used to find current dirtiest block */
-
+ /* Garbage collection control */
__u32 *gcCleanupList; /* objects to delete at the end of a GC. */
- int nonAggressiveSkip; /* GC state/mode */
- int hasPendingPrioritisedGCs; /* We think this device might have pending prioritised gcs */
+ unsigned hasPendingPrioritisedGCs; /* We think this device might have pending prioritised gcs */
+ unsigned gcDisable;
+ unsigned gcBlockFinder;
+ unsigned gcDirtiest;
+ unsigned gcPagesInUse;
+ unsigned gcNotDone;
+ unsigned gcBlock;
+ unsigned gcChunk;
+ unsigned gcSkip;
/* Special directories */
yaffs_Object *rootDir;
/* yaffs2 runtime stuff */
unsigned sequenceNumber; /* Sequence number of currently allocating block */
unsigned oldestDirtySequence;
+ unsigned oldestDirtyBlock;
/* Block refreshing */
int refreshSkip; /* A skip down counter. Refresh happens when this gets to zero. */
__u32 nBlockErasures;
__u32 nErasureFailures;
__u32 nGCCopies;
- __u32 garbageCollections;
- __u32 passiveGarbageCollections;
+ __u32 allGCs;
+ __u32 passiveGCs;
+ __u32 oldestDirtyGCs;
+ __u32 backgroundGCs;
__u32 nRetriedWrites;
__u32 nRetiredBlocks;
__u32 eccFixed;
void yaffs_HandleDeferedFree(yaffs_Object *obj);
-
void yaffs_UpdateDirtyDirectories(yaffs_Device *dev);
+int yaffs_BackgroundGarbageCollect(yaffs_Device *dev, unsigned urgency);
/* Debug dump */
int yaffs_DumpObject(yaffs_Object *obj);