![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
存储原理
文章平均质量分 66
Linux技术芯
用技术改变生活
展开
-
【存储原理】IO超时处理 块层block-scsi层之间
【存储原理】IO超时处理 块层block-scsi层之间原创 2023-10-29 23:33:53 · 414 阅读 · 0 评论 -
深入浅出块I/O子系统(五)I/O调度算法
I/O调度算法I/O调度器(I/O Scheduler)的工作是管理块设备的请求队列。它决定队列中的请求排列顺序以及在什么时刻派发请求到块设备。这样做有利于减少磁盘寻址时间,从而提高整体性能。I/O调度程序通过两种方法来减少磁盘寻址时间:合并与排序。1.为请求队列建立关联的I/O调度队列2.判断bio是否可以被合并到request3.将请求添加到I/O调度队列或请求队列4.从I/O调度队列派发请求到请求队列...原创 2022-05-08 11:02:07 · 577 阅读 · 0 评论 -
深入浅出块I/O子系统(四)请求处理过程
BIO请求处理的流程函数scsi_request_fn()代码(摘自文件drivers/scsi/scsi_lib.c)(1)static void scsi_request_fn(struct request_queue *q)(2)int scsi_dispatch_cmd(struct scsi_cmnd *cmd){host->hostt->queuecommand(host, cmd)}(3)struct sas_internal *isas_queuec原创 2021-12-26 20:21:48 · 996 阅读 · 0 评论 -
Linux内核源码分析-scsi子系统-让磁盘转起来-sd_spinup_disk
如何调用到sd_spinup_disk接口,请查看前面文章【深入浅出SCSI子系统(六)SCSI 磁盘驱动】链接:深入浅出SCSI子系统(六)SCSI 磁盘驱动_sinat_37817094的博客-CSDN博客函数sd_spinup_disk()代码(摘自文件drivers/scsi/sd.c)sd_spinup_disk函数尝试等到SCSI磁盘已经准备好,必要时使磁盘转起来。前者发送TEST UNITREADY命令,后者发送START UNIT命令。/* * spinup di原创 2021-12-07 07:42:24 · 1713 阅读 · 2 评论 -
sas协议(SAS PL-3)之Zoning功能
1 Zoning overviewSAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned portion of a service delivery subsystem (ZPSDS)服务子系统.The zoning expander devices control whether a phy is permitted to participate in原创 2021-11-28 22:08:06 · 1126 阅读 · 0 评论 -
深入浅出文件系统(二)文件系统对象
文件系统对象Linux文件系统对象之间的关系可以概括为文件系统类型、超级块、inode、dentry和vfsmount之间的关系。文件系统类型规定了某种类型文件系统的行为,它存在的主要目的是为了构造这种类型文件系统的实例,或者被称为超级块实例。超级块反映了文件系统整体的控制信息,超级块以多种方式存在。对于基于磁盘的文件系统,它以特定格式存在于磁盘的固定区域(取决于文件系统类型),为磁盘上的超级块。在文件系统被装载时,其内容被读入内存,构建内存中的超级块。其中某些信息为各种类型的文件系统所共有..原创 2021-11-27 11:53:57 · 1158 阅读 · 0 评论 -
深入浅出文件系统(一)概述
看到的磁盘设备,都有以下性质:• 是一组线性排列的磁盘块;• 可以访问其中的任意磁盘块;• 可以独立地读/写磁盘块;文件系统(File System)是存储和组织文件(即一系列相关的数据),以便可以方便地进行查找和访问一种机制。不同的文件系统有不同的文件存储和组织方式。(fat32 ext4等)以基于磁盘的文件系统为例,文件是以磁盘块为单位存储的,文件系统设计的一个重要问题是记录各个文件分别用到哪些磁盘块。//test.c文件占用439字节,用了8个磁盘块存储,一般是8个磁原创 2021-11-27 11:26:44 · 483 阅读 · 0 评论 -
pm8001驱动内核代码分析(三)pm8001_init和pm8001_exit函数
基础阅读:主机适配器怎么加入系统的文章《深入浅出SCSI子系统(四)添加适配器到系统》pm8001_init主要做工作队列申请,Sas layer 回调函数注册,pci驱动注册到设备模型中。drivers/scsi/pm8001/pm8001_init.c接口代码赏析:/** .原创 2021-11-21 22:25:34 · 508 阅读 · 0 评论 -
pm8001驱动内核代码分析(一)概述,该驱动的位置
该驱动属于scsi子系统中的低层驱动,sata/sas控制器芯片8001,处于x86 cpu 和 sas expander 8054中间,桥梁的位置。1.8001发送smp命令与连接在上面的8054进行同通信。2.如果8054上面接入的是sata硬盘,8001发送stp命令进行通信。使用ATA指令。3.如果8054上面接入的是sas硬盘,8001发送ssp命令进行通信。使用SCSI指令。...原创 2021-11-21 22:02:55 · 611 阅读 · 0 评论 -
pm8001驱动内核代码分析(二)学习驱动第一步先看对象成员
1.pm8001驱动相关对象(1)相关头文件,所涉及的对象和枚举/drivers/scsi/pm8001/pm8001_hwi.h@||- struct@||| mpi_msg_hdr@||| phy_start_req@||| phy_stop_req@||| set_dev_bits_fis@||| pio_setup_fis@||| sata_completion_resp@||| hw_event_resp...原创 2021-11-14 22:37:25 · 639 阅读 · 0 评论 -
sas协议内核代码分析
1.sas相关对象(1)struct sas_internalstruct sas_internal { struct scsi_transport_template t; struct sas_function_template *f; struct sas_domain_function_template *dft; struct device_attribute private_host_attrs[SAS_HOST_ATTRS]; struc原创 2021-11-14 21:25:22 · 1499 阅读 · 0 评论 -
sas协议分析
------------------------------------重要说明------------------------------------以下部分内容来网络,部分自华为存储官方教材具体教材内容请移步华为存储官网进行教材下载网络引用内容无法找到原创,如有侵权请通知------------------------------------重要说明------------------------------------1.存储中的SASSAS采用点对点的设计使得通信的.原创 2021-10-24 16:12:40 · 10763 阅读 · 2 评论 -
深入浅出块I/O子系统(二)块I/O子系统对象
目录块I/O子系统对象1 gendisk:通用磁盘2 hd_struct:分区3 block_device:块设备4 request_queue:请求队列5 request:块设备驱动层请求6 bio:通用块层请求块I/O子系统对象1 gendisk:通用磁盘2 hd_struct:分区3 block_device:块设备4 request_queue:请求队列5 request:块设备驱动层请求原创 2021-10-10 09:11:44 · 271 阅读 · 0 评论 -
深入浅出SCSI子系统(九)SCSI低层驱动编程模式
目录SCSI低层驱动编程模式1 定义主机适配器模板2 完善探测回调处理逻辑3 实现queuecommand回调函数1.设备DMA处理2.驱动与固件交互4 实现中断处理函数5 实现其他回调函数6 模块加载和卸载SCSI低层驱动编程模式1 定义主机适配器模板2 完善探测回调处理逻辑3 实现queuecommand回调函数1.设备DMA处理2.驱动与固件交互4 实现中断处理函数原创 2021-10-08 17:18:06 · 507 阅读 · 0 评论 -
深入浅出SCSI子系统(八)SCSI错误恢复
SCSI错误恢复1 命令进入错误恢复故障SCSI命令通过scsi_eh_scmd_add函数进入错误恢复(EH),执行下面的工作。函数scsi_eh_scmd_add()代码(摘自文件drivers/scsi/scsi_error.c)2 错误恢复线程执行SCSI错误恢复是由专门的内核线程来处理的。每个SCSI主机适配器有一个这样的内核线程,其名字为scsi_eh_#,其中#为主机适配器在系统范围内的唯一编号,在调用scsi_host_alloc函数分配SCSI主机适配器描述..原创 2021-10-08 17:04:53 · 3350 阅读 · 0 评论 -
深入浅出SCSI子系统(七)SCSI命令执行
目录SCSI命令执行scsi_execute_reqSCSI命令执行scsi_execute_req上面看到,在探测过程中发送的SCSI命令,如INQUIRY和SPINUP,它们的执行都调用了scsi_execute_req函数。从请求的角度,它们是发源于SCSI层的,但更常见的是来自上层的请求,如读/写文件等。这里将跟踪scsi_execute_req函数的执行,至于来自上层的I/O请求执行过程,在防止后面的块I/O子系统中讨论。函数scsi_execute_req()代码(摘原创 2021-10-05 10:20:48 · 2564 阅读 · 0 评论 -
深入浅出SCSI子系统(五)SCSI设备探测
SCSI设备探测在计算机系统启动过程中,操作系统会扫描默认的PCI根总线,从而触发了PCI设备扫描的过程,开始构建PCI设备树。SCSI主机适配器作为PCI设备会被PCI总线驱动层扫描到(PCI设备的扫描采用配置空间访问的方式),扫描到SCSI主机适配器之后,操作系统开始加载SCSI主机适配器驱动,SCSI主机适配器驱动就是上面所说的低层驱动。SCSI主机适配器驱动根据SCSI主机适配器模板分配SCSI主机适配器描述符,并添加到系统。在此之后或与此同时,还需要启动通过SCSI主机适配器扩展出...原创 2021-10-04 08:08:25 · 2761 阅读 · 0 评论 -
深入浅出SCSI子系统(四)添加适配器到系统
目录添加适配器到系统scsi_host_alloc()scsi_add_host()添加适配器到系统SCSI低层驱动是面向主机适配器的,低层驱动被加载时,首先要添加主机适配器。主机适配器可以在PCI子系统完成ID匹配时添加,或者通过手工方式添加。所有基于硬件PCI接口的主机适配器都采用前一种方式,而UNH iSCSI启动器采用的是后一种方式。添加主机适配器包括两部分的内容,为主机适配器分配数据结构,将主机适配器添加到系统。SCSI中间层为此提供了两个公共函数:scsi_host_原创 2021-10-02 16:01:16 · 1304 阅读 · 0 评论 -
深入浅出SCSI子系统(三)SCSI子系统初始化
SCSI子系统总是被编译到Linux内核的,其初始化入口函数为init_scsi,在文件drivers/scsi/scsi.c中。它使用宏subsys_initcall定义,依次调用:• scsi_init_queue——初始化聚散列表等所需要的存储池;• scsi_init_procfs——初始化proc文件系统中与SCSI有关的目录项;• scsi_init_devinfo——设置SCSI动态设备信息列表;• scsi_init_hosts——注册shost_class类,这将在sys/原创 2021-10-02 14:41:28 · 906 阅读 · 0 评论 -
深入浅出SCSI子系统(二)SCSI子系统对象
目录SCSI子系统对象1 scsi_host_template:SCSI主机适配器模板2 Scsi_Host:SCSI主机适配器3 scsi_target:SCSI目标节点4 scsi_device:SCSI逻辑设备5 scsi_cmnd:SCSI命令SCSI子系统对象下图SCSI子系统对象之间的关系。Scsi_Host、scsi_target和scsi_device分别描述的是Linux SCSI模型中的主机适配器、目标节点和逻辑单元,而scsi_host_templa原创 2021-09-29 07:36:26 · 3053 阅读 · 1 评论 -
深入浅出SCSI子系统(六)SCSI 磁盘驱动
Linux SCSI子系统实现了各种类型的高层驱动,如SCSI磁盘驱动、SCSI磁带驱动和SCSI CDROM驱动等。SCSI总线类型scsi_bus_type SCSI设备和SCSI驱动原创 2021-09-24 06:57:55 · 6441 阅读 · 0 评论 -
深入浅出块I/O子系统(一)概述
深入浅出块I/O子系统原创 2021-09-17 21:47:43 · 637 阅读 · 0 评论 -
深入浅出Multi-Disk(MD)模块(一)
深入浅出Multi-Disk(MD)模块原创 2021-09-17 21:46:25 · 285 阅读 · 0 评论 -
深入浅出SCSI子系统(一)Linux 内核中的 SCSI 架构
scsi系统原创 2021-09-17 21:43:06 · 4602 阅读 · 0 评论