背景:在Java中我是内存映射文件(共享)。
我正在该文件的地址0处写入一些值。我知道PAGE CACHE中的相应PAGE被标记为DIRTY,稍后将根据dirty_ratio等设置进行写入。
到目前为止一切顺利。
但我想知道在内核将脏页写回文件时再次在地址0写入时会发生什么。我的进程是否在某种程度上被阻止等待写回完成?
答案 0 :(得分:0)
可能是。仅当设备级I / O请求在写入数据旁边包含校验和时才需要。否则,第一次写入可能会被撕裂,但随后可以通过第二次写入进行纠正。
一如既往,请仔细考虑您的电源故障,内核崩溃等安全性。
据称在btrfs中避免了等待。 (此外,偶然地,在旧版ext3文件系统中。但不是ext4或ext2)。
这看起来像是一个移动的目标。上面(据我所知)描述了此“稳定页写入”代码的首次优化,是在首次引入该代码之后提出的。提交描述提到了未来更改的几种可能性。
您可以查看一个名为stable_pages_required