2011-07-14 17 views
5

ヒューズにreaddir()機能を実装する際に奇妙な問題が発生しています。fuse readdir returns入出力エラー

LS

LS:読んディレクトリ:私はヒューズで任意のディレクトリにある 'LSを' を実行するとき基本的に、私は次のようなエラーが発生します。入力/出力エラー

FILE1.Cのfile2.c

しかし、奇妙なことに、readdirはまさにそれがやろうとしていることをやっています。その特定のディレクトリでは、「file1.c」と「file2.c」の2つのファイルがあり、正しく読むことができます。

問題のデバッグ中に、ヒューズ 'フィラー'機能( 'fuse_fill_dir_t'がreaddir()の引数として渡された)がこのエラーを引き起こしている可能性があることに気付きました。

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

しかし、フィラー関数を使用して内容を返すとすぐに、このエラーが発生します。

私はこれに関連する2つの質問があります。

1)誰もがフィラー関数は、この問題を引き起こしている可能性があります理由についてどのような考えを持っていますか?

2)どのようにしてfuse_fill_dir_t関数のコードの定義を探しますか?私はその種の議論でヒューズの機能のほとんどを見てきましたが、今まで運がなかった。

ご協力いただきましてありがとうございます。

乾杯、

ビナイ

答えて

1

このようなメッセージはgetxattr()のような他の(おそらく実装されていない)FUSEコールバックに失敗したコールによって引き起こされ得ます。その後、readdir()が呼び出され、結果が正しく取得されます。

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

また、ご使用のプラットフォーム(Linux/OS X/etc)が何であるか知っておいてよかったでしょう。

+0

私はOS Xで同じ質問をしています。 –