系统关闭后嵌入式文件系统UBIFS中的数据丢失

时间:2015-12-22 06:27:58

标签: linux linux-kernel embedded-linux

每当我在UBIFS文件系统上运行我的应用程序并对任何文件执行写操作(提供的文件具有正确的读写模式)时,在关闭电源后立即打开,我看到写入该文件的内容丢失了。文件的大小为零。如果在JFFS2文件系统上执行同样的事情不会造成这个问题。我尝试过使用sync命令,但很少存在这个问题。

例如:

我需要在一个名为myfile的文件中写一些数据,在运行期间打开它并将一些数据写成“Hi..Hello ..”(如果我打开文件并在写入操作后检查,数据写得正确),然后在关机/重启后,我发现内容“Hi..Hello ..”不存在,文件大小为零字节。

注意:只有在关闭或重新启动系统后才会出现问题。

1 个答案:

答案 0 :(得分:2)

UBIFS的同步频率较低。因此,如果文件是重要的调用,在用户应用程序中,您必须调用fsync()。我建议您执行以下操作之一以防止UBIFS中的数据丢失:

  • 在批判性写入后调用fsync()
  • 使用O_SYNC标志打开文件
  • 使用-o sync挂载ubifs(绕过写缓冲区)

Why is my file empty after an unclean reboot?

Few notes with regards to synchronization