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

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

文章插图
图5 函数调用栈
由于IO调度涉及的流程比较多,限于本文篇幅,今天就先介绍到这里 。后续我们再更加深入的介绍关于IO调度的其它内容 。
【Linux块设备中的IO路径及调度策略】
推荐阅读
- 柚子里面烂了 柚子有一点点小块坏了别的能吃吗
- 梦见大块冰雹从天而降 梦见大冰雹从天而降,没砸到
- 翡翠|如何选一块好翡翠,你选到了心目中的好翡翠了吗?
- 二手洗涤设备回收 洗涤原料批发市场
- 如何安装linux
- linux从命令行同时移动多个文件类型的小技巧
- linux 虚拟机下安装nginx的步骤教程
- Linux内核通知链
- 才发现手机自带的录屏功能这么强大,网友直呼:几千块没白花
- 绿茶和蜂蜜在一块喝有什么作用?[绿茶]
