我想创建一个块设备,获得一个与n个扇区的请求,并将其分成一个扇区的n个bio。我使用了bio_split,但它不工作,并到达了BUG_ON。
有没有什么函数可以做这样的事情?
如果没有的话,有没有人可以帮我写一个函数呢?它也可以有一个函数,将一个bios拆分成4k的bios。
发布于 2012-05-17 17:25:30
split_bio()函数仅适用于具有单页的bios (当bi_vcnt字段恰好为1时)。
要处理具有多个页面的bios --我怀疑您大部分时间都在处理这些--您必须创建新的bios并对其进行设置,以便它们只包含一个扇区。
提示:如果扇区大小与页面大小相同(当前为4K),并且您的块驱动程序告诉内核提供不小于此大小的扇区大小,那么您只需将传入bio中的每个页面放入新的bio。如果扇区大小小于页面大小,则逻辑会稍微复杂一些。
使用bio_kmalloc手动分配新的bios并将数据复制到其中的内存页。
https://stackoverflow.com/questions/10596317
复制相似问题