2012-04-06 10 views
2

ブロックデバイスに書き込まれた最後のブロックを追跡する方法をモジュール内で見つけようとしています。私が必要とする具体的なデバイスは、ルートにマウントされたデバイスです(私が知っているなら、/ dev/nameはあらかじめわかります)。LKM:デバイスに書き込まれた最後のブロック

私のオリジナルのアイディアはsubmit_bio関数をラップすることでした。 "echo 1>/proc/sys/vm/block_dump"と入力します。残念ながら、その関数をポインタにするためにソースコードを変更する必要があるようです。私は可能な限りモジュールの中にすべてこれを保持したいと思います。

その後、私はファイルシステムのタイプを見つけ出し、デフォルトのファイル操作をラップしてみました(これらはすでに関数ポインタです)。それらはconstとして宣言されていますが、同様の問題です。

これは、実行しようとすると奇妙なことです。私は理解します。それを行う必要はありません。誰か私に行くことができるアイデアはありますか?

答えて

1

Linuxカーネルにはいくつかの異なるトレースツールキットが用意されています。 blktrace toolsはブロックデバイス専用に設計されています。 blkparse(1)ツールは、blktrace(8)ユーティリティの出力を解析します。 (少なくともUbuntuにはパッケージblktraceがパッケージ化されています;他のディストリビューションも同様のものが期待されます)bklparse(1)ツールはセクター情報を提供します。

Documentation/trace/events.txtは、セクタ情報を含むblock:block_bio_completeイベントに従うことができる別のトレースメカニズムについて説明しています。これはbkltraceツールキットをインストールする必要はありませんが、のどこにトレースログを読み込むのか分かりません。

+0

これは結構うまくいった、ありがとう。 –

関連する問題