Google ドライブ用の FUSE ドライバーを実装しています。目的は、ユーザーが自分の Google ドライブ/ドキュメント アカウントを仮想ファイル システムとしてマウントできるようにすることです。完全なソースはhttps://github.com/jforberg/drivefsにあります。私は、Fusepyバインディングを使用して FUSE を Python と統合し、Google のDocument List API を使用して Drive にアクセスしています。
私のドライバーは、readdir(2)、stat(2)、および read(2) が期待どおりに機能する程度に完成しています。ファイルシステムでは、各ファイルの読み取りが大きなオーバーヘッドを持つ HTTPS 要求に変換されます。読み取り用により大きなバッファー サイズを強制することで、オーバーヘッドを制限することができました。
今私の問題に。Thunar や Nautilus などのファイル エクスプローラーはサムを構築し、各ファイルの最初の部分 (最初の 4k バイト程度) を読み取ることによってファイルの種類を判別します。しかし、私のファイルシステムでは、一度に多くのファイルから読み取るのは面倒な手順であり、thunar でファイルのリストを取得するには、単純なls (各ファイルを stat(2) するだけ) と比較して非常に長い時間がかかります。
私のファイルシステムが「ミニリード」でうまく機能しないことをファイルエクスプローラーに伝える方法、またはこれらのミニリードを識別して作成したデータをフィードして満足させる方法が必要です。どんな助けでも大歓迎です!
EDIT : 問題は HTTPS のオーバーヘッドではなく、Google のネイティブな「doc」形式の処理にありました。誰かがネイティブ ドキュメントを読み込もうとしたときに read(2) が空の文字列を返すようにする行を追加したところ、ファイルの一覧がほぼ瞬時に表示されるようになりました。
Google の公式クライアント プログラムでさえネイティブ ドキュメントを編集できないため、これは軽度の制限に思えます。