7

FUSEのメーリングリストで質問しようとしましたが、今のところ何の回答もありません...いくつか質問があります。低レベルのFUSEファイルシステムを実装し、fuse_chanepollでの記述子を監視します。

  1. ファイルシステム内のすべてのオブジェクトのiノードを偽造する必要がありますか?VFSでオブジェクトのiノードを選択するためのルールはありますか(たとえば、正の値のみを使用する必要がありますか、それとも特定の範囲の値を使用できますか)?

  2. ヒューズちゃんの記述子をノンブロッキングにすることはできますか?はいの場合、リクエスト構造全体を fuse_chan_recv()/fuse_chan_send() が受信/送信すると想定できるかどうか、または部分的な送受信を処理する関数でそれらをオーバーライドする必要があるかどうかを教えてください。

  3. どうbuffer sizeですか?fuse_loop()呼び出しごとに新しいバッファが割り当てられていることがわかります。そのため、バッファサイズは固定されていないと思います。ただし、可能な最大バッファサイズはありますか?次に、より大きなバッファを割り当てて、メモリ割り当て操作を減らすことができます。

4

1 に答える 1

2

(1)iノードは符号なし整数として定義されているため、理論的には任意の値を使用できます。ただし、注意しないプログラムが存在する可能性があるため、安全にプレイし、INT_MAXまでのゼロ以外の正の整数のみを使用します。

(2)Fuseは特別なカーネルデバイスを使用します。とにかく、fuse_chan_recv()は部分的な読み取りをサポートしていませんが、カーネルは部分的なパケットを返さないため、これは必要ない場合があります。

(3)Linuxのファイル名は最大4096文字です。これにより、バッファサイズが制限されます。

$ grep PATH_MAX /usr/include/linux/limits.h
#define PATH_MAX        4096    /* # chars in a path name including nul */
于 2011-07-12T22:33:14.987 に答える