YAFFS stands for Yet Another Flash File System, a term coined by Charles Manning in 2001 when suggesting that the already cluttered flash file system space could do with yet another offering – this time a flash file system designed from the ground up to work with NAND flash.

The first release of YAFFS was developed during the end of 2001 and the beginning of 2002. By mid­2002, YAFFS was being trialled in various products. In May 2002, YAFFS was announced and a few more projects started playing with it. In June, porting to other OSs started. In September 2002, YAFFS was announced on linuxdevices.com which started a far wider uptake of YAFFS.

YAFFS1, the original version of YAFFS, supported 512­byte page NAND devices with a SmartMedia­like memory layout. YAFFS2 is a follow­up to YAFFS1 extending YAFFS1 to support larger and different devices with different constraints.

YAFFSis highly portable and has been used in many different products and applications as varied as sewing machines, point of sale, phones and aerospace. YAFFS has been used with multiple different operating systems. Native support is available for Linux, WindowsCE and eCOS while yaffs Direct Interface provides a layer that can be used in other applications such as RTOSs. YAFFS has been used with multiple different CPUs and compilers.

YAFFS has also been used as a NOR file system and even as a RAM file system.

There are two versions of YAFFS code: the original yaffs code­base and the current yaffs2 code­base. The yaffs2 code­base supports functionality provided by the yaffs code­base as well as being extended with new functionality to provide extra modes of operation, most importantly those required to work with larger and more modern NAND parts. The yaffs2 code­ base supports the yaffs1 mode of operation through a backward compatibility mode.

YAFFS1 is a simpler mode of operation that uses deletion markers to track state. YAFFS2 is a more complex mode of operating that was developed to support larger flash types that cannot used deletion markers. YAFFS means operations common to both. YAFFS1 originally only worked with 512­byte page devices but has been extended to support larger flash pages such as Intel M18 flash with 1k pages. YAFFS2 was originally designed for 1k or larger page sizes but can be used with smaller pages by using in­band tags.


[1] "YAFFS (Yet Another Flash File System)" by Charles Manning (and Wookey), Version 0.3, December 2001 [HTML]

[2] "YAFFS 2 Specification and Development Notes" by By Wookey, May 2005 [HTML]

[3] "How YAFFS Works" by Charles Manning, 2007 - 2010 [PDF]


© 2004 - 2011 [Vyacheslav Dubeyko | Äķáåéęî Â˙÷åņëāâ] slava@dubeiko.com