X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_guts.h;h=3647d6bce6cd629dfcc483edead75c5519809a17;hp=cf193914b4044bd2790a6a5d818eb73a7dd9bd35;hb=6db5aca55acb7c8af07c8ec90ba8dd9085ab0895;hpb=329ebf2e9014af0fa876cd860a4525e2a98a0d50 diff --git a/yaffs_guts.h b/yaffs_guts.h index cf19391..3647d6b 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -1,7 +1,7 @@ /* * 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 @@ -689,10 +689,6 @@ struct yaffs_DeviceStruct { int nFreeTnodes; yaffs_TnodeList *allocatedTnodeList; - int isDoingGC; - int gcBlock; - int gcChunk; - int nObjectsCreated; yaffs_Object *freeObjects; int nFreeObjects; @@ -706,12 +702,18 @@ struct yaffs_DeviceStruct { 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; @@ -746,6 +748,7 @@ struct yaffs_DeviceStruct { /* 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. */ @@ -760,8 +763,10 @@ struct yaffs_DeviceStruct { __u32 nBlockErasures; __u32 nErasureFailures; __u32 nGCCopies; - __u32 garbageCollections; - __u32 passiveGarbageCollections; + __u32 allGCs; + __u32 passiveGCs; + __u32 oldestDirtyGCs; + __u32 backgroundGCs; __u32 nRetriedWrites; __u32 nRetiredBlocks; __u32 eccFixed; @@ -892,9 +897,9 @@ void yfsd_WinFileTimeNow(__u32 target[2]); 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);