Hi All
There seem to be a few people having issues at the moment and I'd like to
present a few hints and tips for debugging that might help to isolate
problems.
While I make no claims that yaffs is perfect, most problems are related to
flash driver issues. The most common one is that ECC and bad block marking
etc and the yaffs tags stomp on eachother, causing byte corruption.
If you're using Linux, then the VFS masks quite a few problems because a write
to a file and immediate read back will be serviced by the VFS cache so
corruptions won't be immediately obvious. Same too for checkpointing.
Disabling checkpointing makes problems more obvious sooner.
0) Turn on all debugging and simplify
You can turn on yaffs tracing by either hacking the yaffs_traceMask variable
or at runtime through
echo "+a'll" >/proc/yaffs
Turn on all mtd debugging too.
Turn on all debugging in the yaffs Kconfig too.
Read debug stats in /proc/yaffs
Look in lost+found after a reboot to see if there are odd files there?
Disable checkpointing.
1) Start small
Begin with an erased flash (flash_eraseall etc). Mount yaffs partition.
check /proc/yaffs, write a few small files, check /proc/yaffs and do a
reboot.
Remount the yaffs partition. Are the files there? Are there bad blocks? Are
there files in lost+found?
Starting small allows the problems to be isolated. The above should not have
to do any garbage collection, erasing etc.
Until that works there's no point in going further.
2) Start testing garbage collection and erasing
Write a few largish files (say a couple of MB each) then delete them and write
more.
Look at /proc/yaffs. Do you see bad blocks etc?
Reboot. Are there bad blocks etc? Are there files in lost+found?
3) More serious testing
Fill the file system, delete some files and fill again. Reboot. Remount. Are
the files all good?
Hope that helps a bit
-- Charles