Robust Flash Storage Since 2002    

Yaffs History

Yaffs came about because Toby Churchill Ltd (TCL) needed a flash filing system for their devices. They wanted something reliable and one of their fundamental requirements was fast boot time. We looked at adding NAND support to the existing flash filesystems, JFFS and particularly JFFS2, but it became clear that the boot time and ram consumption (a 128MB NAND would use about 4MB RAM in node tables) were a problem, and adding NAND support wasn’t trivial either (but has since been done). In the end we decided a different filing system explicitly for NAND was the way to go. The design was greatly simplified by not including compression in the FS - which makes sense as nearly all the large data files TCL used were compressed anyway, and the larger size of NAND devices makes compression less important. A cramfs filesystem can be mounted within Yaffs if you need to compress some of your data.

The original work was paid for by Toby Churchill Ltd, the project instigators, and Brightstar Engineering.

Here is a collection of notable events and milestones in the history of Yaffs.

  • 2006.10 Yaffs updated to work properly with Linux 2.6.17+ MTD on 512B and 2K page NAND
  • 2006.05.08 Checkpointing added - so start-up scanning time enormously reduced
  • 2004.08.02 Linux kernel 2.6 support checked in.
  • 2004.02 Yaffs presentation given at FOSDEM on embedded track
  • 2003.06.21 Yaffs runs with Linux kernel 2.5.70.
  • 2003.05 First two Yaffs/direct licencees.
  • 2003.04 Yaffs/direct non-GPL license option created for those who can’t use the GPL.
  • 2003.03.07 ViewCVS installed to make CVS browsing much easier and help those behind CVS-blocking firewalls get access to the code.
  • 2003.01 Yaffs Direct ported to pSOS.
  • 2003.01.21 ‘Yaffs Direct Interface’ checked in - a version of Yaffs designed for integration into lightweight RTOSs and embedded systems.
  • 2003.01.21 Yaffs Bootloader example code checked in, so your bootloader can read directly from Yaffs.
  • 2002.11.04 Yaffs2 spec announced for discussion.
  • 2002.11.08 WinCE port code checked-in to CVS.
  • 2002.09.23 Announced to the world.
  • 2002.09.17 Header files relicensed under LGPL to make it easier to add Yaffs support to bootloaders or other non-free software.
  • 2002.09.13 Stand-alone system using Yaffs root partition booted.
  • 2002.08 WinCE Yaffs port working.
  • 2002.05.20 MTD interface tested on hardware emulation and some real hardware.
  • 2002.05.14 v0.1 release. MTD interface done and incorporated. This is essentially untested. yaffs.o provides two file systems (one to support internal RAM emulation [called yaffsram] and the other mtd [called yaffs]). Docs improved/updated. mkyaffs filesystem creator written.
  • 2002.04.24 Now includes device contexts, (but as there is only one emulation instance this isn’t any practical use yet), some bugs fixed and disk full handling. Still some VFS problems apparent in sub-directories. Statfs, attributes still to do, symlinks and hardlinks not yet wired to VFS layer.
  • 2002.04.15 kernel module that runs as an fs on 2MB internal emulation. The core filing-system seems to work pretty well. Some problems remain in the VFS layer producing various odd effects. Only one instance of the fs supported
  • 2002.04.03 Core fs runs on emulation layer (instead of real NAND), create/read/write/delte/resize/reanem files, create directories, scans media on startup, garbage collection.