gpt4 book ai didi

linux-kernel - 如何将bio分成多个bios?

转载 作者:行者123 更新时间:2023-12-04 03:06:38 25 4
gpt4 key购买 nike

我想创建一个 block 设备来获取一个请求 n 个扇区的 bio,并将其拆分为 n 个 bio 和 1 个扇区。我使用了 bio_split 但它不起作用并且达到了 BUG_ON

有什么功能可以做这样的事情吗?

如果没有谁能帮我写一个函数来做到这一点?具有将 bio 拆分为 4k bios 的功能也很好。

最佳答案

split_bio() 函数仅适用于单页 bios(当 bi_vcnt 字段正好为 1 时)。

要处理具有多个页面的 bios - 我怀疑你大部分时间都在处理这些 - 你必须创建新的 bios 并设置它们,以便它们只包含一个扇区。

提示:如果扇区大小与页面大小(目前为 4K)相同,并且您的 block 驱动程序告诉内核提供不小于此大小,那么您只需将传入 bio 中的每个页面放到新生物。如果扇区大小小于页面大小,则逻辑会稍微复杂一些。

使用 bio_kmalloc 分配新的 bios 并手动将数据复制到其中的内存页。

关于linux-kernel - 如何将bio分成多个bios?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596317/

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