gpt4 book ai didi

linux-kernel - Linux 内核 - 内核中的哪些数据 block 物理写入特定磁盘分区?

转载 作者:行者123 更新时间:2023-12-04 16:02:41 24 4
gpt4 key购买 nike

我正在修改 Linux 内核,并试图找到内核源数据块中物理写入磁盘分区(例如 ubd0)的位置。这在内核源代码中发生在哪里?实际的物理写入调用?我找不到这个。谢谢!

编辑:最终目标是已写入几个不同分区的块编号列表。当数据物理写入列表时,写入的块号被返回和维护。

最佳答案

这取决于特定的驱动程序和设备类型。对于 SCSI 设备,SCSI 命令转到设备驱动程序。它们在 SCSI 层生成,并由设备的驱动程序发送到设备,然后再发送到设备。

在将数据推送到设备之前,sys_write 系统调用有很多抽象,设备驱动程序本身甚至可能不知道它正在执行写入操作。

对于您的编辑,请查看 blktrace:
http://linux.die.net/man/8/blktrace

好的,另一个答案;你会更喜欢这个。这发生在 generic_make_request 中。评论很有​​描述性:
http://lxr.linux.no/#linux+v2.6.32/block/blk-core.c#L1380

该函数中的 bio 结构,见此处:
http://lxr.linux.no/#linux+v2.6.32/include/linux/bio.h#L58

显示 bio_vec,这是进入设备的东西的列表。

q->make_request_fn(q, bio);是对设备本身的实际函数指针调用。

http://lxr.linux.no/#linux+v2.6.32/include/linux/types.h#L126

显示如何使用索引写入分区。您应该注意,这不仅用于写入。

关于linux-kernel - Linux 内核 - 内核中的哪些数据 block 物理写入特定磁盘分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com