Hi Charles. 
We're changing to mount with skip_checkpt_read=false as you suggest and remove the calls to sync() and see if this makes the filesystem 100% reliable.
Let me know if you see anything in the logs or if there are tests we should run on the system.

Best,
Jens

On 10 Nov 2017, at 05:52, Charles Manning <cdhmanning@gmail.com> wrote:

Hello Jens

On Thu, Nov 9, 2017 at 1:51 AM, Jens Rudberg <jens@teenage.engineering> wrote:
Hi,
During development of a new embedded platform I have run into an unwanted behaviour by yaffs.
We use yaffs in direct mode on an micron SLC nand with 2k pages and built-in ECC functionality.
It seems like yaffs sometimes roll back the file system when it is mounted, even if there should be no checkpoint available.
We see this by noticing that sometimes after a sudden reboot / crash files are rollbacked to previous versions.

I was under the impression that the checkpoint is invalidated immediately when a partition is mounted, but this may not be the case?

No it should be invalidated as soon as there is any modification to the filesystem (modify file/directory, delete file/directory or any garbage collection). If you don't do any modifications the checkpoint will stay "forever".


Our current method to avoid this is to call yaffs_sync() after every file operation, which doesn’t seems like the right way to do it.
yaffs_sync() both does a full sync including checkpoint.
replacing the calls to yaffs_sync() with yaffs_sync_files()

What happens if you don't  use any checkpoint. eg. mount with skip_checkpt_read set to 1.

I will have a look at the log and see if anything stands out.

Regards

Charles