James, On Wednesday 08 August 2007 19:07, James Kehl wrote: > > The yaffsVersion variable, displayed as isYaffs2 in > > /proc/yaffs, shows which yaffs methods are being used. So > > called Yaffs1 methods are used when the underlying device is > > a small-page (512) NAND chip. Yaffs2 methods are used when > > the underlying device is large-page (2k). Yaffs operates > > differently on these two types of NAND. > > > > The "yaffs2" codebase at cvs.aleph1.co.uk:/home/aleph1/cvs > > supports both page sizes, both sets of methods. When it > > runs with a small-page device, it runs much like the > > original "yaffs" codebase. > > I thought Yaffs2 used a completely different format, one that > avoided writing pages multiple times (i.e. no 'deleted' bit)? there is a deleted bit (or byte) for small-page tags. > Or is this only used for large page devices? yes - only the large page methods avoid the "multiple write". there are only ever two writes: original + invalidate. ==== There is confusion caused by the fact that there was the "original" version of Yaffs that supported only small-pages devices. Then there were whole lot of changes to support large-page devices, and this resulted in a new major version of Yaffs which is called "yaffs2" in the CVS repository. The newer version, yaffs2, supports both small and large pages devices. When it encounters a small-page device, it runs very much like the "original" yaffs code. On large-page devices, yaffs2 is able to use a more extensive set of tags/metadata because there's more room in the large page oob/spare area. One of the additional items in the large-page tags is a sequence number. The presence of this makes it possible to avoid the page rewrite (single occurrence) that is used to invalidate small-page tags/metadata. -imcd