据我所知,在大多数具有日志模式“data = ordered”的ext3系统上,fsync不仅会同步用fd指定的文件,还会同步文件系统上的所有文件,而这个问题还没有解决在内核2.6.30之前
我有一个问题,那就是msync与fsync做同样的事情吗?
感谢。
答案 0 :(得分:2)
这不是一个错误,它是一个功能。 Ext3是一个日志文件系统。 data = ordered表示您要求对文件系统进行更改按照它们的顺序编写。
因此,当您要求将更改同步到特定文件时,您必须提交所有先前的更改,无论是对于该文件还是其他文件,或者您违反了指令以使数据保持有序。出于这个原因,我怀疑msync将以相同的方式运行,尽管我还没有检查过。
事实上,人们可以争辩说,如果不是,那就是文件系统错误......
答案 1 :(得分:0)
阅读各种文章,我认为这根本不是真的。如果您执行一个fsync,它不会将所有脏数据刷新到光盘。它只刷新属于同一文件的元数据。
此外,data = ordered描述的问题似乎是它等待同一设备的其他待处理IO请求,即使它在逻辑上应该具有更高的优先级。不是要刷新所有脏数据(如sync())。
我想做一个实验来找出答案。