[Yaffs] yaffs corruption.. almost gone

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Boris Deschenes
Date:  
To: yaffs
Subject: [Yaffs] yaffs corruption.. almost gone
Hi guys,



I made progress today, now I'm at the point where yaffs could be used as a
boot RO filesystem. I can mount it, write to it (I'll get yaffs chunk not
erased messages but the files are good even after remounting). But I have
to mount read-only otherwise all hell breaks loose.



I enabled tracing and I think I see what's wrong...

(to enable trace, "echo all > /proc/yaffs")



During the mount process, everything is clean, for each block I have the
following:



[4294767.300000] Block scanning block 62 state 3 seq 0

[4294767.305000] Block empty

[4294767.308000] nandmtd2_QueryNANDBlock 62

[4294767.312000] nandmtd2_ReadChunkWithTagsFromNAND chunk 3968 data 00000000
tags 810e3b78

[4294767.320000] packed tags obj -1 chunk -1 byte -1 seq -1

[4294767.325000] ext.tags eccres 0 blkbad 0 chused 0 obj 0 chunk0 byte 0 del
0 ser 0 seq 0

[4294767.333000] block is bad seq 0 state 3



(I know last line says block is bad but the trace call is executed anyway)..
blocks are good







During the actual write of the file I have the following:



[4294763.952000] Writing chunk 0 tags 261 0

[4294763.956000] nandmtd2_WriteChunkWithTagsToNAND chunk 0 data 8114b000
tags 810ddc08

[4294763.964000] packed tags obj 268435717 chunk -2147483647 byte 0 seq 4097

[4294763.971000] ext.tags eccres 0 blkbad 0 chused 1 obj 261 chunk0 byte 0
del 0 ser 1 seq 4097



I'm not sure about the "packed tags" line, are these values valid?
(268435717 and -2147483647) Is it because the tags are packed? Because the
ext.tags line looks ok? Can anyone confirm?







Now, the unmount doesn't look good at all:



# umount /mnt

[4294950.219000] yaffs_put_inode: ino 261, count 1

[4294950.224000] yaffs_put_inode: ino 1, count 1

[4294950.229000] yaffs_clear_inode: ino 1, count 0 object exists

[4294950.235000] yaffs_clear_inode: ino 261, count 0 object exists

[4294950.241000] save entry: isCheckpointed 0

[4294950.245000] checkpt blocks available = 58

[4294950.249000] checking blocks 0 to 63

[4294950.253000] allocating checkpt block 1

[4294950.257000] nandmtd2_WriteChunkWithTagsToNAND chunk 64 data 803ec000
tags 810ddd38

[4294950.265000] packed tags obj 2 chunk 1 byte 2048 seq 33

[4294950.270000] ext.tags eccres 0 blkbad 268497208 chused -2129276928 obj 2
chunk1 byte 2048 del 0 ser -2129473536 seq 33

[4294950.284000] checkpoint byte count 1304

[4294950.288000] save exit: isCheckpointed 1





As you see here, even the ext.tags line has blkbad, chused and ser values
all messed up. Could someone confirm that I should be seeing *normal*
values here.



Thanks a lot



Boris