首页 文章

我们是否需要在UBIFS中同步父目录以进行原子*和*持久文件更新

提问于
浏览 918
1

这是typical and well-known approachatomic 文件更新:

fd = open(“foo.new”, O_WRONLY);
write(fd, buf, bufsize);
fsync(fd);
close(fd);
rename(“foo.new”, “foo”);

通常,如果我们还想要 durability (即保证在发生崩溃时文件的新版本可用),那么我们还需要在父目录上调用 fsync .

问题:UBIFS还需要这个吗? documentation说:

可以为目录调用fsync() - 它同步目录inode元数据 . [...]对UBIFS中的目录的fdatasync()调用是“no-op”,所有更改目录条目的UBIFS操作都是同步的 .

如果我正确阅读,后者("all UBIFS operations which change directory entries are synchronous")似乎暗示在父目录上调用 fsync 是没有必要的 . 但是我的测试似乎表明不是这样 . 我误读了文档,还是这些信息过时了?

1 回答

相关问题