JFFS2 Request For Testing.
I've got JFFS2 to the stage where it's passing dbench runs and the GC looks reasonably OK. The design is basically the result of the discussion we were having a few weeks ago (on the jffs-dev list) - I don't think anything's particularly different from what we were talking about.
Please take a look and comment, and preferably test it. Instructions on getting it from CVS are on http://www.linux-mtd.infradead.org/ and it'll turn up in ftp.uk.linux.org:/pub/people/dwmw2/mtd/cvs at about 11pm tonight.
For easy testing on a PC, turn on CONFIG_MTD_MTDRAM and test it on ram, instead of real flash.
There's free beer for the first person who tells me why I need the invalidate_inode_pages() in jffs2_file_release() when no other filesystem seems to need it, or why it sometimes gets stuck on unmount, in __wait_on_page() called from invalidate_inodes(). I suspect they're related, and it's a stupid bug on my part.
There's also a free beer for whoever provides mkfs.jffs2.
Aside from the bugs, there's a few things left to tidy up...
- background GC
- fine-tune the allocation / GC thresholds
- More optimal compression. Currently it's optimised for mips32 code.
- chattr support - turning on/off and tuning compression per-inode
- checkpointing
- making the scan code populate real inodes so read_inode just after mount doesn't have to read the flash twice for large files.
- disable compression in commit_write()?
- stop it depending on a block device. mount(8) needs a change for this.
- test, test, test
- make it work on NAND flash. We need to know when we can GC deletion dirents, etc. And think about holes/truncation. It can all be done reasonably simply, but it need implementing.
- NAND flash will require new dirent/dnode structures on the medium with ECC data in rather than just the CRC we're using ATM.
- more?
--
dwmw2
To unsubscribe, send "unsubscribe mtd" to [email protected]