我正在为 Google Drive 实现 FUSE 驱动程序。目的是允许用户将她的 Google Drive/Docs 帐户挂载为虚拟文件系统。完整源代码位于https://github.com/jforberg/drivefs。我使用fusepy绑定将 FUSE 与 Python 集成,并使用 Google 的Document List API 来访问 Drive。
我的驱动程序已经完成到 readdir(2)、stat(2) 和 read(2) 按预期工作的程度。在文件系统中,每个文件读取都会转换为具有很大开销的 HTTPS 请求。我已经设法通过强制读取更大的缓冲区大小来限制开销。
现在到我的问题。Thunar 和 Nautilus 等文件浏览器通过读取每个文件的第一部分(前 4k 字节左右)来构建拇指并确定文件类型。但是在我的文件系统中,一次读取多个文件是一个痛苦的过程,与简单的ls相比(每个文件只 stat(2)s),在 thunar 中获取文件列表需要很长时间。
我需要一些方法来告诉文件浏览器我的文件系统不能很好地使用“迷你读取”,或者某种方法来识别这些迷你读取并为他们提供虚构的数据以让他们开心。任何帮助,将不胜感激!
编辑:问题不在于 HTTPS 开销,而在于我对 Google 的原生“doc”格式的处理。我添加了一行以使 read(2) 在有人尝试读取本机文档时返回一个空字符串,并且文件列表现在几乎是即时的。
这似乎是一个轻微的限制,因为即使是 Google 的官方客户端程序也无法编辑原生文档。