SCSI代码分析(0)SCSI层框架
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的管理;负责错误的处理与恢复;负责与下层的对接等。
其中:
- SCSI Upper Layer:对不同类型设备的扫描(包括disk/tape/CDROM等);
- SCSI Middle Layer:负责IO下发和完成,设备的管理,以及错误处理等;
- SCSI Low Level Layer:不同的SCSI驱动;
HBA:Host Bus Adapter主机适配器,一般指控制器,如SAS控制器,SATA控制器
2. HBA与硬盘之间的连接
HBA与硬盘之间有两种连接:直接连接和通过expander扩展连接。直接连接是硬盘直接与HBA相连,没有中间介质,一般HBA可外接的接口有限,因此能够连接的硬盘有限;expander扩展连接时HBA与硬盘之间通过expander扩展连接,有些可以多级扩展,这样大大增加了外接硬盘的数量。
相比直接连接,expander扩展连接的设备拓扑相对复杂,因此需要软件能够识别负责的设备拓扑。目前SCSI层不包含对复杂设备拓扑的识别,一般交给底层驱动来做。如libsas负责识别设备拓扑。
后续章节准备从以下几个方面对SCSI层代码做介绍:
- SCSI HOST的识别和管理
- SCSI设备的识别和管理
- SCSI层IO下发和完成
- SCSI命令的执行
- SCSI错误处理
- SCSI驱动编程模式
SCSI代码分析(0)SCSI层框架相关推荐
- SCSI代码分析(6)SCSI错误处理
除了之前介绍的正常完成SCSI层IO外,实际上还存在其他情况:IO发到控制器或硬盘后没有返回导致超时(称为IO的超时):硬件返回带错误信息的返回(IO返回异常).这些情况需要借助SCSI错误处理进行恢 ...
- GAT: 图注意力模型介绍及PyTorch代码分析
文章目录 GAT: 图注意力模型介绍及代码分析 原理 图注意力层(Graph Attentional Layer) 情境一:节点和它的一个邻居 情境二:节点和它的多个邻节点 聚合(Aggregatio ...
- Linux SCSI设备容量打印代码分析
探寻SCSI设备容量如何获取代码. 分析 8G USB转SD卡启动打印信息: sd 3:0:0:0: [sdb] 15523840 512-byte logical blocks: (7.94 GB/ ...
- 05-SA8155 QNX I2C框架及代码分析
1. 描述 本文主要描述QNX I2C Drvier的相关内容,并以SA8155处理器为例讲解. I2C 是经常用到的一种总线协议,它只占用两个IO口资源,分别是SCL时钟信号线与SDA数据线, 两根 ...
- 三:Sensor SLPI层代码分析---
三:Sensor SLPI层代码分析 在学习SLPI侧代码前我们先了解下SEE的registry&config. registry 放在/persist/sensors/registry/re ...
- 【鸿蒙OS开发入门】18 - HDF驱动子系统:加速度计传感器 Driver层驱动代码分析
[鸿蒙OS开发入门]18 - HDF驱动子系统:加速度计传感器 Driver层代码分析 一.如何添加速度计传感器驱动代码(代码.编译.配置) 1.驱动代码实现 2.驱动编译配置 2.1 linux 编 ...
- sqlaction 更新至 v0.2.1.0,自动生成 JDBC 代码的数据库持久层工具
开发四年只会写业务代码,分布式高并发都不会还做程序员? 0.2.1.0 2019-04-17 calvin * 新增拦截器"@@STA ...
- Java 线程池框架核心代码分析
转载自 Java 线程池框架核心代码分析 前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的.线程池应运而生,成为我们管理线程的利器.Java 通过Executo ...
- SensorKernel层框架分析
接上文 安卓9.0Sensor框架 前言 前面我们已经讲解了sensor框架中的framework到vendor层,这篇文章我们将会讲解kernel层的内容.不过不同的芯片平台,kernel层中的se ...
- beego 例子_beego框架代码分析
前言 也许beego框架在国内应该是众多PHPer转go的首选,因为beego的MVC.ORM.完善的中文文档让PHPer们得心应手,毫无疑问我也是.这种感觉就像当年入门PHP时使用ThinkPHP一 ...
最新文章
- 结构题直接定义赋值语句
- 几行代码实现神奇移动的过渡动画
- 未将对象引用设置到对象的实例--可能出现的问题总结
- python工作招聘-学习Python 能找到工作?1300+条招聘信息告诉你答案
- Linux Shell编程实战---以逆序形式打印行
- hdu4772 水模拟
- android studio引用module出的错:Unable to resolve dependency for‘:app@debug/........
- java 枚举类型enum
- POJ - 1091 跳蚤(容斥原理+数论)
- sizeof,strlen用法详解
- MSF利用pcshare控住目标主机
- 音创a55怎么安装系统_怎么安装系统|教你怎样安装系统教程
- Docker镜像基础命令
- 1小时学会HTML5基础
- SDL版仙剑奇侠传读后感
- linux ip route 命令详细解释
- 【Lua】Lua基础语法
- python 微服务架构_Python微服务架构chili_chicken
- ORAN专题系列-15:2020年最新O-RAN商业和技术进展深入观察-2
- openssl与数字证书的使用