提交我自己的生物卡住

时间:2015-07-26 19:52:28

标签: c linux linux-kernel

当我尝试构建一个bio并使用generic_make_request时,我充斥着这种消息。

伪代码正在关注

struct page *page = kmalloc(sizeof(struct page), GFP_KERNEL);
struct bio *bio = bio_alloc(GFP_KERNEL);
set_bio(bio);
add_bio_page(bio, page);
submit_bio(bio);

然后日志将充满以下消息:

nommu_map_sg overflow xxxxxxxxxxx+4096 of device mask ffffffff

当我将页面分配更改为

struct page *page = alloc_page(GFP_KERNEL);

内核刚挂起,我可以看到我使用的VM的CPU消耗量很大。

1 个答案:

答案 0 :(得分:0)

我无法指出确切的错误,但您的代码缺少一些元素:

  • bi_bdev的{​​{1}}字段应指向块设备
  • struct bio字段应指向I / O完成例程