ISCSI主机总线适配器的休眠唤醒方法和装置.pdf

上传人:00062****4422 文档编号:971713 上传时间:2018-03-22 格式:PDF 页数:11 大小:455.46KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910253335.3

申请日:

2009.11.30

公开号:

CN102081531A

公开日:

2011.06.01

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 9/445申请公布日:20110601|||公开

IPC分类号:

G06F9/445; G06F1/32

主分类号:

G06F9/445

申请人:

英业达股份有限公司

发明人:

王辉; 王云松; 陈玄同

地址:

中国台湾台北市

优先权:

专利代理机构:

北京律诚同业知识产权代理有限公司 11006

代理人:

梁挥;张燕华

PDF下载: PDF下载
内容摘要

本发明公开了一种iSCSI主机总线适配器的休眠唤醒方法和装置,该装置包括:SCSI层驱动器模块,用于发送电源唤醒请求和适配器重启请求;以及在iSCSI主机总线适配器初始化完成之后发送启动设备层的SCSI命令;iSCSI主机总线适配器的驱动器模块,根据请求执行iSCSI主机总线适配器对应的初始化;以及在SCSI命令的执行时限内登录目标以挂载虚盘并发送SCSI命令。本发明能够在成功唤醒iSCSI主机总线适配器的同时减少对系统整体恢复的影响。

权利要求书

1: 一种 iSCSI 主机总线适配器的休眠唤醒方法, 其特征在于, 所述方法包括以下步骤 : 由 SCSI 层驱动器向 iSCSI 主机总线适配器的驱动器发送电源唤醒请求和适配器重启 请求, 以执行 iSCSI 主机总线适配器对应的初始化 ; 由 SCSI 层驱动器向 iSCSI 主机总线适配器的驱动器发送启动设备层的 SCSI 命令 ; 以 及 在所述 SCSI 命令的执行时限内, iSCSI 主机总线适配器的驱动器登录目标以挂载虚盘 并执行所述 SCSI 命令。
2: 如权利要求 1 所述的休眠唤醒方法, 其特征在于, iSCSI 主机总线适配器的驱动器根 据所述电源唤醒请求提供的供电状态来确定是否进行 iSCSI 主机总线适配器的部分硬件 初始化。
3: 如权利要求 1 所述的休眠唤醒方法, 其特征在于, iSCSI 主机总线适配器的驱动器根 据所述适配器重启请求执行尽量少的 iSCSI 主机总线适配器的初始化。
4: 如权利要求 1 所述的休眠唤醒方法, 其特征在于, iSCSI 主机总线适配器的驱动器在 登录成功后发送所述 SCSI 命令到所述目标。
5: 如权利要求 4 所述的休眠唤醒方法, 其特征在于, iSCSI 主机总线适配器的驱动器以 硬件中断的方式收到所述目标的反馈。
6: 一种 iSCSI 主机总线适配器的休眠唤醒装置, 其特征在于, 所述装置包括 : SCSI 层驱动器模块, 所述 SCSI 层驱动器模块用于发送电源唤醒请求和适配器重启请 求; 以及在 iSCSI 主机总线适配器初始化完成之后发送启动设备层的 SCSI 命令 ; iSCSI 主机总线适配器的驱动器模块, 所述 iSCSI 主机总线适配器的驱动器模块根据 所述请求执行 iSCSI 主机总线适配器对应的初始化 ; 以及在所述 SCSI 命令的执行时限内登 录目标以挂载虚盘并发送所述 SCSI 命令。
7: 如权利要求 6 所述的休眠唤醒装置, 其特征在于, 所述 iSCSI 主机总线适配器的驱动 器模块根据所述电源唤醒请求提供的供电状态来确定是否进行 iSCSI 主机总线适配器的 部分硬件初始化。
8: 如权利要求 6 所述的休眠唤醒装置, 其特征在于, 所述 iSCSI 主机总线适配器的驱动 器模块根据所述适配器重启请求执行尽量少的 iSCSI 主机总线适配器的初始化。
9: 如权利要求 6 所述的休眠唤醒装置, 其特征在于, 所述 iSCSI 主机总线适配器的驱动 器模块在登录成功后发送所述 SCSI 命令到所述目标。
10: 如权利要求 9 所述的休眠唤醒装置, 其特征在于, 所述 iSCSI 主机总线适配器的驱 动器模块以硬件中断的方式收到所述目标的反馈。

说明书


iSCSI 主机总线适配器的休眠唤醒方法和装置

    技术领域 本发明涉及一种操作系统的休眠唤醒方法, 尤其涉及 iSCSI 主机总线适配器的休 眠唤醒方法和装置。
     背景技术 Windows 操 作 系 统 的 电 源 管 理 为 了 节 省 电 能, 降 低 计 算 机 损 耗, 因此包括有 “Hibernate( 休眠 )” 或 “sleep( 休眠 )” 的功能。 但是在这种情况下需要切断外围设备、 显示 器甚至硬盘驱动器的电源, 当然也包括正在工作的 iSCSIHBA( 互联网小型计算机系统接口 主机总线适配器, Small Computer SystemInterface over Internet, Host Bus Adapter)。
     操作系统休眠阶段关于 iSCSI HBA 的操作时序图如图 1 的步骤所示, 首先由 SCSI 层驱动器发送用于停止设备层的 SCSI 命令到 iSCSI HBA 驱动器, 例如 Windows 操作系统中 的 storprotMiniport(Storport 微端口 ) 驱动器 ( 步骤 102) ; 然后, 由 iSCSI HBA 驱动器向 iSCSI 引擎发送退出目标并断开虚盘的命令 ( 步骤 104) ; 接着由网络适配器 (NIC, Network Interface Card) 模块中的 iSCSI 引擎断开远端挂载虚盘的 TCP/IP 连接 ( 步骤 106), 并返 回退出成功的消息 ( 步骤 108)。这时, SCSI 层驱动器通过发送休眠电源请求 ( 步骤 110) 以及 SCSI 适配器停止请求 ( 步骤 116), 以及相应的响应步骤 112、 114 和 118, 从而完成系 统的休眠。这时 iSCSI HBA 处于不供电状态, 即 D3 状态。
     当用户唤醒计算机时, 所有的设备则会恢复到全供电状态, 这时 iSCSIHBA 除了会 进行自身硬件的重新初始化, 而且还要重新登录 iSCSI 目标, 挂载虚盘等其它的工作。但是 在唤醒的多个环节, 不允许系统驱动器和 iSCSIHBA 硬件的中断包交互过程, 因此驱动器无 法及时接到 iSCSI HBA 产生的中断, 所以 iSCSI HBA 在登录 iSCSI 目标虚盘时会需要耗费 较多的时间。这样会影响系统的整体的恢复时间, 甚至系统会认为该设备长时间未唤醒成 功而导致崩溃。
     发明内容
     本发明的目的旨在至少解决现有技术中的上述问题之一。
     为此, 本发明的实施例提出一种 iSCSI 主机总线适配器的休眠唤醒方法和装置, 实现在顺利休眠唤醒的同时减少对系统整体唤醒恢复时间的影响
     根据本发明的一个方面, 本发明实施例提出了一种 iSCSI 主机总线适配器的休眠 唤醒方法, 所述方法包括以下步骤 : 由 SCSI 层驱动器向 iSCSI 主机总线适配器的驱动器发 送电源唤醒请求和适配器重启请求, 以执行 iSCSI 主机总线适配器对应的初始化 ; 由 SCSI 层驱动器向 iSCSI 主机总线适配器的驱动器发送启动设备层的 SCSI 命令 ; 以及在所述 iSCSI 主机总线适配器的驱动器登录目标以挂载虚盘并执行所述 SCSI 命令的执行时限内, SCSI 命令。
     根据本发明进一步的实施例, iSCSI 主机总线适配器的驱动器根据所述电源唤醒 请求提供的供电状态来确定是否进行 iSCSI 主机总线适配器的部分硬件初始化。根据本发明进一步的实施例, iSCSI 主机总线适配器的驱动器在登录成功后发送 所述 SCSI 命令到所述目标。
     根据本发明的另一方面, 本发明的实施例提出一种 iSCSI 主机总线适配器的休眠 唤醒装置, 所述装置包括 : SCSI 层驱动器模块, 所述 SCSI 层驱动器模块用于发送电源唤醒 请求和适配器重启请求 ; 以及在 iSCSI 主机总线适配器初始化完成之后发送启动设备层的 SCSI 命令 ; iSCSI 主机总线适配器的驱动器模块, 所述 iSCSI 主机总线适配器的驱动器模块 根据所述请求执行 iSCSI 主机总线适配器对应的初始化 ; 以及在所述 SCSI 命令的执行时限 内登录目标以挂载虚盘并发送所述 SCSI 命令。
     根据本发明进一步的实施例, 所述 iSCSI 主机总线适配器的驱动器模块根据所述 电源唤醒请求提供的供电状态来确定是否进行 iSCSI 主机总线适配器的部分硬件初始化。
     根据本发明进一步的实施例, 所述 iSCSI 主机总线适配器的驱动器模块根据所述 适配器重启请求执行尽量少的 iSCSI 主机总线适配器的初始化。
     根据本发明进一步的实施例, 所述 iSCSI 主机总线适配器的驱动器模块在登录成 功后发送所述 SCSI 命令到所述目标。
     本发明在启动设备层的 SCSI 命令的较长执行时间里, 进行固件的加载以及目标 登录以挂载虚盘等大量的工作, 减少了 iSCSI 主机总线适配器休眠唤醒的时间。从而保证 了 iSCSI HBA 的顺利完整的初始化和休眠唤醒过程, 又减少了 iSCSI HBA 对系统唤醒恢复 的影响。 本发明附加的方面和优点将在下面的描述中部分给出, 部分将从下面的描述中变 得明显, 或通过本发明的实践了解到。
     以下结合附图和具体实施例对本发明进行详细描述, 但不作为对本发明的限定。
     附图说明
     图 1 为现有 iSCSI 主机总线适配器休眠时序示意图 ; 图 2 为本发明实施例的 iSCSI 主机总线适配器休眠唤醒方法时序图 ; 图 3 为 iSCSI 主机总线适配器硬件结构示意图 ; 图 4 为本发明实施例的 iSCSI 主机总线适配器休眠唤醒装置结构图。具体实施方式
     下面结合附图对本发明的结构原理和工作原理作具体的描述 :
     下面详细描述本发明的实施例, 所述实施例的示例在附图中示出, 其中自始至终 相同或类似的标号表示相同或类似的组件或具有相同或类似功能的组件。 下面通过参考附 图描述的实施例是示例性的, 仅用于解释本发明, 而不能解释为对本发明的限制。
     现在参考图 2, 该图显示了本发明实施例的 iSCSI 主机总线适配器休眠唤醒方法 时序。
     如图 2 所示, 系统为了唤醒 iSCSI 主机总线适配器设备, 首先会由 SCSI 层驱动器 对主机总线适配器驱动器 (HBA driver) 发送唤醒的电源请求, 或者还包括即插即用 (PNP, Plug and Play) 请求 ( 步骤 202)。
     在 休 眠 唤 醒 时, 例 如 SCSI 层 驱 动 器 首 先 利 用 类 型 为 SRB_FUNCTION_POWER 的SRB(SCSI 请求块, SCSI Request Block) 通知 iSCSI 主机总线适配器驱动器现在的供电状 态是什么, 判断 SRB 中 PowerAction 标识的值, 该标识表示系统通知 iSCSI 主机总线适配器 驱动器现在设备的供电状态。通过判断 PowerAction 的值是否为 StorPowerDeviceD0 来决 定是否进行一部分初始化工作。 对于值为 D0 的, 则是需要恢复到 D0 状态 ( 全供电状态 ), 则 可以判断为是处于休眠唤醒阶段, 这时 iSCSI 主机总线适配器需要做必要的初始化操作, 从而完成部分硬件的初始化 ( 步骤 204)。
     iSCSI HBA 的组成部分如图 3 所示, 包括有网络接口单元 (NIU, NetworkInterface Unit)2、 传输数据包发生器 (EPG, Egress Packet Generator)4、 段重组引擎 (SRE, Segment Reassembly Engine)6 以及协议处理引擎 (ProtocolProcessing Engine)8 等等。NIU 4 是 物理层 (PHY) 接口, 主要处理网络包的发送和接收 ; EPG 4 用于接收从主机 (Host) 传下来 的数据包 ; SRE 6 用于把从 NIU 接收到的网络包进行分类和处理 ; 协议处理引擎 8 为灵活的 可编程的内核, 可进行复杂的处理, iSCSI 协议在此内核实现。
     iSCSI HBA 设备的硬件初始化包括上述主要部件的初始化。
     接 着, 系 统 会 通 过 SCSI 层 驱 动 器 向 iSCSI 主 机 总 线 适 配 器 的 驱 动 器 发 送 SCSI 适配器重启请求 ( 步骤 206)。具体地, 通过调用 iSCSI 主机总线适配器驱动器的 HwAdapterControl 接口, 下达 SCSI 重启适配器类型的请求。然后做尽量少的初始化工作, 并立刻返回, 完成 iSCSI 主机总线适配器的初始化 ( 步骤 208)。
     这里, 初始化工作包括基础的必要的硬件初始化, 执行时间会很短。 因为系统是顺 序初始化各设备, 若某个设备初始化未返回, 系统会继续等待其完成而不进行其它设备的 唤醒。通过步骤 208, 系统则可以很快地继续进行其它设备的唤醒恢复。
     由于 iSCSI HBA 属于存储设备, 若在休眠前有挂载虚盘, 则在系统唤醒后, 会对休 眠前挂载的每个逻辑单元号 (lun) 发送 SCSI 协议中要求设备层启动的 SCSI 命令。即, 由 SCSI 层驱动器向 iSCSI 主机总线适配器的驱动器发送启动设备层的 SCSI 命令 ( 步骤 210), 从而通过 iSCSI 主机总线适配器的驱动器向休眠前挂载的每个 lun 发送。
     具体地, SCSI 层驱动器调用 iSCSI 主机总线适配器驱动器的 HwBuildIO 接口, 下 达类型为 SCSIOP_START_STOP_UNIT 的 SCSI 命令。iSCSI 主机总线适配器的驱动器通过判 断命令描述块 (CDB, Command Descriptor Block) 中 START_STOP.Start 值是否为 1, 来确 定是否需要启动该 lun。
     若判断不需要启动, 则填写错误日志 ; 若需要启动 lun, 则在该命令的执行时限 内, 首先保存该 SCSI 命令, 暂时不执行该命令。 而是接着通过网络适配器 (NIC) 中的 iSCSI 引擎登录目标 ( 例如远程目标 )( 步骤 212), 向远程目标发送登录协议数据单元 (PDU)。若 登录成功则继续执行挂载虚盘的动作。并向 iSCSI 主机总线适配器的驱动器返回登录成功 的信息 ( 步骤 214)。这里, iSCSI 引擎会把目标的反馈以硬件中断的方式告知 iSCSI 主机 总线适配器的驱动器进行处理。
     在登录成功后, iSCSI 主机总线适配器的驱动器接着会把 SCSIOP_START_STOP_ UNIT 的命令发送给目标端进行处理 ( 步骤 216), 以启动相应设备层。
     由于系统对上述启动设备层的 SCSI 命令的限定的执行时间较长, 因此本发明在 这个相对较长的时间里进行固件的加载以及目标登录以挂载虚盘等大量的工作, 从而保证 了 iSCSI HBA 的顺利完整的初始化和休眠唤醒过程。参考图 4, 图 4 为本发明实施例的 iSCSI 主机总线适配器休眠唤醒装置结构图。
     如图所示, 该休眠唤醒装置包括 SCSI 层驱动器模块 20 和 iSCSI 主机总线适配器 的驱动器模块 22。SCSI 层驱动器模块 20 用于发送电源唤醒请求和适配器重启请求 ; 以及 在 iSCSI 主机总线适配器初始化完成之后发送启动设备层的 SCSI 命令。iSCSI 主机总线 适配器的驱动器模块 22 根据上述请求执行 iSCSI 主机总线适配器对应的初始化 ; 以及在 SCSI 命令的执行时限内登录远程目标以挂载虚盘并发送所述 SCSI 命令。
     下面结合图 4 的实施例对本发明的 iSCSI 主机总线适配器休眠唤醒装置给出详细 说明。
     如图所示, SCSI 层驱动器模块 20 和 iSCSI 主机总线适配器的驱动器模块 22 位于 系统内核 (kernel) 中, 其中 SCSI 层驱动器模块 20 与用户层 (user) 的用户接口 10 连接, iSCSI 主机总线适配器的驱动器模块 22 通过 iSCSI 层管理接口 24 与网络设备层 (NIC) 的 iSCSI 引擎 30 连接。
     系统为了唤醒 iSCSI 主机总线适配器设备, 首先由 SCSI 层驱动器模块 20 对主机 总线适配器驱动器模块 22 发送唤醒的电源请求或者还包括 PNP 请求。
     SCSI 层驱动器模块 20 首先利用类型为 SRB_FUNCTION_POWER 的 SRB 通知 iSCSI 主机总线适配器驱动器模块 22 当前的供电状态, 从而决定是否进行一部分初始化工作。例 如通过判断 SRB 中 PowerAction 的值是否为 StorPowerDeviceD0 来确定。对于值为 D0 的, 这时 iSCSI 主机总线适配器需要做必要的初始化操作, 从而完成部分硬件的初始化。这些 硬件例如包括网络接口单元 (NIU, Network Interface Unit)、 传输数据包发生器 (EPG, EgressPacket Generator)、 段重组引擎 (SRE, Segment Reassembly Engine) 以及协议处理 引擎 (Protocol Processing Engine) 等等。
     接着, SCSI 层驱动器模块 20 向 iSCSI 主机总线适配器的驱动器模块 22 发送 SCSI 适配器重启请求。 例如, 通过调用 iSCSI 主机总线适配器驱动器的 HwAdapterControl 接口, 下达 SCSI 重启适配器类型的请求。然后做尽量少的初始化工作, 立刻返回, 完成 iSCSI 主 机总线适配器的初始化。
     若 iSCSI HBA 设备在休眠前有挂载虚盘, 则在系统唤醒后, 会对休眠前挂载的每个 逻辑单元号 (lun) 发送 SCSI 协议中要求设备层启动的 SCSI 命令。即, 由 SCSI 层驱动器模 块 20 向 iSCSI 主机总线适配器的驱动器模块 22 发送启动设备层的 SCSI 命令, 以发送到休 眠前挂载的每个 lun。
     具体地, SCSI 层驱动器模块 20 调用 iSCSI 主机总线适配器驱动器的 HwBuildIO 接 口, 下达类型为 SCSIOP_START_STOP_UNIT 的 SCSI 命令。 iSCSI 主机总线适配器驱动器模块 22 通过判断 START_STOP.Start 值来确定是否需要启动该 lun。
     若需要启动 lun, 则在该命令的执行时限内, iSCSI 主机总线适配器驱动器模块 22 首先保存该 SCSI 命令, 暂时不执行该命令。接着通过与 iSCSI 层管理接口 24 连接的 NIC 中的 iSCSI 引擎 30, 发起登录目标端的动作, 向例如远程目标发送登录 PDU。
     iSCSI 主机总线适配器驱动器模块 22 作为 iSCSI 的管理层, 可以通过 iSCSI 层管 理接口 24 向 NIC 的 iSCSI 引擎 30 发送 “发起会话” 、 “结束会话” 、 “登录连接” 、 “退出连接” 等命令。
     若登录成功则继续执行挂载虚盘的动作, 并且 iSCSI 引擎 30 向 iSCSI 主机总线适配器驱动器模块 22 返回登录成功的信息。iSCSI 引擎 30 会把远程目标返回的响应以硬件 中断的方式告知 iSCSI 主机总线适配器驱动器模块 22 进行处理。
     在收到远端目标登录成功的反馈信息后, iSCSI 主机总线适配器驱动器模块 22 接 着会把发送启动设备层的 SCSI 命令发送给远程目标端进行处理, 以启动相应设备层。
     由于系统对上述启动设备层的 SCSI 命令的限定的执行时间较长, 因此本发明在 这个相对较长的时间里进行固件的加载以及远程目标登录以挂载虚盘等大量的工作, 从而 保证了 iSCSI HBA 的顺利完整的初始化和休眠唤醒过程。
     对于 iSCSI HBA 的休眠唤醒的实现及维护 iSCSI 协议, 是个庞大而复杂的过程。 本 发明的 iSCSI 主机总线适配器的休眠唤醒装置和方法利用 SCSI 命令的执行时间较长的特 点来做登录 iSCSI 目标等的耗时操作, 减少了 iSCSI 主机总线适配器休眠唤醒的时间。既 达到了顺利登录 iSCSI 目标并挂载虚盘, 又减少了 iSCSI HBA 对系统唤醒恢复的影响。
     当然, 本发明还可有其它多种实施例, 在不背离本发明精神及其实质的情况下, 熟 悉本领域的技术人员当可根据本发明作出各种相应的改变和变形, 但这些相应的改变和变 形都应属于本发明所附的权利要求的保护范围。

ISCSI主机总线适配器的休眠唤醒方法和装置.pdf_第1页
第1页 / 共11页
ISCSI主机总线适配器的休眠唤醒方法和装置.pdf_第2页
第2页 / 共11页
ISCSI主机总线适配器的休眠唤醒方法和装置.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《ISCSI主机总线适配器的休眠唤醒方法和装置.pdf》由会员分享,可在线阅读,更多相关《ISCSI主机总线适配器的休眠唤醒方法和装置.pdf(11页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102081531A43申请公布日20110601CN102081531ACN102081531A21申请号200910253335322申请日20091130G06F9/445200601G06F1/3220060171申请人英业达股份有限公司地址中国台湾台北市72发明人王辉王云松陈玄同74专利代理机构北京律诚同业知识产权代理有限公司11006代理人梁挥张燕华54发明名称ISCSI主机总线适配器的休眠唤醒方法和装置57摘要本发明公开了一种ISCSI主机总线适配器的休眠唤醒方法和装置,该装置包括SCSI层驱动器模块,用于发送电源唤醒请求和适配器重启请求;以及在ISCSI主机总。

2、线适配器初始化完成之后发送启动设备层的SCSI命令;ISCSI主机总线适配器的驱动器模块,根据请求执行ISCSI主机总线适配器对应的初始化;以及在SCSI命令的执行时限内登录目标以挂载虚盘并发送SCSI命令。本发明能够在成功唤醒ISCSI主机总线适配器的同时减少对系统整体恢复的影响。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书5页附图4页CN102081536A1/1页21一种ISCSI主机总线适配器的休眠唤醒方法,其特征在于,所述方法包括以下步骤由SCSI层驱动器向ISCSI主机总线适配器的驱动器发送电源唤醒请求和适配器重启请求,以执行ISCSI主机总线。

3、适配器对应的初始化;由SCSI层驱动器向ISCSI主机总线适配器的驱动器发送启动设备层的SCSI命令;以及在所述SCSI命令的执行时限内,ISCSI主机总线适配器的驱动器登录目标以挂载虚盘并执行所述SCSI命令。2如权利要求1所述的休眠唤醒方法,其特征在于,ISCSI主机总线适配器的驱动器根据所述电源唤醒请求提供的供电状态来确定是否进行ISCSI主机总线适配器的部分硬件初始化。3如权利要求1所述的休眠唤醒方法,其特征在于,ISCSI主机总线适配器的驱动器根据所述适配器重启请求执行尽量少的ISCSI主机总线适配器的初始化。4如权利要求1所述的休眠唤醒方法,其特征在于,ISCSI主机总线适配器的驱。

4、动器在登录成功后发送所述SCSI命令到所述目标。5如权利要求4所述的休眠唤醒方法,其特征在于,ISCSI主机总线适配器的驱动器以硬件中断的方式收到所述目标的反馈。6一种ISCSI主机总线适配器的休眠唤醒装置,其特征在于,所述装置包括SCSI层驱动器模块,所述SCSI层驱动器模块用于发送电源唤醒请求和适配器重启请求;以及在ISCSI主机总线适配器初始化完成之后发送启动设备层的SCSI命令;ISCSI主机总线适配器的驱动器模块,所述ISCSI主机总线适配器的驱动器模块根据所述请求执行ISCSI主机总线适配器对应的初始化;以及在所述SCSI命令的执行时限内登录目标以挂载虚盘并发送所述SCSI命令。7。

5、如权利要求6所述的休眠唤醒装置,其特征在于,所述ISCSI主机总线适配器的驱动器模块根据所述电源唤醒请求提供的供电状态来确定是否进行ISCSI主机总线适配器的部分硬件初始化。8如权利要求6所述的休眠唤醒装置,其特征在于,所述ISCSI主机总线适配器的驱动器模块根据所述适配器重启请求执行尽量少的ISCSI主机总线适配器的初始化。9如权利要求6所述的休眠唤醒装置,其特征在于,所述ISCSI主机总线适配器的驱动器模块在登录成功后发送所述SCSI命令到所述目标。10如权利要求9所述的休眠唤醒装置,其特征在于,所述ISCSI主机总线适配器的驱动器模块以硬件中断的方式收到所述目标的反馈。权利要求书CN10。

6、2081531ACN102081536A1/5页3ISCSI主机总线适配器的休眠唤醒方法和装置技术领域0001本发明涉及一种操作系统的休眠唤醒方法,尤其涉及ISCSI主机总线适配器的休眠唤醒方法和装置。背景技术0002WINDOWS操作系统的电源管理为了节省电能,降低计算机损耗,因此包括有“HIBERNATE休眠”或“SLEEP休眠”的功能。但是在这种情况下需要切断外围设备、显示器甚至硬盘驱动器的电源,当然也包括正在工作的ISCSIHBA互联网小型计算机系统接口主机总线适配器,SMALLCOMPUTERSYSTEMINTERFACEOVERINTERNET,HOSTBUSADAPTER。000。

7、3操作系统休眠阶段关于ISCSIHBA的操作时序图如图1的步骤所示,首先由SCSI层驱动器发送用于停止设备层的SCSI命令到ISCSIHBA驱动器,例如WINDOWS操作系统中的STORPROTMINIPORTSTORPORT微端口驱动器步骤102;然后,由ISCSIHBA驱动器向ISCSI引擎发送退出目标并断开虚盘的命令步骤104;接着由网络适配器NIC,NETWORKINTERFACECARD模块中的ISCSI引擎断开远端挂载虚盘的TCP/IP连接步骤106,并返回退出成功的消息步骤108。这时,SCSI层驱动器通过发送休眠电源请求步骤110以及SCSI适配器停止请求步骤116,以及相应的。

8、响应步骤112、114和118,从而完成系统的休眠。这时ISCSIHBA处于不供电状态,即D3状态。0004当用户唤醒计算机时,所有的设备则会恢复到全供电状态,这时ISCSIHBA除了会进行自身硬件的重新初始化,而且还要重新登录ISCSI目标,挂载虚盘等其它的工作。但是在唤醒的多个环节,不允许系统驱动器和ISCSIHBA硬件的中断包交互过程,因此驱动器无法及时接到ISCSIHBA产生的中断,所以ISCSIHBA在登录ISCSI目标虚盘时会需要耗费较多的时间。这样会影响系统的整体的恢复时间,甚至系统会认为该设备长时间未唤醒成功而导致崩溃。发明内容0005本发明的目的旨在至少解决现有技术中的上述问。

9、题之一。0006为此,本发明的实施例提出一种ISCSI主机总线适配器的休眠唤醒方法和装置,实现在顺利休眠唤醒的同时减少对系统整体唤醒恢复时间的影响0007根据本发明的一个方面,本发明实施例提出了一种ISCSI主机总线适配器的休眠唤醒方法,所述方法包括以下步骤由SCSI层驱动器向ISCSI主机总线适配器的驱动器发送电源唤醒请求和适配器重启请求,以执行ISCSI主机总线适配器对应的初始化;由SCSI层驱动器向ISCSI主机总线适配器的驱动器发送启动设备层的SCSI命令;以及在所述SCSI命令的执行时限内,ISCSI主机总线适配器的驱动器登录目标以挂载虚盘并执行所述SCSI命令。0008根据本发明进。

10、一步的实施例,ISCSI主机总线适配器的驱动器根据所述电源唤醒请求提供的供电状态来确定是否进行ISCSI主机总线适配器的部分硬件初始化。说明书CN102081531ACN102081536A2/5页40009根据本发明进一步的实施例,ISCSI主机总线适配器的驱动器在登录成功后发送所述SCSI命令到所述目标。0010根据本发明的另一方面,本发明的实施例提出一种ISCSI主机总线适配器的休眠唤醒装置,所述装置包括SCSI层驱动器模块,所述SCSI层驱动器模块用于发送电源唤醒请求和适配器重启请求;以及在ISCSI主机总线适配器初始化完成之后发送启动设备层的SCSI命令;ISCSI主机总线适配器的驱。

11、动器模块,所述ISCSI主机总线适配器的驱动器模块根据所述请求执行ISCSI主机总线适配器对应的初始化;以及在所述SCSI命令的执行时限内登录目标以挂载虚盘并发送所述SCSI命令。0011根据本发明进一步的实施例,所述ISCSI主机总线适配器的驱动器模块根据所述电源唤醒请求提供的供电状态来确定是否进行ISCSI主机总线适配器的部分硬件初始化。0012根据本发明进一步的实施例,所述ISCSI主机总线适配器的驱动器模块根据所述适配器重启请求执行尽量少的ISCSI主机总线适配器的初始化。0013根据本发明进一步的实施例,所述ISCSI主机总线适配器的驱动器模块在登录成功后发送所述SCSI命令到所述目。

12、标。0014本发明在启动设备层的SCSI命令的较长执行时间里,进行固件的加载以及目标登录以挂载虚盘等大量的工作,减少了ISCSI主机总线适配器休眠唤醒的时间。从而保证了ISCSIHBA的顺利完整的初始化和休眠唤醒过程,又减少了ISCSIHBA对系统唤醒恢复的影响。0015本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。0016以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。附图说明0017图1为现有ISCSI主机总线适配器休眠时序示意图;0018图2为本发明实施例的ISCSI主机总线适配器休眠唤醒方法时序图;0019。

13、图3为ISCSI主机总线适配器硬件结构示意图;0020图4为本发明实施例的ISCSI主机总线适配器休眠唤醒装置结构图。具体实施方式0021下面结合附图对本发明的结构原理和工作原理作具体的描述0022下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的组件或具有相同或类似功能的组件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。0023现在参考图2,该图显示了本发明实施例的ISCSI主机总线适配器休眠唤醒方法时序。0024如图2所示,系统为了唤醒ISCSI主机总线适配器设备,首先会由SCSI层驱动器对主机总。

14、线适配器驱动器HBADRIVER发送唤醒的电源请求,或者还包括即插即用PNP,PLUGANDPLAY请求步骤202。0025在休眠唤醒时,例如SCSI层驱动器首先利用类型为SRB_FUNCTION_POWER的说明书CN102081531ACN102081536A3/5页5SRBSCSI请求块,SCSIREQUESTBLOCK通知ISCSI主机总线适配器驱动器现在的供电状态是什么,判断SRB中POWERACTION标识的值,该标识表示系统通知ISCSI主机总线适配器驱动器现在设备的供电状态。通过判断POWERACTION的值是否为STORPOWERDEVICED0来决定是否进行一部分初始化工作。

15、。对于值为D0的,则是需要恢复到D0状态全供电状态,则可以判断为是处于休眠唤醒阶段,这时ISCSI主机总线适配器需要做必要的初始化操作,从而完成部分硬件的初始化步骤204。0026ISCSIHBA的组成部分如图3所示,包括有网络接口单元NIU,NETWORKINTERFACEUNIT2、传输数据包发生器EPG,EGRESSPACKETGENERATOR4、段重组引擎SRE,SEGMENTREASSEMBLYENGINE6以及协议处理引擎PROTOCOLPROCESSINGENGINE8等等。NIU4是物理层PHY接口,主要处理网络包的发送和接收;EPG4用于接收从主机HOST传下来的数据包;S。

16、RE6用于把从NIU接收到的网络包进行分类和处理;协议处理引擎8为灵活的可编程的内核,可进行复杂的处理,ISCSI协议在此内核实现。0027ISCSIHBA设备的硬件初始化包括上述主要部件的初始化。0028接着,系统会通过SCSI层驱动器向ISCSI主机总线适配器的驱动器发送SCSI适配器重启请求步骤206。具体地,通过调用ISCSI主机总线适配器驱动器的HWADAPTERCONTROL接口,下达SCSI重启适配器类型的请求。然后做尽量少的初始化工作,并立刻返回,完成ISCSI主机总线适配器的初始化步骤208。0029这里,初始化工作包括基础的必要的硬件初始化,执行时间会很短。因为系统是顺序初。

17、始化各设备,若某个设备初始化未返回,系统会继续等待其完成而不进行其它设备的唤醒。通过步骤208,系统则可以很快地继续进行其它设备的唤醒恢复。0030由于ISCSIHBA属于存储设备,若在休眠前有挂载虚盘,则在系统唤醒后,会对休眠前挂载的每个逻辑单元号LUN发送SCSI协议中要求设备层启动的SCSI命令。即,由SCSI层驱动器向ISCSI主机总线适配器的驱动器发送启动设备层的SCSI命令步骤210,从而通过ISCSI主机总线适配器的驱动器向休眠前挂载的每个LUN发送。0031具体地,SCSI层驱动器调用ISCSI主机总线适配器驱动器的HWBUILDIO接口,下达类型为SCSIOP_START_S。

18、TOP_UNIT的SCSI命令。ISCSI主机总线适配器的驱动器通过判断命令描述块CDB,COMMANDDESCRIPTORBLOCK中START_STOPSTART值是否为1,来确定是否需要启动该LUN。0032若判断不需要启动,则填写错误日志;若需要启动LUN,则在该命令的执行时限内,首先保存该SCSI命令,暂时不执行该命令。而是接着通过网络适配器NIC中的ISCSI引擎登录目标例如远程目标步骤212,向远程目标发送登录协议数据单元PDU。若登录成功则继续执行挂载虚盘的动作。并向ISCSI主机总线适配器的驱动器返回登录成功的信息步骤214。这里,ISCSI引擎会把目标的反馈以硬件中断的方式。

19、告知ISCSI主机总线适配器的驱动器进行处理。0033在登录成功后,ISCSI主机总线适配器的驱动器接着会把SCSIOP_START_STOP_UNIT的命令发送给目标端进行处理步骤216,以启动相应设备层。0034由于系统对上述启动设备层的SCSI命令的限定的执行时间较长,因此本发明在这个相对较长的时间里进行固件的加载以及目标登录以挂载虚盘等大量的工作,从而保证了ISCSIHBA的顺利完整的初始化和休眠唤醒过程。说明书CN102081531ACN102081536A4/5页60035参考图4,图4为本发明实施例的ISCSI主机总线适配器休眠唤醒装置结构图。0036如图所示,该休眠唤醒装置包括。

20、SCSI层驱动器模块20和ISCSI主机总线适配器的驱动器模块22。SCSI层驱动器模块20用于发送电源唤醒请求和适配器重启请求;以及在ISCSI主机总线适配器初始化完成之后发送启动设备层的SCSI命令。ISCSI主机总线适配器的驱动器模块22根据上述请求执行ISCSI主机总线适配器对应的初始化;以及在SCSI命令的执行时限内登录远程目标以挂载虚盘并发送所述SCSI命令。0037下面结合图4的实施例对本发明的ISCSI主机总线适配器休眠唤醒装置给出详细说明。0038如图所示,SCSI层驱动器模块20和ISCSI主机总线适配器的驱动器模块22位于系统内核KERNEL中,其中SCSI层驱动器模块2。

21、0与用户层USER的用户接口10连接,ISCSI主机总线适配器的驱动器模块22通过ISCSI层管理接口24与网络设备层NIC的ISCSI引擎30连接。0039系统为了唤醒ISCSI主机总线适配器设备,首先由SCSI层驱动器模块20对主机总线适配器驱动器模块22发送唤醒的电源请求或者还包括PNP请求。0040SCSI层驱动器模块20首先利用类型为SRB_FUNCTION_POWER的SRB通知ISCSI主机总线适配器驱动器模块22当前的供电状态,从而决定是否进行一部分初始化工作。例如通过判断SRB中POWERACTION的值是否为STORPOWERDEVICED0来确定。对于值为D0的,这时IS。

22、CSI主机总线适配器需要做必要的初始化操作,从而完成部分硬件的初始化。这些硬件例如包括网络接口单元NIU,NETWORKINTERFACEUNIT、传输数据包发生器EPG,EGRESSPACKETGENERATOR、段重组引擎SRE,SEGMENTREASSEMBLYENGINE以及协议处理引擎PROTOCOLPROCESSINGENGINE等等。0041接着,SCSI层驱动器模块20向ISCSI主机总线适配器的驱动器模块22发送SCSI适配器重启请求。例如,通过调用ISCSI主机总线适配器驱动器的HWADAPTERCONTROL接口,下达SCSI重启适配器类型的请求。然后做尽量少的初始化工作。

23、,立刻返回,完成ISCSI主机总线适配器的初始化。0042若ISCSIHBA设备在休眠前有挂载虚盘,则在系统唤醒后,会对休眠前挂载的每个逻辑单元号LUN发送SCSI协议中要求设备层启动的SCSI命令。即,由SCSI层驱动器模块20向ISCSI主机总线适配器的驱动器模块22发送启动设备层的SCSI命令,以发送到休眠前挂载的每个LUN。0043具体地,SCSI层驱动器模块20调用ISCSI主机总线适配器驱动器的HWBUILDIO接口,下达类型为SCSIOP_START_STOP_UNIT的SCSI命令。ISCSI主机总线适配器驱动器模块22通过判断START_STOPSTART值来确定是否需要启动。

24、该LUN。0044若需要启动LUN,则在该命令的执行时限内,ISCSI主机总线适配器驱动器模块22首先保存该SCSI命令,暂时不执行该命令。接着通过与ISCSI层管理接口24连接的NIC中的ISCSI引擎30,发起登录目标端的动作,向例如远程目标发送登录PDU。0045ISCSI主机总线适配器驱动器模块22作为ISCSI的管理层,可以通过ISCSI层管理接口24向NIC的ISCSI引擎30发送“发起会话”、“结束会话”、“登录连接”、“退出连接”等命令。0046若登录成功则继续执行挂载虚盘的动作,并且ISCSI引擎30向ISCSI主机总线适说明书CN102081531ACN102081536A。

25、5/5页7配器驱动器模块22返回登录成功的信息。ISCSI引擎30会把远程目标返回的响应以硬件中断的方式告知ISCSI主机总线适配器驱动器模块22进行处理。0047在收到远端目标登录成功的反馈信息后,ISCSI主机总线适配器驱动器模块22接着会把发送启动设备层的SCSI命令发送给远程目标端进行处理,以启动相应设备层。0048由于系统对上述启动设备层的SCSI命令的限定的执行时间较长,因此本发明在这个相对较长的时间里进行固件的加载以及远程目标登录以挂载虚盘等大量的工作,从而保证了ISCSIHBA的顺利完整的初始化和休眠唤醒过程。0049对于ISCSIHBA的休眠唤醒的实现及维护ISCSI协议,是。

26、个庞大而复杂的过程。本发明的ISCSI主机总线适配器的休眠唤醒装置和方法利用SCSI命令的执行时间较长的特点来做登录ISCSI目标等的耗时操作,减少了ISCSI主机总线适配器休眠唤醒的时间。既达到了顺利登录ISCSI目标并挂载虚盘,又减少了ISCSIHBA对系统唤醒恢复的影响。0050当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。说明书CN102081531ACN102081536A1/4页8图1说明书附图CN102081531ACN102081536A2/4页9图2说明书附图CN102081531ACN102081536A3/4页10图3说明书附图CN102081531ACN102081536A4/4页11图4说明书附图CN102081531A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1