【问题标题】:LKM: Last block written to deviceLKM:最后一个块写入设备
【发布时间】:2012-04-06 09:50:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: linux linux-kernel kernel-module


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多