首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ext4中使用O_DIRECT打开()时,fsync()会做什么

在ext4中使用O_DIRECT打开()时,fsync()会做什么
EN

Stack Overflow用户
提问于 2021-02-02 10:46:49
回答 1查看 223关注 0票数 1

我知道XFS不会同步元数据,即使正在写入的文件是用O_DIRECT打开的,并且文件的元数据发生了更改。但是对于ext4,我注意到MySQL支持O_DIRECT_NO_FSYNC,这意味着MySQL不会调用fsync(),而是让文件系统自己同步元数据。

所以问题来了:如果我在ext4中用O_DIRECT open一个文件(比如linux内核版本5.8.0),在write()之后调用fsync()fsync()会怎么做?

接下来要问的另一个问题是:如果在ext4中用O_DIRECT | O_SYNC open()一个文件,fsync()会怎么做?

谢谢!

EN

Stack Overflow用户

发布于 2021-02-09 04:31:25

O_DIRECT does not imply anything about a disk's own volatile cache。在Linux上,fsync()也可以请求写回缓存中的数据。

当文件已经在使用O_DIRECT|O_SYNC时,您的fsync() ...会有开销,因为你做了一个系统调用,将不得不检查页面缓存,并发送磁盘缓存刷新-他们只是没有任何工作要做,所以这是一种浪费。我猜,根据文件系统的不同,您最终可能会刷新日志和/或其他文件的数据。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66002976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档