1

据我所知,在大多数日志模式为“data=ordered”的ext3系统上,fsync不仅会同步fd指定的文件,还会同步文件系统上的所有文件,这个问题在内核2.6之前还没有修复.30

我有一个问题,那就是,msync 和 fsync 做的事情一样吗?

谢谢。

4

2 回答 2

2

这不是一个错误,这是一个功能。Ext3 是一个日志文件系统。data=ordered 表示您要求对文件系统的更改按照它们进行的顺序写入。

因此,当您要求将更改同步到特定文件时,您必须提交所有以前的更改,无论是该文件还是其他文件,或者您正在破坏指令以保持数据有序。出于这个原因,我怀疑 msync 的行为方式相同,尽管我没有检查过。

事实上,有人可能会争辩说,如果不是这样,那就是文件系统错误......

于 2011-10-10T06:47:26.030 回答
0

阅读各种文章,我认为这根本不是真的。如果您执行一次 fsync,它不会将所有脏数据刷新到磁盘。它只刷新属于同一文件的元数据。

此外,使用 data=ordered 描述的问题似乎是它等待对同一设备的其他待处理 IO 请求,即使它在逻辑上应该具有更高的优先级。并非所有脏数据都被刷新(如 sync())。

我想做一个实验来找出答案。

于 2011-10-11T08:27:15.863 回答