Bingo ! After applying proposed fix we were able to get rid of various long chased yaffs file-system corruptions (yaffs tragedy messages in boot time, strange objects in lost+found, kernel Oops'es, lost data in files etc). The trigger for all these problems were system reset/reboot WITHOUT unmounting yaffs partitions. Thanks a lot. I believe this fix should be applied ASAP to yaffs code in repository. Gennady Dagman. Artis Kugevics wrote: >Hello, > >following code should save data safely on NAND flash: > >unsigned data = 123456; >int fd = open(any_file_name, O_WRONLY | O_CREAT, 0600); >write(fd, &data, sizeof(data)); >fchmod(fd, any_mode); >fsync(fd); >close(fd); > >In reality data is still in Chunk Cache. If power is lost, then data is >lost as well. Only on umount() data will be written out by >yaffs_FlushEntireDeviceCache(). >The key here is > fchmod(fd, any_mode); >between data is written and flush is called. Any attribute change on >that file will call > yaffs_UpdateObjectHeader() >function. That function will mark object as clean without flushing out >data from Chunk Cache (dev->srCache). >Following > yaffs_FlushFile() >will not call > yaffs_FlushFilesChunkCache() >as object is already marked clean. > > >I propose to call > yaffs_FlushFilesChunkCache(in) >before marking object as clean in yaffs_UpdateObjectHeader() function. > > Artis