如何强制从我们自己的Linux驱动程序立即写入磁盘

时间:2016-11-15 15:38:48

标签: linux caching kernel linux-device-driver disk

我们有一个驱动程序通过从块层通过其他块设备的“make_request_fn”发送BIO,将数据直接写入磁盘扇区。

但不知怎的,数据没有立即写入磁盘,当我重新启动机器时,重启前写入磁盘的数据消失了。

如果下次重启之前,数据可以在下次重启时正确反映

  1. 我在编写

  2. 后使用函数来清除块设备(来自程序)
  3. 删除系统缓存“fsyhc; echo 1> / proc / sys / vm / drop_caches“写完后

  4. 我们也尝试了以下方法,但它们都没有用。

    1. 在BIO标志上添加类似flush / FUA的标志
    2. 调用blkdev_issue_flush()
    3. 这发生在像VMware这样的真机和虚拟环境中。 操作系统是Ubuntu 14.4.3,内核3.19和Ext4文件系统。

      我想知道是否有人可以解释原因并帮助我。

0 个答案:

没有答案