[Yaffs] Yaffs2 vs. Yaffs1

Charles Manning manningc2 at actrix.gen.nz
Thu Jun 30 22:59:47 BST 2005


On Friday 01 July 2005 08:56, Andre Renaud wrote:
> Can someone give me a quick overview of how Yaffs2 differs from Yaffs1
> if you're using it on a 512 byte chunk/16 oob device? I've had a look at
> the source, and from what I could see it appears as if yaffs2 only works
> on 1024/32 devices, and the code for the 512/16 'appeared' to be the
> same as yaffs1 (that is probably where I'm wrong). For instance if I try
> to mount a 512/16 device using
> mount -t yaffs2 /dev/mtdblock/1 /mnt
> It complains that the geometry is incorrect (since  yaffs2 doesn't do
> that), but if I specify -t yaffs, what benefit am I getting over the
> previous release?

Hi Andre

There are really two parts to this answer:

YAFFS1 vs YAFFS2 NAND layout:

In YAFFS1, the NAND layout has been set up for 512-byte pages.

The YAFFS2 layout requires more spare (oob) area in flash to store the 
yaffs_PackedTags2 structure. Some people have suggested that by sqeezing 
bitbields, the same could be achieved on 512-byte pages, but the structure as 
it is requires 16 bytes (+ ECC bytes etc) - ie at least what is provided by a 
1k page.

YAFFS1 vs YAFFS2 code base:

The YAFFS1 code base has some hard coded 512-byte constants etc. These have 
been stripped out of YAFFS2. YAFFS2 does some things differently, eg. YAFFS1 
uses the stack for buffers, but YAFFS2 does not because in many situations 
(eg. Linux), the buffers get too big to put on the stack and they need 
compile-time knowledge of the size.

The YAFFS2 code base supports both the YAFFS2 layout as well as the YAFFS1 
layout through a backward compatability layer.

If you are just using 512-byte devices, then you will not notice much 
difference between YAFFS1 and 2. YAFFS2 has some slight differences to 
garbage collection and file deletion. With time, there will probably be more 
changes.

At present, there is no real benefit in running YAFFS2 in backward 
compatability mode (versus running YAFFS1), but it does mean that one chunk 
of code can be used for both.

-- CHarles








More information about the yaffs mailing list