FUSE вызывает getattr для специальных путей на Mac

Я пишу свою собственную игрушечную файловую систему с помощью FUSE (OSXFUSE в Mac OS X и libfuse в Linux). Каждый раз, когда я монтирую файловую систему, 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 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_getattr() моя собственная реализация getattr() обратный звонок в struct fuse_operations,

функция get_entry_attr() используется для получения атрибутов файла и сообщает об ошибке, поскольку не может найти соответствующий файл по этому пути.

Похоже, FUSE автоматически пытается позвонить getattr() в некоторых специальных скрытых файлах / каталогах, и это происходит только в Mac OS X. Вывод журнала нормален в Linux.

Вопросы * Что это за специальные файлы? * Почему звонит FUSE getattr() на этих путях первым? * Как предотвратить это в Mac OS X?

2 ответа

Те ._* файлы не создаются fuse или вашей файловой системой напрямую, это функция Mac OS X, см.: https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them,

Это не Fuse, это сама FS. Он использует get_attr для проверки существования файлов по пути.

Другие вопросы по тегам