CN106598797A - 一种多路径io的故障注入方法、系统及故障管理系统 - Google Patents
一种多路径io的故障注入方法、系统及故障管理系统 Download PDFInfo
- Publication number
- CN106598797A CN106598797A CN201611169613.3A CN201611169613A CN106598797A CN 106598797 A CN106598797 A CN 106598797A CN 201611169613 A CN201611169613 A CN 201611169613A CN 106598797 A CN106598797 A CN 106598797A
- Authority
- CN
- China
- Prior art keywords
- multipath
- direct fault
- default
- fault
- mpio
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种多路径IO的故障注入方法、系统及故障管理系统,包括用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;将预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;内核态多路径IO故障注入模块依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。可见,本发明能够实现将预设的多路径IO的故障注入信息注入多路径IO,以便得到多路径IO的故障响应,为方便用户知道多路径IO故障对计算机链路IO的影响及寻找多路径IO的故障处理解决方案提供了基础。
Description
技术领域
本发明涉及多路径IO故障的技术领域,特别是涉及一种多路径IO的故障注入方法、系统及故障管理系统。
背景技术
随着科技的发展,计算机已经进入到千家万户,人们会将重要的数据存储在计算机的存储设备上。多路径IO是一项为存储设备使用多个数据路径提供支持的功能,多路径IO为服务器到存储设备之间或者集群到存储设备之间提供多个路径,从而提高了存储设备进行数据存储的可靠性。当多路径IO出现故障时,会对整个存储系统的数据存储造成巨大的影响,因此,对于多路径IO可能出现的故障进行研究具有重要的意义。
发明内容
本发明的目的是提供一种多路径IO的故障注入方法,为方便用户知道多路径IO故障对计算机链路IO的影响及寻找多路径IO的故障处理解决方案提供了基础;本发明的另一目的是提供一种多路径IO的故障注入系统及故障管理系统。
为解决上述技术问题,本发明提供了一种多路径IO的故障注入方法,包括:
用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;
将所述预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;
调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;
内核态多路径IO故障注入模块依据所述用于故障注入的write函数对所述mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。
优选地,所述获取预设的多路径IO的故障注入信息的过程具体为:
根据命令行接口选择mpio故障类型;
确定与所述mpio故障类型对应的预设的mpio故障注入文件;
对所述预设的mpio故障注入文件进行解析,得到所述预设的多路径IO的故障注入信息。
优选地,所述依据所述用于故障注入的write函数对所述mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入的过程具体为:
依据所述用于故障注入的write函数将所述mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态;
依据所述用于故障注入的write函数并利用所述预设的多路径IO的故障注入信息进行多路径IO故障注入。
为解决上述技术问题,本发明还提供了一种多路径IO的故障注入系统,包括:
用户态多路径IO故障注入模块,用于获取预设的多路径IO的故障注入信息;将所述预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;
内核态多路径IO故障注入模块,用于依据所述用于故障注入的write函数对所述mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。
优选地,所述获取预设的多路径IO的故障注入信息的过程为:
根据命令行接口选择mpio故障类型;
确定与所述mpio故障类型对应的预设的mpio故障注入文件;
对所述预设的mpio故障注入文件进行解析,得到所述预设的多路径IO的故障注入信息。
优选地,所述内核态多路径IO故障注入模块包括:
拷贝单元,用于依据所述用于故障注入的write函数将所述mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态;
注入单元,用于依据所述用于故障注入的write函数并利用所述预设的多路径IO的故障注入信息进行多路径IO故障注入。
为解决上述技术问题,本发明还提供了一种故障管理系统,包括上述所述的多路径IO的故障注入系统。
优选地,还包括:
检测模块,用于检测所述多路径IO的故障参数信息;
诊断模块,用于依据所述多路径IO的故障参数信息进行故障诊断,得到诊断结果。
优选地,还包括:
执行模块,用于依据所述诊断结果执行与所述诊断结果对应的预设的故障策略,以消除多路径IO故障。
本发明提供了一种多路径IO的故障注入方法、系统及故障管理系统,包括用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;将预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;内核态多路径IO故障注入模块依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。可见,本发明能够实现将预设的多路径IO的故障注入信息注入多路径IO,以便得到多路径IO的故障响应,为方便用户知道多路径IO故障对计算机链路IO的影响及寻找多路径IO的故障处理解决方案提供了基础。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种多路径IO的故障注入方法的过程的流程图;
图2为本发明提供的一种基于linux多路径IO故障注入工具的设计与实现框架图;
图3为本发明提供的一种多路径IO的故障注入系统的结构示意图;
图4为本发明提供的一种故障管理系统的结构示意图。
具体实施方式
本发明的核心是提供一种多路径IO的故障注入方法,为方便用户知道多路径IO故障对计算机链路IO的影响及寻找多路径IO的故障处理解决方案提供了基础;本发明的另一核心是提供一种多路径IO的故障注入系统及故障管理系统。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1和图2,其中,图1为本发明提供的一种多路径IO的故障注入方法的过程的流程图,图2为本发明提供的一种基于linux多路径IO故障注入工具的设计与实现框架图。该方法包括:
步骤S11:用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;
具体地,为了得到多路径IO的各个影响因素,可以预先的设置一些已知的故障注入信息,注入到多路径IO,得到多路径IO的故障响应,再根据多路径IO的故障响应,寻找相应的故障解决方案。
本申请中,在用户态中预设一些多路径IO的故障注入信息,用户态多路径IO故障注入模块去获取预设的多路径IO的故障注入信息。
作为优选地,获取预设的多路径IO的故障注入信息的过程具体为:
根据命令行接口选择mpio故障类型;
确定与mpio故障类型对应的预设的mpio故障注入文件;
对预设的mpio故障注入文件进行解析,得到预设的多路径IO的故障注入信息。
在用户态阶段,通过对注入参数类型mpio进行对比,指定多路径IO的注入处理流程。具体地,在命令行接口中选择mpio故障类型,每个故障类型都相应地对应一个故障注入文件,因此根据mpio故障类型确定与mpio故障类型对应的预设的mpio故障注入文件,并对预设的mpio故障注入文件进行解析,提取得到预设的多路径IO的故障注入信息。
步骤S12:将预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;
步骤S13:调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;
具体地,通过用户态中的submit函数中的write函数与内核态中的重写的write函数进行通信,完成多路径IO故障注入。这里的重写的write函数是指修改后的用于故障注入的write函数。
本申请基于用户态与内核态之间的通信实现多路径IO故障注入。另外,上述步骤S11-S13的执行主体均为用户态多路径IO故障注入模块。
步骤S14:内核态多路径IO故障注入模块依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。
作为优选地,依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入的过程具体为:
依据用于故障注入的write函数将mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态;
依据用于故障注入的write函数并利用预设的多路径IO的故障注入信息进行多路径IO故障注入。
具体地,内核态多路径IO故障注入模块首先利用用于故障注入的write函数将mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态,然后再根据重写的write函数进行多路径IO故障注入,实际原理为向内核态中的多路径文件写入故障数据错误信息,来完成多路径IO的故障注入。
下面结合实现本发明的代码框架作介绍:
其中,通过finj结构体存储故障注入数据,finj结构体:type指组件的类型,根据type类型可以判定哪个组件进行注入信息。finj_parse结构体:根据type类型进行选定哪个组件进行故障注入,然后通过parse解析函数对注入文件解析,同时使用submit函数进行故障注入执行。
另外,需要说明的是,本发明提供的多路径IO的故障注入方法是基于linux系统。
本发明提供了一种多路径IO的故障注入方法,包括用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;将预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;内核态多路径IO故障注入模块依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。可见,本发明能够实现将预设的多路径IO的故障注入信息注入多路径IO,以便得到多路径IO的故障响应,为方便用户知道多路径IO故障对计算机链路IO的影响及寻找多路径IO的故障处理解决方案提供了基础。
与上述方法实施例相适应地,本发明还提供了一种多路径IO的故障注入系统,请参照图3,图3为本发明提供的一种多路径IO的故障注入系统的结构示意图,该系统包括:
用户态多路径IO故障注入模块11,用于获取预设的多路径IO的故障注入信息;将预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;
内核态多路径IO故障注入模块12,用于依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。
作为优选地,获取预设的多路径IO的故障注入信息的过程为:
根据命令行接口选择mpio故障类型;
确定与mpio故障类型对应的预设的mpio故障注入文件;
对预设的mpio故障注入文件进行解析,得到预设的多路径IO的故障注入信息。
作为优选地,内核态多路径IO故障注入模块12包括:
拷贝单元,用于依据用于故障注入的write函数将mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态;
注入单元,用于依据用于故障注入的write函数并利用预设的多路径IO的故障注入信息进行多路径IO故障注入。
对于本发明提供的多路径IO的故障注入系统的介绍请参照上述方法实施例,本发明在此不再赘述。
本发明提供了一种多路径IO的故障注入系统,包括用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;将预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;内核态多路径IO故障注入模块依据用于故障注入的write函数对mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。可见,本发明能够实现将预设的多路径IO的故障注入信息注入多路径IO,以便得到多路径IO的故障响应,为方便用户知道多路径IO故障对计算机链路IO的影响及寻找多路径IO的故障处理解决方案提供了基础。
与上述方法及系统实施例相对应地,本发明还提供了一种故障管理系统,具体地,请参照图4,图4为本发明提供的一种故障管理系统的结构示意图,该系统包括上述的多路径IO的故障注入系统1。
作为优选地,还包括:
检测模块2,用于检测多路径IO的故障参数信息;
诊断模块3,用于依据多路径IO的故障参数信息进行故障诊断,得到诊断结果。
作为优选地,还包括:
执行模块4,用于依据诊断结果执行与诊断结果对应的预设的故障策略,以消除多路径IO故障。
具体地,故障注入系统1对多路径IO进行故障注入后,检测模块2检测得到多路径IO的故障参数信息,诊断模块3对这些故障参数信息进行分析,并进行故障诊断,得到诊断结果,如果故障管理系统中已经预先设置有相应的故障策略,则执行模块4执行与诊断结果对应的预设的故障策略,以消除多路径IO故障,如果没有,则用户可以依据这些故障参数信息或者诊断结果去寻找相应的多路径IO的故障处理解决方案。
需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种多路径IO的故障注入方法,其特征在于,包括:
用户态多路径IO故障注入模块获取预设的多路径IO的故障注入信息;
将所述预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;
调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;
内核态多路径IO故障注入模块依据所述用于故障注入的write函数对所述mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。
2.如权利要求1所述的故障注入方法,其特征在于,所述获取预设的多路径IO的故障注入信息的过程具体为:
根据命令行接口选择mpio故障类型;
确定与所述mpio故障类型对应的预设的mpio故障注入文件;
对所述预设的mpio故障注入文件进行解析,得到所述预设的多路径IO的故障注入信息。
3.如权利要求2所述的故障注入方法,其特征在于,所述依据所述用于故障注入的write函数对所述mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入的过程具体为:
依据所述用于故障注入的write函数将所述mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态;
依据所述用于故障注入的write函数并利用所述预设的多路径IO的故障注入信息进行多路径IO故障注入。
4.一种多路径IO的故障注入系统,其特征在于,包括:
用户态多路径IO故障注入模块,用于获取预设的多路径IO的故障注入信息;将所述预设的多路径IO的故障注入信息放入finj结构体中的mpio联合体中;调用submit函数中的write函数并将其与内核态中的用于故障注入的write函数进行通信;
内核态多路径IO故障注入模块,用于依据所述用于故障注入的write函数对所述mpio联合体中的预设的多路径IO的故障注入信息进行多路径IO故障注入。
5.如权利要求4所述的故障注入系统,其特征在于,所述获取预设的多路径IO的故障注入信息的过程为:
根据命令行接口选择mpio故障类型;
确定与所述mpio故障类型对应的预设的mpio故障注入文件;
对所述预设的mpio故障注入文件进行解析,得到所述预设的多路径IO的故障注入信息。
6.如权利要求5所述的故障注入系统,其特征在于,所述内核态多路径IO故障注入模块包括:
拷贝单元,用于依据所述用于故障注入的write函数将所述mpio联合体中的预设的多路径IO的故障注入信息拷贝到内核态;
注入单元,用于依据所述用于故障注入的write函数并利用所述预设的多路径IO的故障注入信息进行多路径IO故障注入。
7.一种故障管理系统,其特征在于,包括如权利要求4-6任一项所述的多路径IO的故障注入系统。
8.如权利要求7所述的故障管理系统,其特征在于,还包括:
检测模块,用于检测所述多路径IO的故障参数信息;
诊断模块,用于依据所述多路径IO的故障参数信息进行故障诊断,得到诊断结果。
9.如权利要求8所述的故障管理系统,其特征在于,还包括:
执行模块,用于依据所述诊断结果执行与所述诊断结果对应的预设的故障策略,以消除多路径IO故障。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611169613.3A CN106598797B (zh) | 2016-12-16 | 2016-12-16 | 一种多路径io的故障注入方法、系统及故障管理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611169613.3A CN106598797B (zh) | 2016-12-16 | 2016-12-16 | 一种多路径io的故障注入方法、系统及故障管理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106598797A true CN106598797A (zh) | 2017-04-26 |
CN106598797B CN106598797B (zh) | 2020-02-07 |
Family
ID=58599899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611169613.3A Active CN106598797B (zh) | 2016-12-16 | 2016-12-16 | 一种多路径io的故障注入方法、系统及故障管理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106598797B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768793A (zh) * | 2018-07-11 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种存储双活链路故障测试方法及装置 |
CN109067575A (zh) * | 2018-07-27 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种存储多路径自动化测试的方法 |
CN115729724A (zh) * | 2022-11-30 | 2023-03-03 | 中电金信软件有限公司 | 故障注入方法、故障测试系统、电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270173A (zh) * | 2011-07-21 | 2011-12-07 | 哈尔滨工业大学 | 基于scsi驱动层的故障注入工具 |
US8332505B2 (en) * | 2008-03-04 | 2012-12-11 | Lsi Corporation | Method to automatically determine host to LUN (logical unit number) path availability for multi path attached storage systems |
-
2016
- 2016-12-16 CN CN201611169613.3A patent/CN106598797B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8332505B2 (en) * | 2008-03-04 | 2012-12-11 | Lsi Corporation | Method to automatically determine host to LUN (logical unit number) path availability for multi path attached storage systems |
CN102270173A (zh) * | 2011-07-21 | 2011-12-07 | 哈尔滨工业大学 | 基于scsi驱动层的故障注入工具 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768793A (zh) * | 2018-07-11 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种存储双活链路故障测试方法及装置 |
CN108768793B (zh) * | 2018-07-11 | 2021-09-17 | 郑州云海信息技术有限公司 | 一种存储双活链路故障测试方法及装置 |
CN109067575A (zh) * | 2018-07-27 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种存储多路径自动化测试的方法 |
CN115729724A (zh) * | 2022-11-30 | 2023-03-03 | 中电金信软件有限公司 | 故障注入方法、故障测试系统、电子设备及可读存储介质 |
CN115729724B (zh) * | 2022-11-30 | 2024-05-10 | 中电金信软件有限公司 | 故障注入方法、故障测试系统、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106598797B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9734263B2 (en) | Method and apparatus for efficient pre-silicon debug | |
CN106603264A (zh) | 一种定位故障根源的方法和设备 | |
CN106598797A (zh) | 一种多路径io的故障注入方法、系统及故障管理系统 | |
CN110515830A (zh) | 操作轨迹可视化方法、装置、设备及存储介质 | |
EP3343350A1 (en) | Metadata-driven program code generation for clinical data analysis | |
WO2021036652A1 (zh) | 多角色页面跳转方法、装置、计算机设备及可读存储介质 | |
CN107451112B (zh) | 表格工具数据检查方法、装置、终端设备及存储介质 | |
CN110727603A (zh) | 一种基于ui自动化测试定位元素的改进方法 | |
CN106649125A (zh) | 创建支持多平台的自动化测试脚本的方法及其框架系统 | |
CN103678116A (zh) | 用于促进自动化程序测试的方法和系统 | |
CN104320793B (zh) | 一种手机短信自动化测试方法及系统 | |
CN109683880A (zh) | 网页交互方法、装置、设备和存储介质 | |
CN109408361A (zh) | Monkey测试复原方法、装置、电子设备及计算机可读存储介质 | |
CN106843663A (zh) | 用于页面中预跳转位置的定位方法、装置及可读存储介质 | |
CN106598799A (zh) | 一种故障注入模拟系统及故障管理系统 | |
US8341538B1 (en) | Systems and methods for reducing redundancies in quality-assurance reviews of graphical user interfaces | |
CN104571804B (zh) | 一种对跨应用程序的文档界面进行关联的方法和系统 | |
CN106776175A (zh) | 一种内存的故障管理方法、系统及故障管理系统 | |
CN106598843A (zh) | 一种基于程序分析的软件日志行为自动识别方法 | |
CN106776180A (zh) | 一种pcie故障注入方法及其装置及故障管理系统 | |
CN106445787A (zh) | 一种监控服务器核心转储文件的方法、装置及电子设备 | |
CN107748719A (zh) | 测试报告生成方法及装置 | |
CN103425558A (zh) | 一种基于测试配置表实现板卡io口测试的方法 | |
CN106776176A (zh) | 一种磁盘的故障注入方法、系统及故障管理系统 | |
EP4261732A1 (en) | Vehicle bus topological graph display method and apparatus, and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |