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