LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1349|回复: 2

loop device同步问题

[复制链接]
发表于 2007-10-16 23:10:20 | 显示全部楼层 |阅读模式
创建一个vfat.img或其他的文件系统的img文件,然后mount到loop device上去。我发现向img写入小文件或修改小文件时,即使在应用层调用了fsync或sync,loop device还是会把这些数据写入到vfat.img所在的底层文件系统的page buffer里头。如果底层文件系统不调用相应的同步请求fsync/sync,如果发生掉电事件很容易导致img文件系统数据丢失。

有没有那位xdjm遇到过类似问题?如果有,请给我一些思路或告诉我相应的kernel patch上哪可以找到,急!
 楼主| 发表于 2007-10-20 01:42:19 | 显示全部楼层
我目前采用的解决方案是修改loop device的代码,在lo_set_fd和lo_change_fd中设置lo挂载文件的f_flags O_SYNC位,然后再底层文件系统判断该位以write through写。在卸载该文件时去掉O_SYNC位。这样做有比较大的性能损失。
有没有什么方法可以使底层文件系统不需要write through达到相同的目的?
回复 支持 反对

使用道具 举报

发表于 2007-10-29 17:24:02 | 显示全部楼层
mount 的时候有sync选项吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表