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)
还没有任何评论哟~
