Advertisement

linux内核之块设备二--- linux内核处理block设备的requests

阅读量:
  • 触发请求request派发的时机:

    1. 当重新申请一个请求失败时
    2. 当将一个带有unplug标记的bio插入到请求队列时
    3. 当将请求加入调度器的调度队列,并达到unplug阈值时
    4. 当unplug定时时间到达,进入周期性处理时
    • 前三个情况会调用__generic_unplug_device函数,最后一个情况则调用generic_unplug_device函数

    • 关于互斥机制:通过加锁操作来保护请求队列,确保线程安全

    • 在初始化请求队列的过程中,默认情况下块设备的请求下发接口会被设置为scsi_request_fn函数

/真正派发请求request/

复制代码
 void generic_unplug_device(struct request_queue *q)

    
 {
    
     if (blk_queue_plugged(q)) {
    
     spin_lock_irq(q->queue_lock);
    
     __generic_unplug_device(q);
    
     spin_unlock_irq(q->queue_lock);
    
     }
    
 }
    
  

全部评论 (0)

还没有任何评论哟~