我一直在玩块设备i / o方法,尝试通过在struct queue中更改make_request_fn的函数指针来覆盖任何给定块设备的make_request_fn。我有一个疑问,但是当我自己的新make_request_fn被调用时,struct bio中的struct block_device有一个dev_t,一个minor总是设置为0,无论它是什么设备。有什么方法可以找出生物将要服务的特别小装置?因为在结束我的函数之前,我需要弄清楚要调用哪个缓存的原始make_request_fn。
答案 0 :(得分:0)
这是因为分区。我不知道所有分区都将共享相同的make_request_fn。我通过记下每个分区的起始和结束扇区号并用此映射struct bio中的bi_sector来找出bio属于哪个分区。