6

readdir()ヒューズに機能を実装しているときに奇妙な問題が発生します。基本的にls、ヒューズの任意のディレクトリで行うと、次のようなエラーが発生します。

# ls
ls: ディレクトリの読み込み .: 入出力エラー
file1.c file2.c

しかし、奇妙なことは、readdir()それがやるべきことを正確にやっているということです。その特定のディレクトリに、 と という名前の 2 つのファイルがfile1.cありfile2.c、正しく読み取ることができるという意味で。

filler問題をデバッグしているときに、ヒューズ関数 (fuse_fill_dir_tに引数として渡されるreaddir()) がこのエラーの原因である可能性があることに気付きました。

これはprintf、フィラー関数を使用して内容を返さずに、デバッグを使用してディレクトリの内容を単に出力すると、エラーが表示されないためです。

しかし、フィラー関数を使用してコンテンツを返すとすぐに、このエラーが発生し始めます。

これに関連して 2 つの質問があります。

filler1)関数がこの問題を引き起こしている理由について、誰かが何か考えを持っていますか?

fuse_fill_dir_t2)関数のコードの定義を探すにはどうすればよいですか? 私はその種の引数を使用してほとんどのヒューズ関数を調べましたが、今まで運がありませんでした。

どんな助けでも大歓迎です!

乾杯、ビナイ

4

1 に答える 1

1

このようなメッセージは、getxattr(). その後、readdir()が呼び出され、結果が正しく取得されます。

キーを使用して実行可能ファイルを実行している FUSE ファイルシステムをデバッグできます-d(デバッグ モード)。これは、プロセスをデーモン化せず、FUSE 呼び出しに関する詳細なデバッグ出力を出力します。

また、お使いのプラットフォーム (Linux/OS X/etc) を知っておくとよいでしょう。

于 2012-06-13T17:22:06.640 に答える