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

Pet*_*lák 10 linux filesystems sync fuse fsync

FUSE API不公开文件系统级sync的呼叫,只是fsyncfsyncdir.是否意味着在sync调用时(或syncfs在FUSE挂载点内),内核会调用fsync所有FUSE挂载的文件系统上的所有打开文件?或者是否有不同的语义?

Mat*_*man 2

查看内核源代码,似乎执行了onsync和任何挂起的写回,但没有被调用(无论如何不是 AFAICS),因此实际上没有任何方法可以知道or被调用。syncfsfsyncsyncsyncfs

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

如图所示,这调用了fsync_fs文件系统超级块上的操作,但fuse没有定义任何操作:

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

我还记得阅读过有关此问题的邮件列表线程,该线程表明sync_fs在熔断器中实现并非易事,因为它将允许熔断器文件系统(可能作为非特权用户运行)sync无限期地阻止任何全局系统调用,从而构成安全(DoS)问题。不过,我再也找不到那条线索了。