《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。