gpt4 book ai didi

linux - fsync(fd) 是否适用于外部程序创建的文件?

转载 作者:IT王子 更新时间:2023-10-29 00:41:24 24 4
gpt4 key购买 nike

我有一个禁用了写入缓存的 SATA 硬盘:

hdparm -W0 /dev/foo

我在一个 ext4 分区上使用这些挂载选项(以及其他):

data=ordered
auto_da_alloc

Linux 内核版本为 2.6.32-5-686

现在,我有一个我无法修改的外部程序,但我知道它会按以下方式创建一个文件:

int fd = open(path);
write(fd, data, data_size);
close(fd);

即它在关闭前不同步。所以在这一点上,数据可能在 RAM 中,在内核/fs 缓存中的某个地方。

注意:元数据还不是问题:最终的元数据将在我确定数据已到达磁盘盘片后写入并同步。数据本身就是问题。

那么问题来了,我怎样才能帮助数据到达实际的磁盘盘片?

我想过以后运行这个单独的程序:

int fd = open(path);
fsync(fd);
close(fd);

这是否有助于刷新数据,还是我应该使用不同的方法?

最佳答案

Will that help flush the data,

是的,谁进行 fsync 并不重要。

请注意,您可能还想 fsync 文件所在的目录,以便同步文件的元数据。

关于linux - fsync(fd) 是否适用于外部程序创建的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com