2016-07-10 10 views
1

Ich schreibe mein eigenes Spielzeug-Dateisystem mit FUSE (OSXFUSE unter Mac OS X und libfuse unter Linux). Jedes Mal, wenn ich das Dateisystem einhängen, ruft FUSE getattr auf einige spezielle Wege, wie das Protokoll zeigt:FUSE ruft getattr auf speziellen Pfaden auf Mac

[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 

Funktion trfs_getattr() meine eigene Implementierung des in struct fuse_operationsgetattr() Rückruf ist.

Die Funktion get_entry_attr() wird zum Abrufen der Attribute einer Datei verwendet und meldet einen Fehler, da die entsprechende Datei in diesem Pfad nicht gefunden werden kann.

Es scheint, als ob FUSE automatisch versucht, auf einige spezielle versteckte Dateien/Verzeichnisse getattr() aufzurufen, und dies geschieht nur unter Mac OS X. Die Protokollausgabe ist unter Linux normal.

Fragen * Was sind diese speziellen Dateien? * Warum ruft FUSE zuerst auf diesen Pfaden getattr()? * Wie kann dies unter Mac OS X verhindert werden?

+1

Warum denken Sie es FUSE ist es nicht das OS zu tun? Warum willst du das verhindern? Warum kümmert dich das? Scheitern Sie einfach wie bei jedem anderen Versuch, auf eine nicht existierende Datei zuzugreifen. Sicherlich muss Ihre Dateisystemimplementierung damit umgehen. –

Antwort

0

Es ist nicht Fuse, es FS selbst. Es verwendet get_attr, um vorhandene Dateien im Pfad zu überprüfen.