Linux块设备中的IO路径及调度策略( 二 )


如图4是Deadline初始化的回调函数,从图中可以看出这里并没有初始化所有的回调函数,而只初始化了16个回调函数中的9个 。

Linux块设备中的IO路径及调度策略

文章插图
图4 Deadline回调函数
我们具体分析一下函数的调用场景,前文我们介绍到elevator_merge_fn函数用于查询可以与bio合并的请求 。如图5所示为整个调用栈,入口为blk_queue_bio,这个函数我们之前介绍过,它就是调度程序的入口 。该函数调用elv_merge用于查找是否有可以合并的请求,并返回 。而elv_merge函数调用的正式Deadline调度器提供的回调函数 。完成判断后,该函数会根据实际情况返回请求(或者没有找到,不返回)和可合并的方向(例如向前合并,向后合并等),后续流程就是进行具体的合并操作了 。
Linux块设备中的IO路径及调度策略

文章插图
图5 函数调用栈
由于IO调度涉及的流程比较多,限于本文篇幅,今天就先介绍到这里 。后续我们再更加深入的介绍关于IO调度的其它内容 。

【Linux块设备中的IO路径及调度策略】


推荐阅读