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

文档序号:6586166阅读:297来源:国知局
专利名称:iSCSI主机总线适配器的休眠唤醒方法和装置的制作方法
技术领域
本发明涉及一种操作系统的休眠唤醒方法,尤其涉及iSCSI主机总线适配器的休 眠唤醒方法和装置。
背景技术
Windows操作系统的电源管理为了节省电能,降低计算机损耗,因此包括有 “Hibernate (休眠)”或“sle印(休眠)”的功能。但是在这种情况下需要切断外围设备、显示 器甚至硬盘驱动器的电源,当然也包括正在工作的iSCSIHBA(互联网小型计算机系统接口 主机总线适配器,Small Computer SystemInterface over Internet, Host Bus Adapter)。操作系统休眠阶段关于iSCSI HBA的操作时序图如图1的步骤所示,首先由SCSI 层驱动器发送用于停止设备层的SCSI命令到iSCSI HBA驱动器,例如Windows操作系统中 的storprotMiniport (Storport微端口)驱动器(步骤10 ;然后,由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命令;以及在所述 SCSI命令的执行时限内,iSCSI主机总线适配器的驱动器登录目标以挂载虚盘并执行所述 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_FUNCT 10N_P0WER的
4SRB(SCSI请求块,SCSI Request Block)通知iSCSI主机总线适配器驱动器现在的供电状 态是什么,判断SRB中PowerAction标识的值,该标识表示系统通知iSCSI主机总线适配器 驱动器现在设备的供电状态。通过判断PowerAction的值是否为MorPowerDeviceDO来决 定是否进行一部分初始化工作。对于值为DO的,则是需要恢复到DO状态(全供电状态),则 可以判断为是处于休眠唤醒阶段,这时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属于存储设备,若在休眠前有挂载虚盘,则在系统唤醒后,会对休 眠前挂载的每个逻辑单元号(Iun)发送SCSI协议中要求设备层启动的SCSI命令。S卩,由 SCSI层驱动器向iSCSI主机总线适配器的驱动器发送启动设备层的SCSI命令(步骤210), 从而通过iSCSI主机总线适配器的驱动器向休眠前挂载的每个Iun发送。具体地,SCSI层驱动器调用iSCSI主机总线适配器驱动器的HwBuildIO接口,下 达类型为SCSI0P_START_ST0P_UNIT的SCSI命令。iSCSI主机总线适配器的驱动器通过判 断命令描述块(CDB, Command Descriptor Block)中 START_ST0P. Start 值是否为 1,来确 定是否需要启动该lun。若判断不需要启动,则填写错误日志;若需要启动lim,则在该命令的执行时限 内,首先保存该SCSI命令,暂时不执行该命令。而是接着通过网络适配器(NIC)中的iSCSI 引擎登录目标(例如远程目标)(步骤21 ,向远程目标发送登录协议数据单元(PDU)。若 登录成功则继续执行挂载虚盘的动作。并向iSCSI主机总线适配器的驱动器返回登录成功 的信息(步骤214)。这里,iSCSI引擎会把目标的反馈以硬件中断的方式告知iSCSI主机 总线适配器的驱动器进行处理。在登录成功后,iSCSI主机总线适配器的驱动器接着会把SCSI0P_START_ST0P_ UNIT的命令发送给目标端进行处理(步骤216),以启动相应设备层。由于系统对上述启动设备层的SCSI命令的限定的执行时间较长,因此本发明在 这个相对较长的时间里进行固件的加载以及目标登录以挂载虚盘等大量的工作,从而保证 了 iSCSI HBA的顺利完整的初始化和休眠唤醒过程。
5
参考图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层管理接口 M与网络设备层(NIC)的 iSCSI引擎30连接。系统为了唤醒iSCSI主机总线适配器设备,首先由SCSI层驱动器模块20对主机 总线适配器驱动器模块22发送唤醒的电源请求或者还包括PNP请求。SCSI层驱动器模块20首先利用类型为SRB_FUNCTI0N_P0WER的SRB通知iSCSI 主机总线适配器驱动器模块22当前的供电状态,从而决定是否进行一部分初始化工作。例 如通过判断SRB中PowerAction的值是否为MorPowerDeviceDO来确定。对于值为DO的, 这时iSCSI主机总线适配器需要做必要的初始化操作,从而完成部分硬件的初始化。这些 硬件例如包括网络接口单元(NIU,Network Interface Unit)、传输数据包发生器(EPG, EgressPacket Generator)、段重组弓丨擎(SRE,Segment Reassembly Engine)以及协议处理 弓I擎(Protocol Processing Engine)等等。接着,SCSI层驱动器模块20向iSCSI主机总线适配器的驱动器模块22发送SCSI 适配器重启请求。例如,通过调用iSCSI主机总线适配器驱动器的HwAdapterControl接口, 下达SCSI重启适配器类型的请求。然后做尽量少的初始化工作,立刻返回,完成iSCSI主 机总线适配器的初始化。若iSCSI HBA设备在休眠前有挂载虚盘,则在系统唤醒后,会对休眠前挂载的每个 逻辑单元号(Iun)发送SCSI协议中要求设备层启动的SCSI命令。S卩,由SCSI层驱动器模 块20向iSCSI主机总线适配器的驱动器模块22发送启动设备层的SCSI命令,以发送到休 眠前挂载的每个lun。具体地,SCSI层驱动器模块20调用iSCSI主机总线适配器驱动器的HwBuildIO接 口,下达类型为SCSI0P_START_ST0P_UNIT的SCSI命令。iSCSI主机总线适配器驱动器模块 22通过判断START_ST0P. Start值来确定是否需要启动该lun。若需要启动lun,则在该命令的执行时限内,iSCSI主机总线适配器驱动器模块22 首先保存该SCSI命令,暂时不执行该命令。接着通过与iSCSI层管理接口 M连接的NIC 中的iSCSI引擎30,发起登录目标端的动作,向例如远程目标发送登录PDU。iSCSI主机总线适配器驱动器模块22作为iSCSI的管理层,可以通过iSCSI层管 理接口 M向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对系统唤醒恢复的影响。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟 悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变 形都应属于本发明所附的权利要求的保护范围。
权利要求
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主机总线适配器的休眠唤醒方法和装置,该装置包括SCSI层驱动器模块,用于发送电源唤醒请求和适配器重启请求;以及在iSCSI主机总线适配器初始化完成之后发送启动设备层的SCSI命令;iSCSI主机总线适配器的驱动器模块,根据请求执行iSCSI主机总线适配器对应的初始化;以及在SCSI命令的执行时限内登录目标以挂载虚盘并发送SCSI命令。本发明能够在成功唤醒iSCSI主机总线适配器的同时减少对系统整体恢复的影响。
文档编号G06F1/32GK102081531SQ20091025333
公开日2011年6月1日 申请日期2009年11月30日 优先权日2009年11月30日
发明者王云松, 王辉, 陈玄同 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1