Macos FUSE在Mac上的特殊路径上调用getattr
我正在用FUSE编写自己的玩具文件系统(MacOSX上的OSXFUSE和Linux上的libfuse)。每次我挂载文件系统时,FUSE都会在一些特殊路径上调用Macos FUSE在Mac上的特殊路径上调用getattr,macos,fuse,osxfuse,Macos,Fuse,Osxfuse,我正在用FUSE编写自己的玩具文件系统(MacOSX上的OSXFUSE和Linux上的libfuse)。每次我挂载文件系统时,FUSE都会在一些特殊路径上调用getattr,如日志所示: [debug] trfs_getattr: called on path=/ [debug] trfs_getattr: called on path=/._. [error] get_entry_attr: no entry at path /._. [debug] trfs_getattr: called
getattr
,如日志所示:
[debug] trfs_getattr: called on path=/
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/.hidden
[error] get_entry_attr: no entry at path /.hidden
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/.hidden
[error] get_entry_attr: no entry at path /.hidden
函数trfs\u getattr()
是我自己在struct fuse\u操作中实现的getattr()
回调
函数get\u entry\u attr()
用于获取文件的属性,它报告错误,因为它无法在该路径上找到相应的文件
FUSE似乎自动尝试在某些特殊的隐藏文件/目录上调用getattr()
,这种情况仅在Mac OS X上发生。在Linux上,日志输出是正常的
问题
*那些特殊文件是什么?
*为什么FUSE首先在这些路径上调用getattr()
?
*如何在Mac OS X上防止这种情况?它不是保险丝,而是FS本身。
它使用get\u attr检查路径中存在的文件。那些\u*
文件不是由fuse或您的文件系统直接创建的,这是Mac OS X的一项功能,请参阅:为什么您认为在装入卷时是fuse而不是OS这样做?你为什么要阻止它?你为什么在乎?就像任何其他尝试访问不存在的文件一样失败。当然,您的文件系统实现必须处理这个问题。