Hi, I used yaffs2 direct interface 2 years ago without problems (archive of 2010/06/11). I updated to latest git version (linux style renaming and minor modifications). But I meet a very strange issue: When I don't yaffs_sync() after updating a file, then after rebooting, the partition is mounted without checkpoint. In this case, the file system structure is perfectly OK (names, sizes), but reading the files gives null data. I simulated on a PC with a file, and the result is the same. What happens ? Here a simple test, the "/boot" partition uses blocks 0 to 63 with packed tags 2 + ECC in the spare area. Run it 2 times with normal mounting for append test. Run it with read-only mounting for read test -> OK. Run it with read-only, no checkpoint read -> null data. constchar*dev="/boot"; intmain(void) { char* logfile = 0; struct yaffs_stat st; // Initialise File System yaffs_start_up(); //yaffs_mount(dev); // Normal yaffs_mount_common(dev, 1, 0); // Read-only, read checkpoint //yaffs_mount_common(dev, 0, 1); // Read-write, don't read checkpoint //yaffs_mount_common(dev, 1, 1); // Read-only, don't read checkpoint // Logfile read test if (0) { int fd0 = yaffs_open("/boot/log0.txt", O_RDONLY, S_IREAD|S_IWRITE); if (fd0 >= 0) { yaffs_fstat(fd0, &st); logfile = malloc(st.st_size+1); yaffs_read(fd0, logfile, st.st_size); logfile[st.st_size] = '\0'; yaffs_close(fd0); } } // Logfile append test if (1) { int fd0 = yaffs_open("/boot/log0.txt", O_CREAT|O_RDWR|O_APPEND, S_IREAD|S_IWRITE); if (fd0 >= 0) { const char* buf = "2012/05/31 13:41 Test\n"; yaffs_write(fd0, buf, strlen(buf)); yaffs_close(fd0); } } if (1) { yaffs_sync(dev); yaffs_unmount(dev); } return 0; } -- Stephane Lesage