下面是典型而著名的方法 for 原子文件更新:
fd = open(“foo.new”, O_WRONLY);
write(fd, buf, bufsize);
fsync(fd);
close(fd);
rename(“foo.new”, “foo”);通常,如果我们还想要持久性(即保证新版本的文件在崩溃时可用),那么我们还需要在父目录上调用fsync。
问: UBIFS也需要这样的服务吗?文档说:
可以为目录调用fsync() -它同步inode元数据目录。..。 在UBIFS中,对目录的fdat异步()调用是"no-op“,所有更改目录条目的UBIFS操作都是同步的。
如果我正确阅读,后者(“更改目录条目的所有UBIFS操作都是同步的”)似乎意味着没有必要在父dir上调用fsync。然而,我的测试似乎表明情况并非如此。我是误读了文档,还是这些信息过时了?
发布于 2018-12-11 15:51:39
我在MTD邮件列表中询问;似乎文档是不明确的,在父dir上是必要的。和其他文件系统一样。
https://stackoverflow.com/questions/53702698
复制相似问题