LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3254|回复: 1

求教: Yaffs+mtd 的FLASH 坏块问题

[复制链接]
发表于 2006-2-28 10:57:11 | 显示全部楼层 |阅读模式
S3C2410 + ARM LINUX 2.4.18 + Yaffs + mtd, 产品已销售了数百台, 最近在运行了数月的十几台产品上发现了数据区/data0 磁盘空间满问题,而在/data0 下实际看到的文件所占的总大小只有70% 左右:
[root /data0]#df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtdblock/4 2032 1836 196 90% /home
/dev/mtdblock/5 5104 5104 0 100% /data0
/dev/mtdblock/6 5104 1928 3176 38% /data1

用umount /data0 && eraseall /dev/mtd/5 && mount -a 之后, /data0 得到了清理, 但是,在内核打出的信息中显示有约 30% 的坏块:
[root /data0]#more /proc/kmsg
<7>block 228 is bad
<7>block 234 is bad
<7>block 235 is bad
<7>block 236 is bad
<7>block 249 is bad
<7>block 250 is bad
<7>block 251 is bad
<7>block 252 is bad
<7>block 256 is bad
<7>block 258 is bad
<7>block 259 is bad
<7>block 261 is bad
<7>block 263 is bad
<7>block 264 is bad
<7>block 266 is bad
<7>block 268 is bad
<7>block 270 is bad
<7>block 272 is bad
<7>block 274 is bad
<7>block 276 is bad
<7>block 279 is bad
--More--
....
....

[root /data0]#more /proc/yaffs
YAFFS built:Oct 16 2003 09:25:52
$Id: yaffs_fs.c,v 1.26 2003/05/20 23:20:53 charles Exp $
$Id: yaffs_guts.c,v 1.26 2003/05/20 23:20:53 charles Exp $

Device yaffs
startBlock......... 1
endBlock........... 319
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 187
nTnodesCreated..... 200
nFreeTnodes........ 67
nObjectsCreated.... 100
nFreeObjects....... 66
nFreeChunks........ 6483
nPageWrites........ 3294
nPageReads......... 5155
nBlockErasures..... 51
nGCCopies.......... 77
garbageCollections. 51
passiveGCs......... 51
nRetriedWrites..... 0
--More--

nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 191
cacheHits.......... 0
nDeletedFiles...... 18
nUnlinkedFiles..... 18
nBackgroudDeletions 0
useNANDECC......... 1

这些由YAFFS 标注的“坏块”无法通过eraseall 修复好,只能通过bon part 操作修复,这严重影响了最新应用数据的生成。我们初步分析,应该与应用程序每15分钟写一次FLASH的操作无关(/data0 下有几十给数据文件,初次创建后大小固定不变,然后在每15分钟插入新数据的时候采用open()、lseek()、write()、 close()调用),不知是不是这样。

请问各位大侠, 这些“坏块”是如何形成的,如何能在家里的产品上重现,如何才能修复与预防,请给点建议,谢谢!
发表于 2006-3-7 10:39:24 | 显示全部楼层
坏块比较多,如果是用yaffs。用yaffs2就好多了。
还有你的那个eraseall是什么时候的版本呢?
去mtd下个最新的吧,flash_eraseall
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表