[Yaffs] Re: Mounting behaviour of YAFFS - how it behaves in time
compared to JFFS2?
Martin Egholm Nielsen
martin at egholm-nielsen.dk
Tue Jul 26 08:42:31 BST 2005
>>Will YAFFS' worst case scenario be somewhat like the time it takes to
>>perform "dd if=/dev/mtd0 of=/dev/null"? (In my sitation ~20 secs)
> There are some differences between YAFFS1 and YAFFS2 here, so I will split
> them apart.
>
> To see this in code form, read yaffs_Scan for YAFFS1 scanning and
> yaffs_ScanBackwards for YAFFS2 scanning.
>
> The main difference is that YAFFS1 has deleted tags markers while YAFFS2 does
> not. This makes the scanning different.
> YAFFS1 scanning looks more or less like:
>
> for(all blocks)
> for(all written chunks in block)
> read tags (ie read oob/spare)
> if(!tags.deleted)
> {
> if(tags says it is an object header)
> read whole chunk to extract file info
> else
> if is a data chunk, insert into tree
> }
>
> YAFFS2 scanning looks like:
>
> for(all written blocks backwards)
> for(all written chunks in block backwards
> read tags (ie read oob/spare)
> if(tags says it is an object header and we don't yet have file info)
Maybe a silly question: What if a newer version of the object header is
put in a block at the beginning of the flash - then it will never be read?
> read whole chunk to extract file info
> else if it is a data chunk
> if is a data chunk, insert into tree
> }
> As you can see, in both cases, YAFFS only reads the nand once [well yaffs2
> also reads one chunk per block to determine if the block is written first].
> YAFFS only makes one pass.
>
> Most chunks will be data chunks and only the oob/spare needs to be read.
>
> The absolutely worst case would be a file system that is full of file headers
> (ie. thousands of zero length files). In this case, the whole nand would have
> to be read **once**.
And then in addition to that there is also the extensive node-tree
manipulation in memory (I guess) which may scale differently, depending
on number of nodes and data-structure strategy (linked list, tree
structure, etc.)...
>>>BTW: I'm not knocking JFFS2 here, I think it definitely has its place
>>>where space is very limited. The transition point is probably around
>>>16MB, depending of course on application needs.
>>I'm really considering it...
> I cannot force you, but I think you will be happy. Most people that have moved
> have reported a significant improvement is performance.
Yes, I clearly see a faster read/write access... But I'm still concerned
about the ECC... Maybe I should try yaffs2?!
// Martin
More information about the yaffs
mailing list