gpt4 book ai didi

linux - 我们是否需要 fsync UBIFS 中的父目录以进行原子 * 和 * 持久文件更新

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:02 29 4
gpt4 key购买 nike

这是 typical and well-known approach对于原子 文件更新:

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

一般来说,如果我们还需要持久性(即保证在发生崩溃时文件的版本可用),那么我们还需要在父目录上调用 fsync

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

fsync() may be called for directories - it synchronizes the directory inode meta-data. [...]

The fdatasync() call for directories is "no-op" in UBIFS and all UBIFS operations which change directory entries are synchronous.

如果我没看错的话,后者(“所有更改目录条目的 UBIFS 操作都是同步的”)似乎暗示在父目录上调用 fsync 是不必要的。然而,我的测试似乎表明并非如此。我是否误读了文档,或者此信息是否已过时?

最佳答案

我在 MTD 邮件列表上询问过;似乎文档含糊不清,calling fsync on the parent dir is necessary与其他文件系统一样。

关于linux - 我们是否需要 fsync UBIFS 中的父目录以进行原子 * 和 * 持久文件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53702698/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com