LKM:写入设备的最后一个块

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

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

之后,我研究了如何find文件系统types,并且包装了默认的文件操作(毕竟它们已经是函数指针了)。 这些被宣布为const,但是,同样的问题。

我明白,这是一件奇怪的事情要做。 需要这样做,无所谓。 有没有人有任何想法,可能会让我走?

Solutions Collecting From Web of "LKM:写入设备的最后一个块"

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

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