scsi子系统报告()

scsi子系统报告()

ID:13158462

大小:728.00 KB

页数:32页

时间:2018-07-21

scsi子系统报告()_第1页
scsi子系统报告()_第2页
scsi子系统报告()_第3页
scsi子系统报告()_第4页
scsi子系统报告()_第5页
资源描述:

《scsi子系统报告()》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DFTSCSI子系统报告设备驱动分析彭成章路新疆武文斌2010-7-7本次报告基于对SCSI子系统源代码(内核版本为2.6.24),SCSI体系结构模型【1】,命令模型【2】及其他相关文档的理解。目录第1章前言31.1实验环境31.2阅读和理解代码的方法31.3阅读过的文档31.4将讨论哪些内容和不讨论哪些内容3第2章SCSI子系统概述32.1整体概述32.2上层42.3中层52.4下层52.5SCSI-3架构52.5.1SCSI-3客户-服务器模型62.5.2SCSI端口82.5.3SCSI设备82.5.4SCSI通信模型9第3章LinuxSCSI

2、子系统关键数据结构93.1SCSIHOST93.1.1scsihost的抽象123.2SCSIDEVICE133.2.1scsidevice的抽象133.3SCSITARGET153.3.1scsitarget的抽象153.4requestqueue163.5request183.6others203.6.1Scsihostdriver203.6.2Linux中磁盘扫描流程描述213.6.3low-level接口方法——scsi_host_template233.6.4scsi_scan_host函数253.6.5scsi_request_fn函数2

3、53.6.6scsi_dispatch_cmd函数263.6.7scsi设备扫描过程描述263.6.8ScsiDisk驱动IO回调路径分析28第4章SCSI子系统处理流程分析304.1SCSI启动过程分析304.2SCSI命令处理分析304.2.1简单命令304.2.2scsi设备读写过程304.2.3读命令314.2.4写命令31SCSI子系统报告提纲第1章前言1.1实验环境1.2阅读和理解代码的方法1.3阅读过的文档1.4将讨论哪些内容和不讨论哪些内容第2章SCSI子系统概述图2显示了SCSI子系统在Linux内核中的位置。内核的顶部是系统调用接

4、口,处理用户空间调用到内核中合适的目的地的路由(例如open、read或write)。而虚拟文件系统(VFS)是内核中支持的大多数文件系统的抽象层。它负责将请求路由到合适的文件系统。大多数文件系统都通过缓冲区缓存来相互通信,这种缓存通过缓存最近使用的数据来优化对物理设备的访问。接下来是块设备驱动器层,它包括针对底层设备的各种块驱动器。SCSI子系统是这种块设备驱动器之一。图2SCSI子系统在Linux内核中的位置2.1整体概述SCSI子系统与Linux内核中的其他主流子系统不同,SCSI子系统是一种分层的架构,共分为三层。顶部的那层叫做较高层,代表的

5、是内核针对SCSI和主要设备类型的驱动器的最高接口。接下来的是中间层,也称为公共层或统一层。在这一层包含SCSI堆栈的较高层和较低层的一些公共服务。最后是较低层,代表的是适用于SCSI的物理接口的实际驱动器。(如图2)  图2.1LinuxSCSI子系统的分层架构2.2上层SCSI子系统的较高层代表的是内核(设备级)最高级别的接口。它由一组驱动器组成,比如块设备(SCSI磁盘和SCSICD-ROM)和字符设备(SCSI磁带和SCSIgeneric)。较高层接受来自上层(比如VFS)的请求并将其转换成SCSI请求。较高层负责完成SCSI命令并将状态信息

6、通知上层。  SCSI磁盘驱动器在./linux/drivers/scsi/sd.c内实现。SCSI磁盘驱动器通过调用register_blkdev(作为块驱动器)进行自初始化并通过scsi_register_driver提供一组函数以表示所有SCSI设备。其中sd_probe和sd_init_command这两个函数很重要。只要有新的SCSI设备附加到系统,SCSI中间层就会调用sd_probe函数。sd_probe函数可决定此设备是否由SCSI磁盘驱动器管理,如果是,就创建新的scsi_disk结构来表示它。sd_init_command函数将来

7、自文件系统层的请求转变成SCSI读或写命令(为完成这个I/O请求,sd_rw_intr会被调用)。  SCSI磁带驱动器在./linux/drivers/scsi/st.c内实现。磁带驱动器是顺序存取设备,会通过register_chrdev_region将自身注册为字符设备。SCSI磁带驱动器还提供了一个probe函数,称为st_probe。该函数会创建一种新磁带设备并将其添加到称为scsi_tapes的向量。SCSI磁带驱动器的独特之处在于,如果可能,它可以直接从用户空间执行I/O传输。否则,数据会通过驱动器缓冲被分段。  SCSICD-ROM驱

8、动器在./linux/drivers/scsi/sr.c内实现。CD-ROM驱动器是另一种块设备并为SCSI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。