fsync

来源:互联网 发布:阑夕 知乎 编辑:程序博客网 时间:2024/05/23 15:43

    fsync在LINUX中的意义在于同步数据到存储设备上.大多数块设备的数据都是通过缓存进行.当将数据写到文件上,通常将该数据由内核复制到缓存中,如果该缓存尚未写满,则不将其排入输出队列上,而是等待其写满或者当内核需要重用该缓存时,再将该缓存排入输出队列,同步到设备上.这样的策略的好处是减少了磁盘读写次数,但是不足的地方是降低了文件内容的更新速度,使其不能时刻同步到储存设备上.如果当系统发生故障时,这种机制很有可能导致了文件内容的丢失.因此,内核提供了fsync接口,用户可以根据自己的需要通过此接口更新数据到存储设备上.

    其原型为:

int(*fsync)(struct file *file,struct dentry *dentry,int datasync);

    在实际的使用场景上,字符设备一般不会用到此接口,而块设备是通用的block_fsync来实现此方法.


原创粉丝点击