scsi子系统报告().doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
scsi子系统报告()

dft SCSI子系统报告 设备驱动分析 彭成章 路新疆 武文斌 2010-7-7 本次SCSI子系2.6.24),SCSI体系1】,命令模型【2】及其他相第1章 前言 3 1.1 实验环境 3 1.2 阅读和理解代码的方法 3 1.3 阅读过的文档 3 1.4 将讨论哪些内容和不讨论哪些内容 3 第2章 SCSI子系统概述 3 2.1 整体概述 3 2.2 上层 4 2.3 中层 5 2.4 下层 5 2.5 SCSI-3架构 5 2.5.1 SCSI-3客户-服务器模型 6 2.5.2 SCSI端口 8 2.5.3 SCSI设备 8 2.5.4 SCSI通信模型 9 第3章 Linux SCSI 子系统关键数据结构 9 3.1 SCSI HOST 9 3.1.1 scsi host的抽象 12 3.2 SCSI DEVICE 13 3.2.1 scsi device的抽象 13 3.3 SCSI TARGET 15 3.3.1 scsi target的抽象 15 3.4 request queue 16 3.5 request 18 3.6 others 20 3.6.1 Scsi host driver 20 3.6.2 Linux中磁盘扫描流程描述 21 3.6.3 low-level接口方法——scsi_host_template 23 3.6.4 scsi_scan_host函数 25 3.6.5 scsi_request_fn函数 25 3.6.6 scsi_dispatch_cmd函数 26 3.6.7 scsi设备扫描过程描述 26 3.6.8 Scsi Disk驱动IO回调路径分析 28 第4章 SCSI子系统处理流程分析 30 4.1 SCSI启动过程分析 30 4.2 SCSI 命令处理分析 30 4.2.1 简单命令 30 4.2.2 scsi设备读写过程 30 4.2.3 读命令 31 4.2.4 写命令 31 SCSI子系统报告提纲 前言 1.1 实验环境 1.2 阅读和理解代码的方法 1.3 阅读过的文档 1.4 将讨论哪些内容和不讨论哪些内容 第2章 SCSI子系统概述 图2显示了 SCSI 子系统在 Linux 内核中的位置。内核的顶部是系统调用接口,处理用户空间调用到内核中合适的目的地的路由(例如 open、read 或 write)。而虚拟文件系统(VFS) 是内核中支持的大多数文件系统的抽象层。它负责将请求路由到合适的文件系统。大多数文件系统都通过缓冲区缓存来相互通信,这种缓存通过缓存最近使用的数据来优化对物理设备的访问。接下来是块设备驱动器层,它包括针对底层设备的各种块驱动器。SCSI 子系统是这种块设备驱动器之一。 图2 SCSI 子系统在 Linux 内核中的位置 2.1 整体概述 SCSI 子系统与 Linux 内核中的其他主流子系统不同,SCSI 子系统是一种分层的架构,共分为三层。顶部的那层叫做较高层,代表的是内核针对 SCSI 和主要设备类型的驱动器的最高接口。接下来的是中间层,也称为公共层或统一层。在这一层包含 SCSI 堆栈的较高层和较低层的一些公共服务。最后是较低层,代表的是适用于 SCSI 的物理接口的实际驱动器。(如图2) ?? 图 2.1 Linux SCSI 子系统的分层架构 2.2 上层 SCSI 子系统的较高层代表的是内核(设备级)最高级别的接口。它由一组驱动器组成,比如块设备(SCSI 磁盘和 SCSI CD-ROM)和字符设备(SCSI 磁带和 SCSI generic)。较高层接受来自上层(比如 VFS)的请求并将其转换成SCSI 请求。较高层负责完成 SCSI命令并将状态信息通知上层。   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 函数将来自文件系统层的请求转变成 SCSI 读或写命令(为完成这个 I/O 请求,sd_rw_intr 会被调用)。   SCSI 磁带驱动器在 ./linux/drivers/scsi/st.c 内实现。磁带驱动

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档