【发布时间】:2013-07-12 13:49:25
【问题描述】:
目前我正在编写一个需要在本机端处理大量文件的 Android 应用程序。
最近我在更新或重命名这些文件时遇到了几个数据丢失或不一致的问题。 (所有这些文件都存储在一个公共父/根目录的几个子目录中。)
在阅读了几篇关于 fsync() 的文章后,我决定使用它。 但是我有一件事不清楚:
在父目录上调用 fsync() 是否保证所有子目录的元数据递归同步?
也就是说,假设我对一个公共父目录中不同子目录中的多个文件进行了很多重命名操作。
那么我应该在每个子目录上分别调用 fsync() 还是在父目录上调用 fsync() 足以确保所有子目录(及其子目录递归)的元数据与物理同步设备?
基本上,这个想法是通过避免多次 fsync() 调用来节省时间。或者与每个单独的子目录上的 fsync() 相比,顶级目录上的 fsync() 是否需要更多时间? (假设顶层目录的 fysnc() 同步所有子目录元数据)
【问题讨论】:
标签: android linux native ext4 fsync