0.前言

内核版本:4.19

文档目的: 主要以null_dev为例来研究多队列的工作机制。本文主要以ext4文件系统为例,介绍null block dev读流程。注意本文所述流程是在禁用blk-mq调度器的情况下进行的,禁用方法为null blk驱动

中g_no_sched设为1。

1.通过/dev/nullb设备节点读取

nullb driver分析5-读裸设备过程(禁用调度器)

 

我们知道在创建设备节点的时候,通过系统调用mknod,最终会为设备文件创建inode,并通过init_special_inode来初始化inode->i_fop,如果是块设备则为def_blk_fops;

当通过系统调用open打开设备文件时就会将块设备文件的inode->i_fop赋值给file->f_op,也就是将def_blk_fops赋值给file->f_op;

当读取块设备文件节点时,就会调用到def_blk_fops的blkdev_read_iter,如图中调用栈所示

读取null block dev就遵循这个过程

之后的过程将与通过文件系统读流程一致

 

相关文章:

  • 2022-12-23
  • 2021-06-28
  • 2022-12-23
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-06
猜你喜欢
  • 2021-07-09
  • 2021-12-20
  • 2022-12-23
  • 2022-01-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案