About this project
Goal of this project
Develop a flash file system for NetBSD.
CHFS is designed for raw flash devices (especially for NAND). These devices are devided to small (usually 256k or 512k) eraseblocks. You can't remove any size of data from any part of the media. You must delete a whole eraseblock at the same time, but each of them can be erased only a few million times. By intensive usage this feature can cause problems with normal filesystems. We kept in mind these things while implementing the CHFS: We use a layer between the media and the filesystem, called eraseblock-handler (EBH). The EBH maps the physical eraseblocks (PEB) to logical eraseblocks (LEB). This is only for that we choose different PEBs from time to time, if we can, which means we won't erase always the same eraseblock. CHFS is using a writebuffer (wbuf). At mount-time the wbuf's size is set to same as the eraseblocks'. If you write out a file to the flash, the filesystem will keep that in the wbuf until it has free space (or you force the writing). With this feature we can easily handle the LEBs. The FS chooses a LEB, fills that fully and chooses an other one.
State of CHFS
Though it still has some bugs, the FS is already usable. It was tested on a BeagleBoard (thanks to Stefan Hertenberger) and a Devkit8000.