2

我试图在模块内找到一种方法来跟踪写入块设备的最后一个块。我需要的特定设备是安装在根目录下的设备(如果有帮助,我会提前知道 /dev/ 名称。)

我最初的想法是包装 submit_bio 函数,因为如果您“echo 1 > /proc/sys/vm/block_dump”,它已经具有日志记录功能。不幸的是,我似乎需要修改源代码以使该函数成为指针。如果可能的话,我想把这一切都保留在模块中。

之后,我研究了查找文件系统类型,并包装了默认文件操作(毕竟这些已经是函数指针)。但是,这些被声明为 const,所以同样的问题。

我明白,这是一件很奇怪的事情。无论如何都需要这样做。有没有人有任何想法可以让我继续前进?

4

1 回答 1

1

Linux 内核提供了几种不同的跟踪工具包;这些blktrace工具是专门为块设备设计的。该blkparse(1)工具将解析blktrace(8)实用程序的输出。(至少 Ubuntu 将这些打包在blktrace包中;我希望其他发行版也类似。)该bklparse(1)工具可以为您提供扇区信息。

Documentation/trace/events.txt描述了另一种跟踪机制——一种允许您跟踪block:block_bio_complete事件的机制,其中包括扇区信息。这不需要安装bkltrace工具包,但我会(不好意思地)承认我不知道在哪里阅读跟踪日志。

于 2012-04-06T01:50:31.953 回答