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