Quite coincidentally, I've been investigating the very same issue. I have been able to improve run times somewhat, but still get failures. Sometimes it will run for over an hour on a PC simulator test harness before fsx reports an issue. The nandsim+PC is way faster than real NAND so it is probably equivalent to running on typical ARM + NAND for 4 or 5 hours or so. What I have now only fails if a mmap write is followed by a truncate down then truncate up. I think the problem is probably due to the page dirty flags not being set correctly resulting in a a read picking up stale data.... or maybe a truncate not clearing pages properly because a mmap write left some flags in a bad state. If I can't get what I have resolved in the next day or so, I'll publish it somewhere so others can have a look. -- Charles On Wednesday 25 November 2009 14:54:45 JiSheng Zhang wrote: > Hi list, > > I come across the same problem in > http://www.aleph1.co.uk/lurker/message/20071008.015825.d64e796b.pt.html > > But If I don't use mmap write, fsx will succeed all the time. This is > different from the email thread above. > > I also add > > if (ivalid & ATTR_SIZE && inode->i_size > attr->ia_size) > vmtruncate(inode, attr->ia_size); > > in yaffs_setattr(), result is the same. > IMHO inode_setattr() in yaffs_setattr() will call vmtruncate() > > Any advice for resolve this bug? > > Thanks, > Jisheng > > _______________________________________________ > yaffs mailing list > yaffs@lists.aleph1.co.uk > http://lists.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs