最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】yaffs tragedy: attempting to use non-directory as a directory in scan. Put in lost+found.

工作和技术 crifan 3173浏览 0评论

【问题】

linux内核启动后,去挂载yaffs2根文件系统,对于我当前用的,3M多的yaffs2跟文件系统,正常情况应该是很快的,但是出错的时候,挂载很慢,而且还有warning产生:

yaffs tragedy: attempting to use non-directory as a directory in scan. Put in lost+found.

【解决办法】

网上找了下,这个算是解释了一部分:

http://www.linuxforum.net/forum/showflat.php?Cat=&Board=embedded&Number=632044

《Yaffs文件系统分析》上有下面一段话:
" 物理上没有存储superblock 块,所以NAND Flash 上的yaffs 文件系统本身没有存储filesystem 的魔数(MagicNum),在内存中superblock 里的s_magic 参数也是直接赋值的,所以存储在NAND FLASH上的任何文件系统都能被当作yaffs 文件系统mount 上来,只是数据都会被当作错误数据放在lost+found 目录中,不知道这算不算yaffs文件系统的一个bug。"

但是,还是没有解决办法。最后找到个pdf,里面的说明很清楚:

[PDF] 君正USB Boot 工具用户手册

ftp://ftp.ingenic.cn/3sw/00tools/usb_boot/manual/USB_Boot_Tool_Manual_1.4_CN.pdf

“问题6:烧录yaffs2文件系统成功,文件系统成功启动,但是启动过程报告错误
烧录yaffs2文件系统成功,并且启动也成功,但是启动过程频繁报告yaffs tragedy: attempting to use non-directory as a directory in scan. Put in lost+found这样的错误。解决方法是将整个yaffs2分区完整地擦除。”

【原因及解决办法】

从yaffs2文件系统所挂载的分区的开始,到nand flash 的最后,这段空间,都要完全擦除,保证没有多余的数据,否则,yaffs2挂载之后,就会发现这些数据,试图去按照yaffs2文件系统格式解析文件,当然无法正常解析,就只能当做垃圾放到lost+found文件夹了。

我这里出现问题就是,mtdblock2挂载yaffs2根文件系统,但是在其后面某处,有一些之前通过PC的USB拷贝的过来的一些数据,没有完全擦除,所以,会被yaffs2去读取到,会去以为也是文件系统的数据,但是又不能正常解析出来,只能Put in lost+found了。

简单说就是,你nand flash上有数据,但是不是yaffs2格式的,却被yaffs2去读取,结果不认识,就强制把他当垃圾,放到垃圾桶:lost+found 里面去了。这只不过是警告,对系统本身没啥影响,但是如果不解决,看着也还是很不爽,而且根文件系统挂载时间也长很多,呵呵。

转载请注明:在路上 » 【已解决】yaffs tragedy: attempting to use non-directory as a directory in scan. Put in lost+found.

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 太感谢了,解决了我的问题
    chelinfen14年前 (2010-04-20)回复
82 queries in 0.157 seconds, using 22.11MB memory