SCSI代码分析(0)SCSI层框架

SCSI代码分析(1)SCSI HOST的管理

SCSI代码分析(2)SCSI设备的管理1

SCSI代码分析(3)SCSI设备的管理2

SCSI代码分析(4)SCSI层IO下发和完成

SCSI代码分析(5)SCSI驱动编程模式

SCSI代码分析(6)错误处理

SCSI代码分析(7)错误处理(续)

SCSI即Small Computer System Interface,是一种存储的传输/控制协议。SCSI不是单个协议,而是一组协议,包括SAM-5/SPC/SBC等。这里跳过对协议的介绍,当涉及到时再介绍。

1. SCSI层框架

内核SCSI层(主要代码在drivers/scsi/目录下)负责对接BLOCK层,将上层的IO转化为SCSI命令,完成IO下发和完成;负责SCSI设备的管理;负责HBA的管理;负责错误的处理与恢复;负责与下层的对接等。

其中:

  1. SCSI Upper Layer:对不同类型设备的扫描(包括disk/tape/CDROM等);
  2. SCSI Middle Layer:负责IO下发和完成,设备的管理,以及错误处理等;
  3. SCSI Low Level Layer:不同的SCSI驱动;

HBA:Host Bus Adapter主机适配器,一般指控制器,如SAS控制器,SATA控制器

2. HBA与硬盘之间的连接

HBA与硬盘之间有两种连接:直接连接和通过expander扩展连接。直接连接是硬盘直接与HBA相连,没有中间介质,一般HBA可外接的接口有限,因此能够连接的硬盘有限;expander扩展连接时HBA与硬盘之间通过expander扩展连接,有些可以多级扩展,这样大大增加了外接硬盘的数量。

相比直接连接,expander扩展连接的设备拓扑相对复杂,因此需要软件能够识别负责的设备拓扑。目前SCSI层不包含对复杂设备拓扑的识别,一般交给底层驱动来做。如libsas负责识别设备拓扑。

后续章节准备从以下几个方面对SCSI层代码做介绍:

  1. SCSI HOST的识别和管理
  2. SCSI设备的识别和管理
  3. SCSI层IO下发和完成
  4. SCSI命令的执行
  5. SCSI错误处理
  6. SCSI驱动编程模式

SCSI代码分析(0)SCSI层框架相关推荐

  1. SCSI代码分析(6)SCSI错误处理

    除了之前介绍的正常完成SCSI层IO外,实际上还存在其他情况:IO发到控制器或硬盘后没有返回导致超时(称为IO的超时):硬件返回带错误信息的返回(IO返回异常).这些情况需要借助SCSI错误处理进行恢 ...

  2. GAT: 图注意力模型介绍及PyTorch代码分析

    文章目录 GAT: 图注意力模型介绍及代码分析 原理 图注意力层(Graph Attentional Layer) 情境一:节点和它的一个邻居 情境二:节点和它的多个邻节点 聚合(Aggregatio ...

  3. Linux SCSI设备容量打印代码分析

    探寻SCSI设备容量如何获取代码. 分析 8G USB转SD卡启动打印信息: sd 3:0:0:0: [sdb] 15523840 512-byte logical blocks: (7.94 GB/ ...

  4. 05-SA8155 QNX I2C框架及代码分析

    1. 描述 本文主要描述QNX I2C Drvier的相关内容,并以SA8155处理器为例讲解. I2C 是经常用到的一种总线协议,它只占用两个IO口资源,分别是SCL时钟信号线与SDA数据线, 两根 ...

  5. 三:Sensor SLPI层代码分析---

    三:Sensor SLPI层代码分析 在学习SLPI侧代码前我们先了解下SEE的registry&config. registry 放在/persist/sensors/registry/re ...

  6. 【鸿蒙OS开发入门】18 - HDF驱动子系统:加速度计传感器 Driver层驱动代码分析

    [鸿蒙OS开发入门]18 - HDF驱动子系统:加速度计传感器 Driver层代码分析 一.如何添加速度计传感器驱动代码(代码.编译.配置) 1.驱动代码实现 2.驱动编译配置 2.1 linux 编 ...

  7. sqlaction 更新至 v0.2.1.0,自动生成 JDBC 代码的数据库持久层工具

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   0.2.1.0        2019-04-17        calvin             * 新增拦截器"@@STA ...

  8. Java 线程池框架核心代码分析

    转载自 Java 线程池框架核心代码分析 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的.线程池应运而生,成为我们管理线程的利器.Java 通过Executo ...

  9. SensorKernel层框架分析

    接上文 安卓9.0Sensor框架 前言 前面我们已经讲解了sensor框架中的framework到vendor层,这篇文章我们将会讲解kernel层的内容.不过不同的芯片平台,kernel层中的se ...

  10. beego 例子_beego框架代码分析

    前言 也许beego框架在国内应该是众多PHPer转go的首选,因为beego的MVC.ORM.完善的中文文档让PHPer们得心应手,毫无疑问我也是.这种感觉就像当年入门PHP时使用ThinkPHP一 ...

最新文章

  1. 结构题直接定义赋值语句
  2. 几行代码实现神奇移动的过渡动画
  3. 未将对象引用设置到对象的实例--可能出现的问题总结
  4. python工作招聘-学习Python 能找到工作?1300+条招聘信息告诉你答案
  5. Linux Shell编程实战---以逆序形式打印行
  6. hdu4772 水模拟
  7. android studio引用module出的错:Unable to resolve dependency for‘:app@debug/........
  8. java 枚举类型enum
  9. POJ - 1091 跳蚤(容斥原理+数论)
  10. sizeof,strlen用法详解
  11. MSF利用pcshare控住目标主机
  12. 音创a55怎么安装系统_怎么安装系统|教你怎样安装系统教程
  13. Docker镜像基础命令
  14. 1小时学会HTML5基础
  15. SDL版仙剑奇侠传读后感
  16. linux ip route 命令详细解释
  17. 【Lua】Lua基础语法
  18. python 微服务架构_Python微服务架构chili_chicken
  19. ORAN专题系列-15:2020年最新O-RAN商业和技术进展深入观察-2
  20. openssl与数字证书的使用

热门文章

  1. 关于jxbrowser-7.19
  2. 税控盘版增值税开票软件日志加密算法分析及解密工具
  3. jquery weui 图片浏览器Photo Browser 如何使用?
  4. 【机器学习 基本概念】马尔可夫链
  5. 用SPSS做数据分析
  6. Mac使用RDC远程连接Windows并传输文件
  7. ORA-03113:通信通道的文件结尾-完美解决方案
  8. 前端安全——XSS攻击与防御原理详解
  9. 计算机大学生职业规划书word模板,大学生职业生涯规划书模板(附word)
  10. 50多款 51单片机程序源码 原理图 编程源代码