gpt4 book ai didi

linux - 'sync' 和 'syncfs' 系统调用是否映射到 FUSE 的 'fsync' 调用?

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

FUSE API不公开文件系统级别的 sync 调用,只是 fsyncfsyncdir。这是否意味着当 sync 被调用时(或 FUSE 挂载点内的 syncfs),内核对所有 FUSE 挂载的所有打开文件调用 fsync文件系统?还是有不同的语义?

最佳答案

查看内核源代码,似乎在 syncsyncfs 上执行了任何挂起的写回,但未调用 fsync(不是AFAICS 无论如何),所以实际上没有任何方法可以知道调用了 syncsyncfs

相关代码在https://github.com/torvalds/linux/blob/v4.16/fs/sync.c ,例如https://github.com/torvalds/linux/blob/v4.16/fs/sync.c#L31-L41

如图所示,这会在文件系统 super block 上调用fsync_fs 操作,但 fuse 没有定义任何内容:

https://github.com/torvalds/linux/blob/v4.16/fs/fuse/inode.c#L803-L814

我还记得读过一个关于这个的邮件列表线程,它表明在 fuse 中实现 sync_fs 是非常重要的,因为它会允许一个 fuse 文件系统(它可能作为非特权用户运行) 无限期地阻止任何全局 sync 系统调用,造成安全 (DoS) 问题。不过,我再也找不到那个线程了。

关于linux - 'sync' 和 'syncfs' 系统调用是否映射到 FUSE 的 'fsync' 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312208/

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