当我尝试构建一个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消耗量很大。
答案 0 :(得分:0)
我无法指出确切的错误,但您的代码缺少一些元素:
bi_bdev
的{{1}}字段应指向块设备struct bio
字段应指向I / O完成例程