linux - LKM : Last block written to device

标签 linux linux-kernel kernel-module

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

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

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

我明白,尝试做这件事有点奇怪。尽管如此,还是需要这样做。有没有人有任何想法可以让我继续前进?

最佳答案

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

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

关于linux - LKM : Last block written to device,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037944/

相关文章:

linux - 如何为沙盒禁用 Linux 进程的套接字创建?

php - 如何从 PHP 脚本中将数据通过管道传输到可执行文件中?

c++ - 创建大量文件后,fopen失败并显示EFBIG “File too large”

linux - 如何将设备链接到自定义 sysfs 类?

python - celery 错误 : result. 获取超时

linux - 在 Virtual Box 中安装 Linux Mint Win10 内核崩溃

linux - 64 位 NASM 文件处理问题

linux - Kprobe on Linux Scheduler 和查找 linux 调度程序

audio - 我需要做什么才能在运行 debian 的 beaglebone 上设置 USB 音频小工具 i/o?

linux - 调试 cdc-acm 内核模块