首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ubi文件系统损坏的原因

ubi文件系统损坏的原因
EN

Stack Overflow用户
提问于 2013-10-24 07:21:43
回答 2查看 2.7K关注 0票数 2

我使用了ubi文件系统和mtd子系统在NAND闪存的顶部工作。一切都很顺利。

但现在我发现了以下错误:

UBI错误: ubi_io_read: error -74当从PEB 2701:8192读取516096字节时,读取516096字节

end_request: I/O错误,dev mtdblock5,扇区49160

我刚才提到这些错误的原因是什么?如何从这些错误中恢复?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-24 07:58:05

两者都显示与NAND上的损坏或坏块相关的I/O错误,请尝试使用另一个闪存并使用它。你也可以尝试擦除闪光灯,再试一次。

感谢和问候,

阿洛克·塔克尔

票数 0
EN

Stack Overflow用户

发布于 2013-12-06 16:49:00

错误-74是EBADMSG。看着https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/mtd/ubi/ubi.h#n94我们可以看到,

  • UBI_IO_FF:闪存的读取区域仅包含0xFFs
  • UBI_IO_FF_BITFLIPS:与%UBI_IO_FF相同,但也存在由MTD驱动程序报告的数据完整性错误(在NAND情况下无法纠正ECC错误)。
  • UBI_IO_BAD_HDR:EC或VID报头已损坏(坏魔术或CRC)
  • UBI_IO_BAD_HDR_EBADMSG:与%UBI_IO_BAD_HDR相同,但也存在由MTD驱动程序报告的数据完整性错误(在NAND情况下无法纠正ECC错误)。
  • 检测并校正了UBI_IO_BITFLIPS:位翻转。

每个UBI块都是一个闪存擦除块(典型的128 K),这些块有两个UBI头,它们是一个页面大小(典型的2k)。读取此页时,出现了一个错误。它不能通过纠错代码或ECC恢复。

如果您在UbiF之上使用UBI,则应该对这些块进行测试。这涉及擦除和重写擦除块.如果读了很多遍,闪光灯就会过时。比特可以翻转并要求重写数据。它可能会发现,UBI头只是需要重新编程和闪光灯将是好的。

如果不是,所有NAND驱动程序都有一个坏块表。在数据确实无法恢复的情况下,擦除块将在此表中被标记为“坏”,并且Ubi不应该再使用此扇区。

如果错误仍然存在,那么这是一个可能的问题。然而,它的一些预期与正常使用NAND闪光灯。NAND闪光灯的典型周期是1,000到10,000。经过一定量的磨损,闪光有可能完全无法使用。这取决于闪存类型、文件系统(和磨损平整)以及系统上的应用程序。

错误配置的闪存驱动程序可能导致这些错误。不正确的闪存ECC代码可能会导致预成熟的错误(flash为4位ECC提供空间,但驱动程序仅实现1位)。这也可能是由一个糟糕的应用程序造成的,该应用程序每隔1ms-100 1ms就会不断地对磁盘进行fsync();即使所有其他组件都是最优的,这种行为也会在几年内耗尽闪存。Ubi应该有一些最好的磨损平整可用。如果你不断地重新闪现一个图像,你可以折扣的this磨损水平,并造成这种问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19559468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档