On Thursday 19 April 2007 21:54, Charles Manning wrote:
> That would suggest to me that somehow the yaffs short op cache is screwed
up.
> The dd's you do:
> #dd if=/dev/zero of=/nand0/test1 bs=2k count=xxx
>
> are chunk aligned which means that you're bypassing the cache.
> If that theory holds, then
> #dd if=/dev/zero of=/nand0/test1 bs=2k count=1000
> will work and it is not a file size issue.
It works.
>
> What happens if you do
> #dd if=/dev/zero of=/nand0/test1 bs=1k count=10
That works, too!
>
> That would force yaffs to use the cache and, I suspect might cause the
crash.
But using a block size bigger or equal to 4k crashes the system:
#dd if=/dev/zero of=/nand0/test1 bs=4k count=10
Exactly 4095 bytes is still ok:
#dd if=/dev/zero of=/nand0/test1 bs=4095 count=10
>
> If this is happening then it is probably because the cache is not being
> allocated correctly and unfortunately there are insufficient checks in place
> to see that the malloc succeeded. There is some stuff I am working on that
> fixes this and other issues but that won't be checked in for a while.
>
> Something else to try would be do look in yaffs_fs.c for where
> dev->nShortOpCaches is assigned and set that to zero. That turns off the
> internal cache.
I did the same tests with internal cache turned off. But it had no impact on
the issue.
Matthias