CN103180840B - 动态允许和禁止写xfr_rdy的方法和系统 - Google Patents
动态允许和禁止写xfr_rdy的方法和系统 Download PDFInfo
- Publication number
- CN103180840B CN103180840B CN201180051735.1A CN201180051735A CN103180840B CN 103180840 B CN103180840 B CN 103180840B CN 201180051735 A CN201180051735 A CN 201180051735A CN 103180840 B CN103180840 B CN 103180840B
- Authority
- CN
- China
- Prior art keywords
- target side
- write order
- xfr
- rdy
- initiator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Transfer Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及动态允许和禁止写XFR_RDY。公开一种动态允许和禁止XFR_RDY的使用的方法。在本发明的一个实施例中,所述方法包括在目标方接收写命令,和判定对于所述写命令,XFR_RDY是被允许还是被禁止。如果XFR_RDY被禁止,所述方法判定是否一个或多个缓冲器在目标方可用。如果至少一个缓冲器可用,所述方法通过把与所述写命令相关的数据写入所述一个或多个缓冲器中,来处理所述写命令。所述方法随后返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。这里还公开和要求保护对应的设备和计算机程序产品。
Description
技术领域
本发明涉及动态切换传递就绪(XFR_RDY)允许模式和传递就绪(XFR_RDY)禁止模式的设备和方法。
背景技术
在光纤通道协议(FCP)写操作中,XFR_RDY可被FCP目标设备用于通知FCP发起方,目标设备准备好接收FCP数据突发串。在进程登录(PRLI)时,在两个FCP端口之间协商XFR_RDY对于第一数据突发串的使用。FCP端口协商或者在写操作中,对第一FCP数据突发串使用XFR_RDY,或者对第一突发串禁止XFR_RDY。如果XFR_RDY被允许,在接收到FCP写命令之后,目标设备将为第一FCP数据突发串分配空间,之后把XFR_RDY消息发送给发起方。同样地,只有在发起方接收到XFR_RDY消息后,它才可以发送FCP写数据突发串。如果XFR_RDY被禁止,发起方认为目标设备总是具有可用于接收第一数据突发串的x字节的数据,从而发起方将发送后面紧跟FCP数据的写命令,而不等待XFR_RDY消息。对于受等待时间约束的应用,比如长距离数据复制来说,无XFR_RDY允许的操作尤其有益。
现代的光纤通道端口一般支持至少4K的并发光纤通道交换,和每个数据突发串至少64K。假定这些值,支持XFR_RDY禁止的FCB设备必须具有可用于接收第一数据突发串的每个端口至少64K×4K=256MB的内存。这是相当大量的内存,尤其是考虑到现代存储控制器可支持超过128个端口,这转化为为第一数据突发串保留的32G(256MB×128)内存。不是所有的存储控制器都具有可用于保留如此多的内存,以便在XFR_RDY禁止的情况下,接收第一数据突发串 的资源。在没有保证可用于接收第一数据突发串的足够缓冲空间的情况下,需要能够在XFR_RDY被禁止的情况下工作的存储控制器具有以下选择:
第一种选择是不支持XFR_RDY禁止模式的操作。这是多数光纤通道设备实现的选择。不过,在许多结构(比如长距离复制数据的结构)中,这种选择不可行,因为它会不可接受地影响写性能。这归因于禁止XFR_RDY要求发起方等待来自目标方的XFR_RDY消息,之后才能够进行数据传递的事实。在许多结构中,这样的延迟是不能接受的。
第二种选择是支持发起方和目标方之间的数目有限的交换。在其中过预订普遍的竞争环境中,这种选择不可行。许多控制器需要支持每个端口登录的大量发起方,同时每个发起方并发地发送大量的交换。
第三种选择是支持XFR_RDY禁止模式的操作,但是限制第一数据突发串的大小。对具有基于高速缓存跟踪(cache track)的体系结构的存储控制器来说,这种选择并不可行,所述体系结构被配置成对于每个64K跟踪,发送一个XFR_RDY消息。于是需要具有能够支持最少64K的突发串大小。
第四种选择是支持XFR_RDY禁止模式的操作,但是不保证存在容纳在XFR_RDY被禁止的情况下,发生的最大数目的并发写传输的足够缓冲器。换句话说,目标设备被配置成允许可用的缓冲空间的过预订。这种选择依赖于多数时间工作负荷不需要所有资源的事实。不过,如果工作负荷足够高,从而需要比物理可用的缓冲空间更多的缓冲空间,目标控制器必须或者放弃或者异常中止交换。这导致I/O错误,从而导致性能退化和可能的SAN拥塞及其各种结果,包括影响SAN中的其它设备。
第五种选择是对于FCP端口,在进程登录期间,协商XFR_RDY的禁止。当缓冲空间低于一定的阈值时,目标方被配置成丢弃新到来的交换和/或注销主机。这会迫使主机再次登录,此时FCP端口可重新协商,以允许XFR_RDY。这种选择需要在能够允许或禁止XFR_RDY使用之前,终止所有的I/O,导致不希望的性能退化。
鉴于上面所述,需要一种减轻现有技术的上述缺陷的手段。
发明内容
因而在第一方面,本发明提供一种动态允许和禁止XFR_RDY的方法,所述方法包括:在目标方接收写命令;判定对于所述写命令,XFR_RDY是否被禁止;如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;
如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器,来处理所述写命令;和返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
所述方法还可包括如果至少一个缓冲器不可用,在目标方放弃与所述写命令相关的数据。优选地,放弃数据还包括返回指示所述写命令失败且应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。优选地,返回信息还包括把所述信息传送给所述写命令的发起方。优选地,在向目标方传送XFR_RDY被禁止的另一个写命令之前,发起方判定在目标方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未决写命令的数目。优选地,发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被禁止的另一个写命令。优选地,发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目不大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。
在第二方面,提供一种包含保存在计算机可读介质上的计算机程序代码的计算机程序,当被载入计算机系统中,并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行按照第一方面的方法的所有步骤。
可以动态允许和禁止XFR_RDY的计算机程序产品的形式,提供所述第二方面的发明,所述计算机程序产品包括其中包含有计算机可用程序代码的计算机可用存储介质,所述计算机可用程序代码包括: 在目标方接收写命令的计算机可用程序代码;判定对于所述写命令,XFR_RDY是否被禁止的计算机可用程序代码;如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用的计算机可用程序代码;如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器,来处理所述写命令的计算机可用程序代码;和返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息的计算机可用程序代码。
在第三方面,提供一种动态允许和禁止XFR_RDY的系统,所述系统包括:传送写命令的发起方;接收所述写命令,并判定对于所述写命令,XFR_RDY是否被禁止的目标方;目标方还被配置成如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;目标方还被配置成如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器,来处理所述写命令;并且目标方还被配置成向发起方返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
优选地,目标方还被配置成如果至少一个缓冲器不可用,放弃与所述写命令相关的数据。优选地,目标方还被配置成如果数据被放弃,返回指示所述写命令失败且应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。优选地,发起方还被配置成在向目标方传送XFR_RDY被禁止的另一个写命令之前,判定在目标方仍然可用的缓冲器的数目是否大于与目标方的未决写命令的数目。优选地,发起方还被配置成如果在目标方仍然可用的缓冲器的数目大于与目标方的未决写命令的数目,把XFR_RDY被禁止的另一个写命令传送给目标方。优选地,发起方还被配置成如果在目标方仍然可用的缓冲器的数目不大于与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。
在一个实施例中,动态允许和禁止XFR_RDY的方法可包括:从目标方接收指示在目标方可用的缓冲器的数目的信息;判定在目标方仍然可用的缓冲器的数目是否大于与目标方的未决写命令的数目;如果在目标方可用的缓冲器的数目大于与目标方的未决写命令的数目, 传送XFR_RDY被禁止的写命令;和如果在目标方可用的缓冲器的数目不大于与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。所述方法还可包括如果XFR_RDY被禁止的写命令失败,在XFR_RDY被允许的情况下重新驱动写命令。
本发明的实施例从而提供一种允许设备利用在XFR_RDY被禁止的情况下,可能存在的性能增益,而不要求支持的最大数目的FCP写操作能够并发进行的解决方案。此外,需要一种能够以最小的写性能退化,有效地允许和禁止XFR_RDY的解决方案。理想地,这种解决方案应允许设备当工作负荷变化时,在交换对交换的基础上,允许和禁止XFR_RDY。因而,提出了本发明,以提供动态允许和禁止XFR_RDY的使用的设备和方法。根据以下说明和附加的权利要求,本发明的特征和优点将变得更明显,或者依据下面记载的本发明的实践,可以获悉本发明的特征和优点。
与上面所述一致,这里公开一种动态允许和禁止XFR_RDY的使用的方法。在本发明的一个实施例中,所述方法包括:在目标方接收写命令,和判定对于所述写命令,XFR_RDY是被允许还是被禁止。如果XFR_RDY被禁止,所述方法判定是否一个或多个缓冲器在目标方可用。如果至少一个缓冲器可用,所述方法通过把与所述写命令相关的数据写入所述一个或多个缓冲器中,来处理所述写命令。所述方法随后返回指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
这里还公开和要求保护对应的设备和计算机程序产品。
附图说明
下面参考附图,举例说明本发明的优选实施例,附图中:
图1是表示其中可实现按照本发明的实施例的设备和方法的网络环境的一个例子的高级方框图;
图2是表示允许网络设备之间的通信的组件的高级方框图;
图3是表示发起方和目标方之间的通信的高级方框图;
图4是表示由支持XFR_RDY的动态允许和禁止的发起方实现的方法的一个实施例的流程图;
图5是表示由支持XFR_RDY的动态允许和禁止的目标方实现的方法的一个实施例的流程图;
图6是表示在支持XFR_RDY的动态允许和禁止的发起方内实现的各个模块的高级方框图;以及
图7是表示在支持XFR_RDY的动态允许和禁止的目标方内实现的各个模块的高级方框图。
具体实施方式
易于理解可按照各种不同的结构,布置和设计附图中说明和例示的本发明的实施例的各个组件。从而,在附图中表示的本发明的实施例的以下更详细说明并不意图限制要求保护的本发明的范围,仅仅代表目前构思的按照本发明的实施例的一些例子。参考附图,将更好地理解目前说明的实施例,附图中,相同的部分用相同的附图标记表示。
所属技术领域的技术人员知道,本发明可以实现为装置、系统、方法或计算机程序产品。此外,本发明可以采取硬件实施例、配置成操作硬件的软件实施例(包括固件、驻留软件、微代码等)、或者结合硬件和软件的实施例的形式,本文一般都称为“模块”或“系统”。此外,本发明可采取用任何有形的表达介质体现的计算机可用存储介质的形式,所述表达介质保存有计算机可用程序代码。
可以利用一个或多个计算机可用介质或计算机可读存储介质的任意组合保存计算机程序产品。计算机可用或计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体系统、装置或器件。计算机可读存储介质的更具体例子(非穷举列表)包括:具有一条或多条导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储器件或磁存储器件。在本文的上下文中,计算机可用或计算机可读存 储介质可以是任何能够包含、存储或传送程序的任何介质,该程序可以供指令执行系统、装置或者器件使用或者与其结合使用。
可用一种或多种编程语言,包括诸如Java、Smalltalk、C++之类的面向对象编程语言,和诸如“C”编程语言或类似编程语言之类的常规过程编程语言的任意组合,编写执行本发明的操作的计算机程序代码。也可用诸如汇编语言之类的低级编程语言,编写实现本发明的计算机程序代码。
下面参考按照本发明各个实施例的方法、设备、系统和计算机程序产品的流程图和/或方框图,说明本发明。应当理解,流程图和/或方框图的每个方框,以及流程图和/或方框图中的各个方框的组合可用计算机程序指令或代码实现。这些计算机程序指令可被提供给通用计算机、专用计算机或者其它可编程数据处理设备的处理器,从而产生机器,以致通过计算机或其它可编程数据处理设备的处理器执行的指令产生实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。
这些计算机程序指令也可被保存在计算机可读存储介质中,所述计算机可读存储介质可指令计算机或其它可编程数据处理设备按特定方式工作,以致保存在计算机可读存储介质中的指令产生制成品,所述制成品包括实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的指令装置。
计算机程序指令也可被加载到计算机或其它可编程数据处理设备上,使得在所述计算机或其它可编程设备上执行一系列的操作步骤,从而产生计算机实现的过程,以致在所述计算机或其它可编程设备上执行的指令提供实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的过程。
参见图1,图中图解说明网络体系结构100的一个例子。介绍网络体系结构100是为了表示其中可实现按照本发明的设备和方法的环境的一个例子。网络体系结构100只是作为例子给出的,并不意图限制本发明。实际上,除了所示的网络体系结构100之外,这里公开的 设备和方法还适用于各种不同的网络体系结构。
如图所示,网络体系结构100包括利用网络104互连的一个或多个计算机102、106。网络104例如可包括局域网(LAN)104、广域网(WAN)104、因特网104、企业内部网104等等。在一些实施例中,计算机102、106可包括客户端计算机102和服务器计算机(这里也称为“主机系统”106)。通常,客户端计算机102发起通信会话,而服务器计算机106等待来自客户端计算机102的请求。在一些实施例中,计算机102和/或服务器106可连接到一个或多个内部或外部的直接连接的存储系统112(例如,硬盘驱动器、固态驱动器、磁带驱动器等等)。这些计算机102、106和直接连接的存储系统112可利用诸如ATA、SATA、SCSI、SAS、光纤通道之类的协议,进行通信。
在一些实施例中,网络体系结构100可包括在服务器106之后的存储网络108,比如存储区域网(SAN)108或LAN108(例如,当利用网络连接的存储器时)。网络108可把服务器106连接到一个或多个存储系统110,比如硬盘驱动器或固态驱动器的阵列110a、磁带库110b、单个的硬盘驱动器110c或固态驱动器110c、磁带驱动器110d、CD-ROM库等等。为了访问存储系统110,主机系统106可通过从主机106上的一个或多个端口到存储系统110上的一个或多个端口的物理连接,进行通信。连接可以经由交换机、架构(fabric)、直接连接等。在一些实施例中,服务器106和存储系统110可以利用诸如光纤通道(FC)之类的连网标准通信。
参见图2,主机系统106和存储系统110都可包括通过存储网络108,与其它主机系统106和存储系统110通信的一个或多个主机适配器200。在一些实施例中,主机适配器200被实现成分别插入主机系统106和存储系统110的扩展插槽中的适配卡,不过在所有实施例中,这不是强制性的。主机系统106和存储系统110上的主机适配器200可包括便利通信的一个或多个端口202。对于本说明来说,发起通信(例如,通过发送命令)的端口202可被称为“发起方”,而接收并响应所述通信的端口202可被称为“目标方”。图3中图解说明了表示发起方300 和目标方302的一个例子的高级方框图。
参见图3,如在上面的背景技术部分中所述,在光纤通信协议(FCP)写操作中,FCP目标方302可以利用XFR_RDY告知FCP发起方300,目标方302准备好接收FCP数据突发串。可在进程登录(PRLI)时,在两个FCP端口202之间协商对XFR_RDY使用第一数据突发串。FCP端口202可协商或者在写操作中,对第一FCP数据突发串使用XFR_RDY,或者对第一突发串禁止XFR_RDY。如果XFR_RDY被允许,在接收到FCP写命令之后,目标方302将为第一FCP数据突发串分配空间,之后把XFR_RDY消息发送给发起方300。同样地,只有在发起方接收到XFR_RDY消息后,它才可以发送FCP写数据突发串。如果XFR_RDY被禁止,发起方300认为目标设备302总是具有可用于接收第一数据突发串的x字节的数据,从而发起方300将发送后面紧跟x字节的FCP数据的写命令,而不等待XFR_RDY消息。
如在背景技术部分中所述,无XFR_RDY允许的操作有益于受等待时间约束的结构,比如长距离数据复制(例如,对等远程复制应用,或者说PPRC)。然而,如上所述,不是所有的存储控制器都具有可用于保留为在XFR_RDY被禁止的情况下,接收第一数据突发串而需要的大量内存的资源。从而,需要一种使设备能够利用对于有限数目的写操作,使XFR_RDY被禁止的性能优点的解决方案。此外需要一种以最小的写性能降低,动态允许和禁止XFR_RDY的使用的解决方案。理想地,这种设备和方法应允许设备在工作负荷变化时并在交换对交换的基础上,允许和禁止XFR_RDY。
图3表示动态允许和禁止XFR_RDY的使用的技术的概况。下面将结合图4和5,更详细地说明该技术。该技术允许发起方300和目标方302利用与对于有限数目的写操作,禁止XFR_RDY相关的性能增益。
如图3中所示,在选择的实施例中,发起方300可被配置成留意它具有的与目标方302的(XFR_RDY被禁止的)未决写命令308的数 目304。未决写命令308可包括发起方300已发送给目标方302,但是还未接收到指示写命令308是成功还是失败的状态310的那些写命令。在一些实施例中,发起方300发送给目标方302的每个写命令308可包括支持字段312和允许/禁止字段314。
支持字段312指示发起方300是否支持XFR_RDY的动态允许和禁止。在一些实施例中,支持字段312是单个比特。可以选择或配置该比特,以致不支持XFR_RDY的动态允许和禁止的目标方302将看不见该比特。当该比特被设定时,发起方300可指示它支持两件事物:(1)指示XFR_RDY被禁止的写命令308失败,从而应在XFR_RDY被允许的情况下重新驱动所述写命令308的状态消息310;和(2)指示写操作成功完成的状态消息310,其中状态消息310包括指示在目标方302可用于服务来自发起方300的XFR_RDY被禁止的写操作的缓冲器的数目306的信息。
在其它实施例中,可以使用不同于利用支持字段312的方法,或者除了利用支持字段312之外的方法,确定发起方300和目标方302是否支持XFR_RDY的动态允许和禁止。例如,发起方300和目标方302可在登录阶段中,或者作为特征交换协议或者其它适当协议的一部分,协商是否支持XFR_RDY的动态允许和禁止。在其它实施例中,与包含在写命令308中相反,支持字段312可被包含在帧报头或者其它适当位置中。
发起方300可设定允许/禁止字段314,以指示对于其中包含允许/禁止字段314的特定写命令308,XFR_RDY是被允许还是被禁止。如果XFR_RDY被允许,在发送与写命令308相关的数据之前,发起方300将等待来自目标方302的XFR_RDY消息。另一方面,如果XFR_RDY被禁止,发起方300将在写命令308之后发送数据,而不等待来自目标方302的XFR_RDY消息。在一些实施例中,代替在写命令308中设置允许/禁止字段314,允许/禁止字段314被包含在帧报头的控制字段或者其它适当位置中。
目标方302可被配置成留意它可用于服务来自发起方300的写命 令308的缓冲器的数目(Y)306。在一些实施例中,目标方302为登录到目标方302的每个发起方300保持不同的“Y”值。目标方302可根据进行中的写命令308的数目和登录到目标方302的发起方300的数目,动态改变“Y”的值。目标方302还可由于其它原因,比如需要把缓冲器用于目标设备302上的其它操作,来改变“Y”的值。“Y”的当前值是在任何特定时间,在目标方302可供发起方300利用的缓冲器的数目的快照。
当目标方302处理写命令308时,目标方302可答复以指示写操作308的成功或失败的状态310。状态消息310(或者另一个消息,取决于期望的实现)可指示在完成写命令308之后,在目标方302上仍然可用的缓冲器的数目306。利用该信息306,发起方300可比较在目标方302可用的缓冲器的数目306,和它具有的与目标302的未决写命令的数目304。可进行所述比较,以确定发起方300发送给目标方302的下一个写命令308的操作模式(即,XFR_RDY是被允许还是被禁止)。
例如,如果在目标方302可用的缓冲器的数目306大于发起方300具有的与目标方302的未决写命令的数目304,发起方300可发送XFR_RDY被禁止的下一个写命令308。另一方面,如果在目标方302可用的缓冲器的数目306小于或等于发起方300具有的与目标方302的未决写命令的数目304,发起方300可发送XFR_RDY被允许的下一个写命令308。允许XFR_RDY将使目标302可以在接收与写命令308相关的数据之前,分配缓冲器。
参见图4,图中图解说明由支持XFR_RDY的动态允许和禁止的发起方300实现的方法400的一个实施例。如图所示,发起方300首选判定它是否准备好传送写命令(步骤402)。如果发起方300接收到需要被写入目标设备302中的数据,会发生所述判定。发起方300随后在写命令308的控制字段312中,指示它支持XFR_RDY的动态允许和禁止(步骤404)。如前所述,可以选择所述控制字段312,以致不支持XFR_RDY的动态允许和禁止的目标方302看不见或者忽略所述控 制字段312。
发起方300随后判定在目标方302可用的缓冲器的数目306(步骤406)。这可通过读取发起方300保持的Y的值来实现。在一些实施例中,发起方300把它的Y的内部值初始化为期望值,随后当在状态消息310或其它适当消息中,从目标方302接收到可用缓冲器的数目306时更新Y。发起方300还判定它具有的与目标方302的未决写命令的数目304(步骤408)。当发起方300把写命令308发送给目标方302,并从目标方302接收到状态消息310时,发起方300可留意所述数目304。
在步骤410,如果在目标方302可用的缓冲器的数目(Y)306大于发起方300具有的与目标方302的未决写命令的数目(Z)304,发起方300发送XFR_RDY被禁止的写命令308(步骤412)。发起方300随后把与写命令308相关的数据发送给目标方302(步骤412),而不等待来自目标方302的XFR_RDY消息。在步骤410,如果在目标方302可用的缓冲器的数目306小于或等于发起方300具有的与目标方302的未决写命令的数目304,发起方300发送XFR_RDY被允许的写命令308(步骤414)。发起方300随后等待接收来自目标方302的XFR_RDY消息(步骤416)。一旦发起方300接收到XFR_RDY消息,发起方300就向目标方302发送与写命令308相关的数据(步骤418)。
一旦在步骤412或418,发起方300发送了数据,发起方300就等待从目标方302接收状态310(步骤420)。如果状态良好,意味写操作成功完成,发起方300从状态信息310读取在目标方302可用的缓冲器的数目(步骤422)。该信息允许发起方300相应地为未来的写命令308允许或禁止XFR_RDY。另一方面,如果状态不好,意味写命令308没有成功完成,发起方300可进行错误恢复处理(步骤424)。这可包括在较短的等待期之后,沿着相同的路径或者另一条路径,重新驱动写命令308。另外或者另一方面,这可包括在XFR_RDY被允许的情况下,重新驱动写命令308,如果状态消息310指令发起方300这样做的话。当发起方300被告知写命令308没有成功完成时,发起方 300可把它的Y的内部值设定为0,以反映在目标方302上目前没有任何缓冲器可用。另一方面,目标方302可告知发起方300,没有任何缓冲器可用,以致发起方可更新其Y值。发起方300随后对下一个写命令308重复方法400。
参见图5,图中图解说明由支持XFR_RDY的动态允许和禁止的目标方302实现的方法500的一个实施例。如图所示,目标方302首选判定是否接收到了写命令308(步骤502)。如果接收到了写命令308(步骤502),通过检查写命令308,目标方302判定XFR_RDY是否被禁止(步骤504)。如果XFR_RDY未被禁止,目标方302分配缓冲器(步骤526),并向发起方300发送XFR_RDY(步骤526)。当数据从发起方300到达时,目标方302把数据写入所述缓冲器中,并向发起方300返回状态310(步骤528),状态310指示写操作的成功或失败,以及在完成写操作之后,在目标方仍然可用的缓冲器的数目306。
在步骤504,如果XFR_RDY被禁止,目标方302等待与写命令308相关的数据到达(步骤506),而不发送XFR_RDY。当数据到达时,目标方302判定在目标方302,一个或多个缓冲器是否可用(步骤508)。如果一个或多个缓冲器可用,目标方302通过把数据写入所述缓冲器,来处理写命令308(步骤510)。目标方302随后判定发起方300是否支持XFR_RDY的动态允许和禁止(步骤512)。这可通过读取写命令308中的支持字段312来实现。如果是,目标方302答复以指示在目标方302仍然可用的缓冲器的数目306的良好状态310(步骤514)(假定写操作成功完成)。另一方面,如果发起方300不支持XFR_RDY的动态允许和禁止,目标方302仅仅答复以良好状态(步骤516)(假定写操作成功完成)。
在步骤508,如果目标方302判定没有缓冲器可用于保持与写命令308相关的数据,在接收到与写命令308相关的数据时,目标方302放弃该数据(步骤518),因为目标方302没有资源来保存该数据。目标方302随后判定发起方300是否支持XFR_RDY的动态允许和禁止(步骤520)。如果否,目标方302答复以错误状态310。这使发起方300 可以调用错误恢复处理来响应错误状态310。在步骤520,如果目标方302判定发起方300支持XFR_RDY的动态允许和禁止,目标方302指令发起方300在XFR_RDY被允许的情况下重新驱动写命令308。在XFR_RDY被允许的情况下重新驱动写命令308将使目标方302可以在它接收到数据之前,分配缓冲器。
图4和5中的方法400、500只是作为例子给出的,并不意图限制本发明。本领域的技术人员会认识到,可对方法400、500作出各种改变,而不脱离本发明的本质或特性。介绍方法400、500只是为了表示可分别由发起方300和目标方302执行的方法400、500的例子。
参见图6和7,可以一个或多个模块的形式,实现在图4和5中说明的方法400、500。可用硬件、可在硬件上执行的软件或固件、或者它们的组合,实现这些模块。这些模块只是作为例子给出的,并不意图限制本发明。实际上,备选实施例可以包括比例示的模块更多或者更少的模块。另外应认识到在一些实施例中,一些模块的功能可被分离到多个模块,或者相反地,几个模块的功能可被结合到单个模块或者较少的几个模块中。另外应认识到不一定在图解说明模块的位置,实现所述模块。例如,在发起方300中表示的一些功能实际上可在目标方302中实现,反之亦然。从而,模块的位置只是作为例子给出的,并不意图限制本发明。
图6是表示可包含在支持XFR_RDY的动态允许和禁止的发起方300内的各个模块的高级方框图。如图6中所示,在选择的实施例中,所述发起方300可包括协商模块600、值跟踪模块602、命令生成模块604、命令发送模块606、等待模块608、数据发送模块610和状态模块612中的一个或多个。命令生成模块604可包括设定模块614、判定模块616、允许模块618和禁止模块620中的一个或多个。
发起方300的协商模块600可用于与目标方302的对应协商模块700(例示于图7中)协商。在一些实施例中,协商模块600、700之间的协商在进程登录时发生。利用协商模块600、700,发起方300和目标方302可协商是否支持按XFR_RDY禁止模式的操作。发起方300 和目标方302还可协商是否支持XFR_RDY的动态允许和禁止。
值跟踪模块602可用于跟踪与目标方302的未完成写命令308的数目304。当XFR_RDY被禁止的新的写命令308被发送给目标方302时,值跟踪模块602可递增数目304。类似地,当对于XFR_RDY被禁止的未决写命令,返回状态310时,值跟踪模块602可递减数目304。值跟踪模块602还可留意在目标方302可用的缓冲器的数目306。这可通过例如当从发起方300接收到状态消息310时,读取可用的缓冲器的数目306来实现。
命令生成模块604可用于生成和填充供传输给目标方302的写命令308。为了完成该任务,设定模块614可设定写命令308中的支持字段312,以指示发起方300支持XFR_RDY的动态允许和禁止。判定模块616随后可判定如何设定允许/禁止字段314。更具体地说,判定模块616可判定在目标方302可用的缓冲器的数目306是否大于发起方300具有的与目标方302的未决写命令的数目304。如果是,禁止模块620设定允许/禁止字段314,以便对于写命令308,禁止XFR_RDY。如果否,允许模块618设定允许/禁止字段314,以允许XFR_RDY。
一旦命令生成模块604生成了写命令308,命令发送模块606就把写命令308发送给目标方302。如果在写命令308中,XFR_RDY被允许,等待模块608等待来自目标302的XFR_RDY消息。一旦接收到该消息,数据发送模块610就把与写命令308相关的数据发送给目标方302,比如通过在一帧或多帧中发送所述数据。另一方面,如果XFR_RDY被禁止,数据发送模块610可发送数据,而不等待XFR_RDY消息。一旦数据发送模块610发送了数据,状态模块612就等待并读取来自目标方302的状态信息310。这可包括从状态信息310中,读取在完成写操作之后,在目标方302仍然可用的缓冲器的数目306。
图7是表示可包含在支持XFR_RDY的动态允许和禁止的目标方302内的各个模块的高级方框图。如图7中所示,在选择的实施例中, 所述目标方302包括协商模块700、值跟踪模块702、检查模块704、判定模块706、分配模块708、发送模块710、可用性模块712、放弃模块714、处理模块716和响应模块718中的一个或多个。
如前所述,目标方302的协商模块700可在进程登录时,与发起方300的协商模块700协商,以判定是否支持某些特征。更具体地说,协商模块700可协商是否支持按XFR_RDY禁止模式操作,以及是否支持XFR_RDY的动态允许和禁止。值跟踪模块702可跟踪在目标方302可用的缓冲器的数目306。当一个缓冲器被使用时,值跟踪模块702可递减数目306。类似地,当在目标方302,一个缓冲器变得可用时,值跟踪模块702可递增数目306。
检查模块704可用于检查到来的写命令308。特别地,检查模块704可被配置成检查到来的写命令308的支持字段312和允许/禁止字段314。利用这些字段312、314中的信息,判定模块706可判定发起方300是否支持XFR_RDY的动态允许和禁止,和对于写命令308,XFR_RDY是被允许还是被禁止。如果对于写命令308,允许XFR_RDY,分配模块708为与写命令308相关的数据分配缓冲器,以及发送模块710向发起方300发送指示分配了缓冲器并且目标方302准备好接收数据的XFR_RDY消息。
另一方面,如果判定模块706判定对于写命令308,XFR_RDY被禁止,目标方302可简单地等待与写命令308相关的数据到达。当数据到达时,可用性模块712可判定是否至少一个缓冲器在目标方302可用于接收所述数据。如果没有缓冲器可用,当从发起方300接收到所述数据时,放弃模块714可放弃该数据。如果至少一个缓冲器可用,处理模块716可通过把与命令308相关的数据写入所述至少一个缓冲器中,来处理写命令308。响应模块718随后可把指示写操作的结果的状态310发送给发起方300。响应模块718可在状态310中包括指示在完成写操作之后,在目标方302仍然可用的缓冲器的数目的信息。
附图中的流程图和方框图图解说明按照本发明的各个实施例的系统、方法和计算机可用介质的各种可能实现的体系结构、功能和操 作。在这方面,流程图或方框图中的每个方框可代表包含实现指定逻辑功能的一个或多个可执行指令的模块、程序段或一部分代码。另外应注意,在一些备选实现中,在方框中表示的功能可不按照附图中所示的顺序发生。例如,接连表示的两个方框事实上可以基本同时地执行,或者各个块有时可按照相反的顺序执行,取决于所涉及的功能。另外要注意,方框图和/或流程图中的每个方框,以及方框图和/或流程图中的各个方框的组合可用实现指定功能或动作的基于专用硬件的系统,或者专用硬件和计算机指令的组合来实现。
Claims (13)
1.一种动态允许和禁止XFR_RDY的方法,所述方法包括:
在目标方接收写命令;
判定对于所述写命令,XFR_RDY是否被禁止;
如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;
如果至少一个缓冲器可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器来处理所述写命令;和
返回用于指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
2.按照权利要求1所述的方法,还包括如果所述至少一个缓冲器不可用,在目标方放弃与所述写命令相关的数据。
3.按照权利要求2所述的方法,其中所述在目标方放弃与所述写命令相关的数据还包括:
返回指示所述写命令失败;以及
在XFR_RDY被允许的情况下,重新驱动所述写命令的状态。
4.按照任意前述权利要求所述的方法,其中所述返回用于指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息还包括把所述信息传送给写命令的发起方。
5.按照权利要求4所述的方法,其中在向目标方传送XFR_RDY被禁止的另一个写命令之前,发起方判定在目标方仍然可用的缓冲器的数目是否大于发起方具有的与目标方的未决写命令的数目。
6.按照权利要求5所述的方法,其中发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被禁止的另一个写命令。
7.按照权利要求5所述的方法,其中发起方被配置成如果发起方判定在目标方仍然可用的缓冲器的数目不大于发起方具有的与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。
8.一种动态允许和禁止XFR_RDY的系统,所述系统包括:
传送写命令的发起方;
接收所述写命令,并判定对于所述写命令XFR_RDY是否被禁止的目标方;
目标方还被配置成如果XFR_RDY被禁止,判定是否至少一个缓冲器在目标方可用;
目标方还被配置成如果至少一个缓冲器在目标方可用,通过把与所述写命令相关的数据写入所述至少一个缓冲器来处理所述写命令;并且
目标方还被配置成向发起方返回用于指示在完成所述写命令之后,在目标方仍然可用的缓冲器的数目的信息。
9.按照权利要求8所述的系统,其中目标方还被配置成如果至少一个缓冲器不可用,放弃与所述写命令相关的数据。
10.按照权利要求9所述的系统,其中目标方还被配置成如果数据被放弃,返回指示所述写命令失败以及应在XFR_RDY被允许的情况下重新驱动所述写命令的状态。
11.按照权利要8-10中任意之一所述的系统,其中发起方还被配置成在向目标方传送XFR_RDY被禁止的另一个写命令之前,判定在目标方仍然可用的缓冲器的数目是否大于与目标方的未决写命令的数目。
12.按照权利要求11所述的系统,其中发起方还被配置成如果在目标方仍然可用的缓冲器的数目大于与目标方的未决写命令的数目,把XFR_RDY被禁止的另一个写命令传送给目标方。
13.按照权利要求11所述的系统,其中发起方还被配置成如果在目标方仍然可用的缓冲器的数目不大于与目标方的未决写命令的数目,传送XFR_RDY被允许的写命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/914,024 | 2010-10-28 | ||
US12/914,024 US8732357B2 (en) | 2010-10-28 | 2010-10-28 | Apparatus and method for dynamically enabling and disabling write XFR—RDY |
PCT/EP2011/067866 WO2012055705A1 (en) | 2010-10-28 | 2011-10-13 | Dynamically enabling and disabling write xfr_rdy |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103180840A CN103180840A (zh) | 2013-06-26 |
CN103180840B true CN103180840B (zh) | 2015-05-20 |
Family
ID=44800040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180051735.1A Active CN103180840B (zh) | 2010-10-28 | 2011-10-13 | 动态允许和禁止写xfr_rdy的方法和系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8732357B2 (zh) |
EP (1) | EP2633417B1 (zh) |
JP (1) | JP5308602B1 (zh) |
KR (1) | KR101507664B1 (zh) |
CN (1) | CN103180840B (zh) |
CA (1) | CA2814706C (zh) |
WO (1) | WO2012055705A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890668B2 (en) | 2008-02-14 | 2011-02-15 | International Business Machines Corporation | Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous |
US9052837B2 (en) | 2008-02-14 | 2015-06-09 | International Business Machines Corporation | Processing communication data in a ships passing condition |
JP5784299B2 (ja) * | 2010-11-01 | 2015-09-24 | オリンパス株式会社 | データ処理装置および画像処理装置 |
JP5675278B2 (ja) | 2010-11-01 | 2015-02-25 | オリンパス株式会社 | データ処理装置および画像処理装置 |
US9195626B2 (en) * | 2013-01-29 | 2015-11-24 | Emulex Corporation | Reducing write I/O latency using asynchronous Fibre Channel exchange |
US8990439B2 (en) * | 2013-05-29 | 2015-03-24 | International Business Machines Corporation | Transport mode data transfer between a channel subsystem and input/output devices |
US10209906B2 (en) | 2013-10-31 | 2019-02-19 | Hewlett Packard Enterprises Development LP | Target port processing of a data transfer |
WO2015126429A1 (en) | 2014-02-24 | 2015-08-27 | Hewlett-Packard Development Company, L.P. | Repurposable buffers for target port processing of a data transfer |
US10061734B2 (en) | 2015-05-20 | 2018-08-28 | International Business Machines Corporation | Adjustment of buffer credits and other parameters in a startup phase of communications between a plurality of channels and a control unit |
US9892065B2 (en) * | 2015-05-20 | 2018-02-13 | International Business Machines Corporation | Adjustments of buffer credits for optimizing the number of retry operations and transfer ready operations |
US9864716B2 (en) * | 2015-05-20 | 2018-01-09 | International Business Machines Corporation | Receiving buffer credits by a plurality of channels of one or more host computational devices for transmitting data to a control unit |
JP2018112883A (ja) | 2017-01-11 | 2018-07-19 | 東芝メモリ株式会社 | 半導体記憶装置 |
US11327664B1 (en) * | 2017-08-04 | 2022-05-10 | Dell Products L.P. | Fast small write forwarding with non-temporal cache memory |
US11954220B2 (en) | 2018-05-21 | 2024-04-09 | Pure Storage, Inc. | Data protection for container storage |
US10310760B1 (en) | 2018-05-21 | 2019-06-04 | Pure Storage, Inc. | Layering communication fabric protocols |
US12086431B1 (en) | 2018-05-21 | 2024-09-10 | Pure Storage, Inc. | Selective communication protocol layering for synchronous replication |
US20240039871A1 (en) * | 2022-07-29 | 2024-02-01 | Cisco Technology, Inc. | First burst emulator in a network switch |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1443322A (zh) * | 2000-06-14 | 2003-09-17 | 英特尔公司 | 存储器控制器中枢 |
CN101689157A (zh) * | 2007-04-17 | 2010-03-31 | Xmos有限公司 | 定时端口 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE390788T1 (de) * | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
US20030056000A1 (en) | 2001-07-26 | 2003-03-20 | Nishan Systems, Inc. | Transfer ready frame reordering |
JP2004171150A (ja) | 2002-11-18 | 2004-06-17 | Seiko Epson Corp | 情報処理装置及び方法、並びにプリンタシステム |
US8281084B2 (en) | 2003-01-13 | 2012-10-02 | Emlilex Design & Manufacturing Corp. | Method and interface for access to memory within a first electronic device by a second electronic device |
US7613785B2 (en) * | 2003-11-20 | 2009-11-03 | International Business Machines Corporation | Decreased response time for peer-to-peer remote copy write operation |
US20050192967A1 (en) | 2004-03-01 | 2005-09-01 | Cisco Technology, Inc. | Apparatus and method for performing fast fibre channel write operations over relatively high latency networks |
JP2005267502A (ja) | 2004-03-22 | 2005-09-29 | Hitachi Ltd | データ転送用スイッチ |
US7484058B2 (en) * | 2004-04-28 | 2009-01-27 | Emc Corporation | Reactive deadlock management in storage area networks |
US20060004935A1 (en) * | 2004-06-30 | 2006-01-05 | Pak-Lung Seto | Multi-protocol bridge |
US20070147233A1 (en) * | 2005-12-23 | 2007-06-28 | Tolga Asveren | Graceful failover mechanism for SSCOP service access point for SS7 links |
US7890655B2 (en) | 2006-02-16 | 2011-02-15 | Cisco Technology, Inc. | Storage area network port based data transfer acceleration |
US7502873B2 (en) | 2006-10-10 | 2009-03-10 | International Business Machines Corporation | Facilitating access to status and measurement data associated with input/output processing |
JP4652315B2 (ja) | 2006-11-22 | 2011-03-16 | エヌイーシーコンピュータテクノ株式会社 | ディスク装置、データ転送システム及びそれに用いるデータ転送方法 |
US7941570B2 (en) | 2008-02-14 | 2011-05-10 | International Business Machines Corporation | Bi-directional data transfer within a single I/O operation |
US8196149B2 (en) | 2008-02-14 | 2012-06-05 | International Business Machines Corporation | Processing of data to determine compatability in an input/output processing system |
US8108570B2 (en) | 2008-02-14 | 2012-01-31 | International Business Machines Corporation | Determining the state of an I/O operation |
US8055807B2 (en) | 2008-07-31 | 2011-11-08 | International Business Machines Corporation | Transport control channel program chain linking including determining sequence order |
JP2010039873A (ja) | 2008-08-06 | 2010-02-18 | Toshiba Storage Device Corp | ストレージシステム、ストレージシステムの制御方法及び記憶装置 |
-
2010
- 2010-10-28 US US12/914,024 patent/US8732357B2/en active Active
-
2011
- 2011-10-13 JP JP2013520169A patent/JP5308602B1/ja active Active
- 2011-10-13 KR KR1020137008652A patent/KR101507664B1/ko active IP Right Grant
- 2011-10-13 CN CN201180051735.1A patent/CN103180840B/zh active Active
- 2011-10-13 EP EP11769870.4A patent/EP2633417B1/en active Active
- 2011-10-13 WO PCT/EP2011/067866 patent/WO2012055705A1/en active Application Filing
- 2011-10-13 CA CA2814706A patent/CA2814706C/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1443322A (zh) * | 2000-06-14 | 2003-09-17 | 英特尔公司 | 存储器控制器中枢 |
CN101689157A (zh) * | 2007-04-17 | 2010-03-31 | Xmos有限公司 | 定时端口 |
Also Published As
Publication number | Publication date |
---|---|
US8732357B2 (en) | 2014-05-20 |
JP5308602B1 (ja) | 2013-10-09 |
CA2814706C (en) | 2018-09-04 |
KR20130127974A (ko) | 2013-11-25 |
CN103180840A (zh) | 2013-06-26 |
US20120110222A1 (en) | 2012-05-03 |
KR101507664B1 (ko) | 2015-04-01 |
CA2814706A1 (en) | 2012-05-03 |
JP2013538389A (ja) | 2013-10-10 |
WO2012055705A1 (en) | 2012-05-03 |
EP2633417B1 (en) | 2014-08-20 |
EP2633417A1 (en) | 2013-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103180840B (zh) | 动态允许和禁止写xfr_rdy的方法和系统 | |
CN105573839B (zh) | 用于端口选择的基于成本的负载平衡的方法和装置 | |
EP2474916B1 (en) | Device identifier selection | |
US6948036B2 (en) | System and method for providing multi-initiator capability to an ATA drive | |
US8639898B2 (en) | Storage apparatus and data copy method | |
US9213500B2 (en) | Data processing method and device | |
US6820172B2 (en) | Method, system, and program for processing input/output (I/O) requests to a storage space having a plurality of storage devices | |
US20090182960A1 (en) | Using multiple sidefiles to buffer writes to primary storage volumes to transfer to corresponding secondary storage volumes in a mirror relationship | |
WO2016101287A1 (zh) | 一种存储系统数据分发的方法、分发装置与存储系统 | |
US10678437B2 (en) | Method and device for managing input/output (I/O) of storage device | |
CN101131625A (zh) | 存储子系统、主计算机、存储系统、负载均衡方法和程序 | |
US20120233399A1 (en) | Storage apparatus and method of controlling the same | |
JP5226810B2 (ja) | 論理パス・リソースを動的に管理する方法、装置、システム、及びコンピュータ・プログラム | |
US8909864B2 (en) | Multicast write commands | |
US8769162B2 (en) | Multiple path load distribution for host communication with a tape storage device | |
US20110252176A1 (en) | Storage system mounted with plurality of processors | |
JP2015161999A (ja) | ストレージ装置,制御装置及び制御プログラム | |
CN112783684A (zh) | 一种校验数据计算方法及装置 | |
US8817592B2 (en) | Storage device and storage device control method | |
CN102495815B (zh) | I/o数据访问中断的处理方法和系统以及设备 | |
US9876874B2 (en) | Network selecting apparatus and operating method thereof | |
US20200110542A1 (en) | DYNAMIC I/O LOAD BALANCING FOR zHYPERLINK | |
CN104243197A (zh) | 数据传输方法、系统及虚拟存储网关 | |
CN114063892B (zh) | 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 | |
CN103500074B (zh) | 一种硬盘访问方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |