先看看原型申明:
void submit_bio(int rw, struct bio *bio)
其中
rw 代表是读还是写
bio 描述这个I/O的结构
最后submit_bio调用generic_make_request(bio);去完成真正的IO请求。
需要注意一点的是,bio结构里面有一个很重要的字段
struct block_device *bi_bdev;
这个bi_bdev就决定了从哪个设备上去读写数据。
所以,在内核中,如果我们要读取某个block设备的数据,使用submit_bio就可以得到数据的,自己构建一个bio。