如何在FUSE readdir调用中返回文件状态信息?

时间:2014-09-19 16:51:57

标签: python fuse

我已经实现了一个FUSE文件系统,现在我正在尝试优化性能,因为拥有数千个文件的目录的等待时间会持续几秒钟。

有些日志记录告诉我,在我返回文件名列表后,然后为每个文件调用getattr一次(对于10,000个文件的测试目录,调用10,000次),结果是等待5秒钟时间翻了两倍,等待20秒。

使用[1]的FUSE I版本似乎支持返回元组列表(name, stat, offset)以及名称列表,所以我尝试返回

(
  '<file_name>',
  <stat with st_atime, st_mtime, st_mode, st_uid, st_gid, st_size>,
  0,
)
每个文件都有

,但每个文件仍然会调用getattr

有人知道我在stat中遗漏了导致操作系统仍然调用getattr的内容,或者我没有办法改变这种行为吗?

[1]

  

版权所有(c)2008 Giorgos Verigakis

     

__version__ =&#39; 1.1&#39;

1 个答案:

答案 0 :(得分:1)

我发现调用getattr的次数超出了你的控制范围。根据您的实现,您可以通过在getattr中缓存结果来提高性能。