2012-04-06 35 views
2

我正试图在模块内部找到一种方式来跟踪写入块设备的最后一个块。我需要的特定设备是安装在根目录下的设备(我知道提前/ dev /名称,如果有帮助的话)。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

这最后工作得很好,谢谢。 – 2012-04-09 14:29:29