我想维护一个块号列表,因为它们是使用linux内核源物理写入的。我打算修改内核源代码来做到这一点。我只需要在内核源代码中找到处理写入物理分区的结构和函数,并在写入物理分区时获取块编号。
任何方式这样做?任何帮助表示赞赏。如果我能找到内核实际写入分区并返回块编号的位置,那就可以了。
答案 0 :(得分:0)
我相信你可以完全从用户空间完成这项工作,无需使用blktrace界面修改内核。
答案 1 :(得分:0)
这不仅仅是一个的地方。例如,如果块设备是iSCSI或AoE目标,那么您将寻找各自的驱动程序,然后在另一端找到相同的驱动程序。
普通的SCSI,misc闪存设备等也是如此,减去网络交互。
VFS只是在一个方便,统一和一致的界面中将这些全部拉到一起,以便read()和write()等调用在提供缓冲的同时工作。实际的魔术,包括排序和写入障碍,由块开发驱动程序自己处理。
在使用设备映射器的情况下,路径会稍微改变。它来自vfs - > dm_(目标) - > blockdev_driver。