从struct bio获取设备dev_t

问题描述:

我一直在尝试通过更改指向make_request_fn函数指针的结构队列中的任何给定块设备的make_request_fn来绕过块设备I/O方法。我有一个疑问,当我自己的新make_request_fn被调用时,struct bio内部的struct block_device有一个dev_t,其中一个次要总是设置为0,无论它是什么设备。有没有什么方法可以找出生物将要服务的特别小的装置?因为我需要在结束我的函数之前找出哪个缓存的原始make_request_fn要调用。从struct bio获取设备dev_t

这是因为分区。我不知道所有分区将共享相同的make_request_fn。我通过记下每个分区的开始和结束扇区号以及将struct bio内的bi_sector映射到这里来找出生物属于哪个分区。