2016-07-10 1 views
1

FUSE (Mac OS X에서는 OSXFUSE, Linux에서는 libfuse)를 사용하여 자체 장난감 파일 시스템을 작성하고 있습니다. 로그와 같이 내가 파일 시스템을 마운트 할 때마다, FUSE는 특별한 경로에 getattr를 호출FUSE가 Mac의 특수 경로에서 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()struct fuse_operations에서 getattr() 콜백 내 자신의 구현입니다.

기능 get_entry_attr()은 파일의 속성을 가져 오는 데 사용되며 해당 경로에서 해당 파일을 찾을 수 없기 때문에 오류를보고합니다.

FUSE가 일부 특수 숨김 파일/디렉토리에서 getattr()을 자동으로 호출하려고 시도하는 것처럼 보입니다. 이는 Mac OS X에서만 발생합니다. Linux에서는 로그 출력이 정상입니다.

질문 * 특수 파일은 무엇입니까? * 왜 FUSE가 먼저 해당 경로에서 getattr()을 호출합니까? * Mac OS X에서이 문제를 방지하려면 어떻게해야합니까?

+1

왜 당신이 생각 볼륨이 마운트 될 때 퓨즈가 그것을하고있는 OS가 아니라 그 일이야? 왜 그것을 막고 싶니? 너 왜 신경 쓰냐? 존재하지 않는 파일에 액세스하려는 다른 시도처럼 실패합니다. 확실히, 파일 시스템 구현은이를 처리해야합니다. –

답변

0

그것은 퓨즈가 아니며 FS 자체입니다. get_attr을 사용하여 경로에있는 파일 존재를 확인합니다.