当前位置: 技术问答>linux和unix
yaffs2 文件系统出错 无法删除文件
来源: 互联网 发布时间:2016-05-20
本文导语: Linux-2.6.14,PowerPC平台。 板上原有Nor flash 16MB,jffs2文件系统。 现增加一片128MB到1GB的Nand flash,目前用的是HY27UF081G,大小为128MB,Nand flash的驱动是仿照spia.c重写,调试驱动的时候,使用Jffs2文件系统,尚...
Linux-2.6.14,PowerPC平台。
板上原有Nor flash 16MB,jffs2文件系统。
现增加一片128MB到1GB的Nand flash,目前用的是HY27UF081G,大小为128MB,Nand flash的驱动是仿照spia.c重写,调试驱动的时候,使用Jffs2文件系统,尚未发现问题,只是mount成功后,如果nand上已经有文件,那就需要45秒以上的等待时间才能使用,而且有近30秒的时间里,CPU使用率达到100%,这是我不能忍受的,不知道是不是驱动有问题。看了Jffs2文件系统的资料,好像mount时间确实需要这么长,也很占内存,所以Nand flash 放弃使用Jffs2。
移植yaffs2,使用的是最新的代码,过程不难,用patch-ker.sh就可以很容易集成到内核中,编译时出了点错误,说是重复定义,把yaffs_mtdif.h文件中声明去掉
-------------------------------------------
#if (MTD_VERSION_CODE mput linux-2.6.10.tar.bz2
227 Entering Passive Mode (192,168,99,232,172,218)
150 Ok to send data.
226 File receive OK.
38710411 bytes sent in 1.5e+02 seconds (2.5e+02 Kbytes/s)
速度太慢了,linux-2.6.14.tar.bz2 这个文件传了一部分就被我停掉了。
root@StarWave:/mnt/nand# ls
linux-2.6.10.tar.bz2 linux-2.6.14.tar.bz2 lost+found
root@StarWave:/mnt/nand# rm linux-2.6.14.tar.bz2
root@StarWave:/mnt/nand# ls
linux-2.6.10.tar.bz2 lost+found
root@MySvr:/mnt/nand# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtdblock3 13952 12908 1044 93% /
/dev/mtdblock5 499 13 461 3% /mnt/config
/dev/mtdblock7 131072 38960 92112 30% /mnt/nand
---------------------------------------------------------------------
问题来了:
root@MySvr:/mnt/nand# mkdir temp_dir
root@MySvr:/mnt/nand# rm temp_dir/ -r
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6814
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6741
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6741
------------------------------------------------------------------------
root@MySvr:/mnt# umount nand
save exit: isCheckpointed 1
root@MySvr:/mnt# mount -t yaffs2 /dev/mtdblock7 /mnt/nand/
yaffs: dev is 32505863 name is "mtdblock7"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.7, "mtdblock7"
root@MySvr:/mnt# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtdblock3 13952 12908 1044 93% /
/dev/mtdblock5 499 13 461 3% /mnt/config
/dev/mtdblock7 131072 48896 82176 37% /mnt/nand
已用空间由30%变成37%,这个7%就是linux-2.6.14.tar.bz2文件传了一部分占用的,也就是说,文件删除了,所占的块,在分区表中并没有标记为可用。
root@StarWave:/mnt/nand# ls
lost+found
文件一个也不在了,更加说明了分区信息无法加载。
这个问题怎么办?
板上原有Nor flash 16MB,jffs2文件系统。
现增加一片128MB到1GB的Nand flash,目前用的是HY27UF081G,大小为128MB,Nand flash的驱动是仿照spia.c重写,调试驱动的时候,使用Jffs2文件系统,尚未发现问题,只是mount成功后,如果nand上已经有文件,那就需要45秒以上的等待时间才能使用,而且有近30秒的时间里,CPU使用率达到100%,这是我不能忍受的,不知道是不是驱动有问题。看了Jffs2文件系统的资料,好像mount时间确实需要这么长,也很占内存,所以Nand flash 放弃使用Jffs2。
移植yaffs2,使用的是最新的代码,过程不难,用patch-ker.sh就可以很容易集成到内核中,编译时出了点错误,说是重复定义,把yaffs_mtdif.h文件中声明去掉
-------------------------------------------
#if (MTD_VERSION_CODE mput linux-2.6.10.tar.bz2
227 Entering Passive Mode (192,168,99,232,172,218)
150 Ok to send data.
226 File receive OK.
38710411 bytes sent in 1.5e+02 seconds (2.5e+02 Kbytes/s)
速度太慢了,linux-2.6.14.tar.bz2 这个文件传了一部分就被我停掉了。
root@StarWave:/mnt/nand# ls
linux-2.6.10.tar.bz2 linux-2.6.14.tar.bz2 lost+found
root@StarWave:/mnt/nand# rm linux-2.6.14.tar.bz2
root@StarWave:/mnt/nand# ls
linux-2.6.10.tar.bz2 lost+found
root@MySvr:/mnt/nand# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtdblock3 13952 12908 1044 93% /
/dev/mtdblock5 499 13 461 3% /mnt/config
/dev/mtdblock7 131072 38960 92112 30% /mnt/nand
---------------------------------------------------------------------
问题来了:
root@MySvr:/mnt/nand# mkdir temp_dir
root@MySvr:/mnt/nand# rm temp_dir/ -r
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6814
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6741
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6741
------------------------------------------------------------------------
root@MySvr:/mnt# umount nand
save exit: isCheckpointed 1
root@MySvr:/mnt# mount -t yaffs2 /dev/mtdblock7 /mnt/nand/
yaffs: dev is 32505863 name is "mtdblock7"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.7, "mtdblock7"
root@MySvr:/mnt# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtdblock3 13952 12908 1044 93% /
/dev/mtdblock5 499 13 461 3% /mnt/config
/dev/mtdblock7 131072 48896 82176 37% /mnt/nand
已用空间由30%变成37%,这个7%就是linux-2.6.14.tar.bz2文件传了一部分占用的,也就是说,文件删除了,所占的块,在分区表中并没有标记为可用。
root@StarWave:/mnt/nand# ls
lost+found
文件一个也不在了,更加说明了分区信息无法加载。
这个问题怎么办?
|
YAFFS2 的版本 bug ,我也遇到了,使用老的版本就行了。