I am having a weird problem with my nand driver. Since I am using yaffs and I
have that spew, I hope it is OK that I post here. Let me know if it's not.
When I copy a file to the file yaffs file system, I get a lot of spew that
looks like this:
**>> Block 1 needs retiring
**>> Block 2 needs retiring
**>> Block 2 retired
**>> Block 3 needs retiring
**>> Block 3 retired
**>> Block 4 needs retiring
**>> Block 4 retired
..... messages with sequential block numbers deleted ......
**>> Block 779 needs retiring
**>> Block 779 retired
**>> yaffs write required 780 attempts
**>> Block 1 retired
# ls -las /mnt
0 drw-rw-rw- 1 0 0 512 .
1 drwxrwxrwx 14 0 0 1024 ..
0 drw-rw-rw- 1 0 0 512 lost+found
0 -rw-r--r-- 1 0 0 426 rc
The file /etc/rc was written correctly to the FS.
When I turn on any debugging, it does not retire blocks at all. In fact, if I
insert a printk() anywhere such that it gets called once in a while, the
retire messages go away and the status in /proc/yaffs shows that no blocks
were retired. If I get rid of all of the debugging messages, I run out of
space in a few writes. (it's a 64M byte part)
With all debugging on, I get this spew:
# cp /etc/inittab /mnt
yaffs_mknod: making oject for inittab, mode 81a4 dev 0
Writing chunk 24931 tags 262 0
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Chunk -1 not found zero instead
Writing chunk 24932 tags 262 1
Writing chunk 24933 tags 262 0
line 3142 delete of chunk 24963
Writing chunk 24931 tags 0 0
# ls -las /mnt
yaffs_readdir: starting at 0
yaffs_readdir: starting at 5
0 drw-rw-rw- 1 0 0 512 .
1 drwxrwxrwx 14 0 0 1024 ..
0 -rw-r--r-- 1 0 0 82 inittab
0 drw-rw-rw- 1 0 0 512 lost+found
0 -rw-r--r-- 1 0 0 426 rc
Again a correct write.
I have been messing around with the timing on the GPIO lines that control the
part and I always come back to this. Can anyone give a pointer? Is
the "Chunk -1 ..." message an indication of a failure?
Thanks guys,
-=ChuckT=-