With the interest in YAFFS speed, I thought I'd take an opportunity to pre-announce some YAFFS2 speed-ups that are in the pipe. YAFFS2 is generally faster than YAFFS1 when executing for two reasons: * It does not program deletion markers. This makes things faster when chunks are reprogrammed. * Chunk/page size is bigger therefore faster programming. YAFFS2 does not delete chunks (== pages) like YAFFS1 does and instead figures out the system state by scanning the blocks in their allocation order. This means that a deleted file would get formed then deleted, all of which take extra (wasted) time. This means that YAFFS2 is sometimes quite a bit slower than YAFFS1 for mounting, depending on the state of NAND. Someone using YAFFS2 suggested a change to the scanning policy to speed this scanning up. Instead of scanning forwards in time the proposal was to scan the blocks backwards (ie. most recent allocated block first). Consider the case of the deleted file: we see the file is deleted and then just ignore any further references to that file. Simultaneously with this, I also added an optimisation to store some extra info in the tags for object header chunks. This means that we no longer need to read the whole chunk to get most of the object header info needed during mount scanning. Together these modifications have shown some huge speedups, typically much faster than yaffs(1). They also pave the way for adding "checkpointing" etc. These speedups are not yet in CVS, but I intend to check them in this week. -- Charles