JFFS2 is a log-structured file system designed for use on flash devices in embedded systems. Rather than using a kind of translation layer on flash devices to emulate a normal hard drive, as is the case with older flash solutions, it places the filesystem directly on the flash chips.
JFFS2 was developed by Red Hat, based on the work started in the original JFFS by Axis Communications, AB.
A paper which was presented at the Ottawa Linux Symposium 2001 describing the development and operation of JFFS2 is available here, both in its original PDF form and also converted to HTML.
The slides which accompanied the talk are also available in PDF form, here.JFFS2 works in Linux (v2.4 and later) and eCos
JFFS2 has been included in the official Linux kernel since the 2.4.10 release. The stable branch, supporting only NOR flash devices, is included in the current 2.4 series of kernels.
The latest code, including preliminary support for NAND flash and various other improvements and optimisations, in particular a vast improvement in the time taken to mount a file system, is available from the Memory Technology Device (MTD) CVS tree at cvs.infradead.org. To obtain an up to date copy, use the following commands:
cvs -d :pserver:[email protected]:/home/cvs login (password: anoncvs) cvs -d :pserver:[email protected]:/home/cvs co mtd
The source for the mkfs.jffs2 utility is also in the CVS tree, in the util/ directory. A binary of v1.17 for i386 Linux is available here.
Discussion of JFFS2 takes place on the original JFFS mailing list, [email protected], which is archived at http://mhonarc.axis.se/jffs-dev/threads.html. Discussion of the underlying flash drivers should happen on the Linux-MTD mailing list, of which details are available at http://lists.infradead.org/mailman/listinfo/linux-mtd/