FUSE API不公开文件系统级sync
调用,只是fsync
和fsyncdir
。 这是否意味着在调用sync
(或FUSE挂载点内的syncfs
)时,内核会在所有FUSE挂载的文件系统上的所有打开的文件上调用fsync
? 还是有不同的语义?
当调用syncfs(2)系统调用时,内核调用fd所属文件系统的超级块上的sync_filesystem()。 如果所讨论的文件系统实现.sync_fs超级块操作,则会被调用。 FUSE不会,因此FUSE的sync_filesystem()只会调用/ dev / fuse上的__sync_blockdev(),它将同步所有保险丝装载的脏页(因此也包括所有未更新的文件)。