fsync 手册页中以下语句的含义是什么
调用 fsync() 不一定确保包含该文件的目录中的条目也已到达磁盘。为此,还需要在目录的文件描述符上显式 fsync()。
这是否意味着当我在文件上调用 fsync 时 fsync 不会更新目录元数据?
同一问题的另一个引用是(来自 Robert Love 的 Linux 系统编程之书):
这两个函数都不能保证包含该文件的任何更新的目录条目都会同步到磁盘。这意味着如果文件的链接最近已更新,则文件的数据可能会成功到达磁盘但无法到达关联的目录条目,从而导致文件无法访问。
为什么文件的数据需要到达目录链接?如果我错了,请纠正我,但目录只包含该文件的文件名和 inode 号。实际数据在文件中。“数据将到达文件而不是目录链接”是什么意思?
它的意思是:
关联的目录条目可能无法成功到达磁盘
创建新文件时,这可能是一个问题。
我会忽略对“文件链接”的概括,除非您知道正在创建硬链接。
是的。或者更确切地说,你不能依赖它。(有些实现可能总是在 fsync 返回之前更新它。)