Advertisement

linux内核:块设备(三)——块设备纳入bio请求

阅读量:

该接口主要采用块设备方法处理bio相关请求。其核心策略在于将生物数据尽可能地整合到每个请求中,并通过这种方式实现多个相邻的 request 进行整合;当无法实现生物数据整合时,则需要创建新的单独 request 并完成其初始化操作后,并将其连接起来。

互斥方式:加锁,请求队列的锁

涉及多种调度算法:将新请求加入调度器的工作队列,并通过unplug事件触发调度器工作,在此之后根据指定的调度策略将该请求分配至相应的处理队列

复制代码
 /*块设备排入bio请求*/

    
 int blk_queue_bio(struct request_queue *q, struct bio *bio)
    
 {
    
     struct request *req;
    
     int el_ret;
    
     unsigned int bytes = bio->bi_size;
    
     const unsigned short prio = bio_prio(bio);
    
     const bool sync = bio_rw_flagged(bio, BIO_RW_SYNCIO);
    
     const bool unplug = bio_rw_flagged(bio, BIO_RW_UNPLUG);
    

全部评论 (0)

还没有任何评论哟~