[Yaffs] Yaffs2 Freechunks verification failure

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Tian Jin
Date:  
To: yaffs
Subject: [Yaffs] Yaffs2 Freechunks verification failure

I'm using 4GB samsung NAND flash on a AT91RM9200 board, the filesystem is yaffs2.
I got this error message at mount time from yaffs:

[ARM ~]# mount /dev/mtdblock6 /mnt/data -t yaffs2yaffs: dev is 32505862 name is "mtdblock6"yaffs: Attempting MTD mount on 31.6, "mtdblock6"restore entry: isCheckpointed 0.........found no more checkpt blockscheckpoint byte count 1835008restore exit: isCheckpointed 0block 1587 is badblock 2325 is badblock 5306 is badblock 9116 is badblock 12580 is badblock 14643 is badblock 16458 is badblock 16615 is badblock 17820 is badblock 18628 is badblock 18915 is badblock 20245 is badblock 20787 is badblock 21433 is badFreechunks verification failure 105824 52912 52912

[ARM ~]# dfFilesystem           1k-blocks      Used Available Use% Mounted ontmpfs                    31228         4     31224   0% /dev/dev/mtdblock6         4194304   3978684    215620  95% /mnt/data


The available space was reported incorrectly, the available space should be 107810 NOT 215620.

[ARM ~]# cat /proc/meminfo MemTotal:        62460 kBMemFree:         38104 kBBuffers:          3228 kBCached:           3292 kBSwapCached:          0 kBActive:           2452 kBInactive:         4416 kBSwapTotal:           0 kBSwapFree:            0 kBDirty:               0 kBWriteback:           0 kBAnonPages:         380 kBMapped:           1324 kBSlab:            16632 kBSReclaimable:      480 kBSUnreclaim:      16152 kBPageTables:         44 kBNFS_Unstable:        0 kBBounce:              0 kBCommitLimit:     31228 kBCommitted_AS:      952 kBVmallocTotal:   956416 kBVmallocUsed:     28272 kBVmallocChunk:   907260 kB


The kernel Oops if I umount it:

[ARM ~]# umount /mnt/datasave entry: isCheckpointed 0checkpt blocks available = -5Unable to handle kernel NULL pointer dereference at virtual address 00000000pgd = c34fc000[00000000] *pgd=23666031, *pte=00000000, *ppte=00000000Internal error: Oops: 17 [#1]Modules linked in:CPU: 0PC is at yaffs_CheckpointClose+0x44/0x150LR is at yaffs_CheckpointSave+0x3a8/0x408pc : [<c00e80cc>]    lr : [<c00e270c>]    Not taintedsp : c3ec3dec  ip : c3ec3e08  fp : c3ec3e04r10: c3ec3f14  r9 : c3ec3f1c  r8 : 00000000r7 : 00000000  r6 : 00000000  r5 : c3a41400  r4 : c037e000r3 : 0000000e  r2 : 00000000  r1 : 00000000  r0 : c037e000Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  Segment userControl: C000317FTable: 234FC000  DAC: 00000015Process umount (pid: 217, stack limit = 0xc3ec2250)Stack: (0xc3ec3dec to 0xc3ec4000)3de0:                            00000000 c3a41400 c3a41400 c3ec3e84 c3ec3e08 3e00: c00e270c c00e8098 c3b3b1cc 00000003 c037e000 c3ec3e20 c3b3b0d4 c3b3b0d4 3e20: c3ec3e6c c3ec3e44 c3ec3e34 c008a098 c0071318 c3b3b0dc c3ec3e64 c3ec3e48 3e40: c008b11c c008a050 c3a41468 c3ec2000 c3a41458 c3b3b0e4 c3ec3e9c c037e000 3e60: c3a41400 c3a41400 00000000 00000000 c3ec3f1c c3ec3f14 c3ec3e9c c3ec3e88 3e80: c00df054 c00e2374 c3a41400 c0265d1c c3ec3eb4 c3ec3ea0 c0076edc c00df024 3ea0: c0328060 c3a41400 c3ec3ecc c3ec3eb8 c0077e10 c0076e6c c3a41400 c0265c14 3ec0: c3ec3ee4 c3ec3ed0 c0076d24 c0077df8 c3a41400 c03228a0 c3ec3efc c3ec3ee8 3ee0: c008d038 c0076ccc c3ec3f1c c3ec2000 c3ec3f10 c3ec3f00 c007d088 c008cfd8 3f00: 00000000 c3ec3f94 c3ec3f14 c008d9c4 c007d078 c3ec3f14 c3ec3f14 c3b1ae28 3f20: c03228a0 000000c4 c001df84 c3ec2000 00000001 00000001 00000000 c00792a0 3f40: c0079098 00000001 00000000 01f00006 400141ff 00000001 00000000 00000000 3f60: 00000000 00000800 00000000 00080348 bea68d2c 00080370 00000016 c001df84 3f80: c3ec2000 bea6ad9c c3ec3fa4 c3ec3f98 c008d9ec c008d7d0 00000000 c3ec3fa8 3fa0: c001dde0 c008d9e8 00080348 bea68d2c 00080370 0008037a bea68d36 00000000 3fc0: 00080348 bea68d2c 00080370 00000000 00000000 00000000 bea6ad9c 00080348 3fe0: 40139f00 bea68d0c 00059ebc 40139f04 60000010 00080370 20002031 20002431 Backtrace: [<c00e8088>] (yaffs_CheckpointClose+0x0/0x150) from [<c00e270c>] (yaffs_CheckpointSave+0x3a8/0x408) r6 = C3A41400  r5 = C3A41400  r4 = 00000000 [<c00e2364>] (yaffs_CheckpointSave+0x0/0x408) from [<c00df054>] (yaffs_put_super+0x40/0xb8)[<c00df014>] (yaffs_put_super+0x0/0xb8) from [<c0076edc>] (generic_shutdown_super+0x80/0x124) r5 = C0265D1C  r4 = C3A41400 [<c0076e5c>] (generic_shutdown_super+0x0/0x124) from [<c0077e10>] (kill_block_super+0x28/0x3c) r5 = C3A41400  r4 = C0328060 [<c0077de8>] (kill_block_super+0x0/0x3c) from [<c0076d24>] (deactivate_super+0x68/0x80) r5 = C0265C14  r4 = C3A41400 [<c0076cbc>] (deactivate_super+0x0/0x80) from [<c008d038>] (mntput_no_expire+0x70/0xbc) r5 = C03228A0  r4 = C3A41400 [<c008cfc8>] (mntput_no_expire+0x0/0xbc) from [<c007d088>] (path_release_on_umount+0x20/0x24) r5 = C3EC2000  r4 = C3EC3F1C [<c007d068>] (path_release_on_umount+0x0/0x24) from [<c008d9c4>] (sys_umount+0x204/0x218) r4 = 00000000 [<c008d7c0>] (sys_umount+0x0/0x218) from [<c008d9ec>] (sys_oldumount+0x14/0x18)[<c008d9d8>] (sys_oldumount+0x0/0x18) from [<c001dde0>] (ret_fast_syscall+0x0/0x2c)Code: e1a06002 e1520003 aa000023 e59010f8 (e5913000)  WARNING at kernel/exit.c:853 do_exit()Segmentation fault



After reboot and remount, the "Freechunks verification failure" problem remains, but I can still write data to that partition with error messages:
checkpt blocks available = -5checkpoint invalidatecheckpt blocks available = -5checkpoint invalidatecheckpt blocks available = -5.........checkpt blocks available = -1checkpoint invalidatecheckpt blocks available = -1...checkpt blocks available = 0checkpoint invalidatecheckpt blocks available = 0....checkpoint invalidatecheckpt blocks available = 0checkpoint invalidatecheckpt blocks available = 1checking blocks 1 to 32768      <- the error message ends here


When the partition is full yaffs show errors:

yaffs tragedy: no more eraased blocks!!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!yaffs tragedy: no more eraased blocks!!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!yaffs tragedy: no more eraased blocks...
...
...

Reboot and remount:

found no more checkpt blockscheckpoint byte count 0restore exit: isCheckpointed 0block 1587 is badblock 2325 is badblock 5306 is badblock 9116 is badblock 12580 is badblock 14643 is badblock 16458 is badblock 16615 is badblock 17820 is badblock 18628 is badblock 18915 is badblock 20245 is badblock 20787 is badblock 21433 is bad[ARM ~]# dfFilesystem           1k-blocks      Used Available Use% Mounted ontmpfs                    31228         4     31224   0% /dev/dev/mtdblock6         4194304   4194304         0 100% /mnt/data


[ARM ~]# cat /proc/yaffs YAFFS built:Apr 6 2007 06:30:53$Id: yaffs_fs.c,v 1.59 2007/03/20 20:59:40 charles Exp $$Id: yaffs_guts.c,v 1.48 2007/03/12 20:55:39 charles Exp $
Device 0 "NAND Data Storage"startBlock......... 0endBlock........... 32767chunkGroupBits..... 0chunkGroupSize..... 1nErasedBlocks...... 0nTnodesCreated..... 156800nFreeTnodes........ 54nObjectsCreated.... 15000nFreeObjects....... 21nFreeChunks........ 0nPageWrites........ 0nPageReads......... 0nBlockErasures..... 0nGCCopies.......... 0garbageCollections. 0passiveGCs......... 0nRetriedWrites..... 0nRetireBlocks...... 0eccFixed........... 0eccUnfixed......... 0tagsEccFixed....... 0tagsEccUnfixed..... 0cacheHits.......... 0nDeletedFiles...... 0nUnlinkedFiles..... 0nBackgroudDeletions 0useNANDECC......... 1isYaffs2........... 1

To make free space I have to delete files, but I always failed:
[ARM ~]# rm /mnt/data/data.idxyaffs tragedy: no more eraased blocks!!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!rm: cannot remove '/mnt/data/data.idx': Directory not empty

[ARM ~]# umount /mnt/data/save entry: isCheckpointed 0checkpt blocks available = -5checkpoint byte count 0save exit: isCheckpointed 0


Is there any solution for this?


Thank you very much.



_________________________________________________________________
Make every IM count. Download Windows Live Messenger and join the i’m Initiative now. It’s free. 
http://im.live.com/messenger/im/home/?source=TAGWL_June07