一种融合命令处理方法、系统、设备以及介质技术方案

技术编号:27366797 阅读:34 留言:0更新日期:2021-02-19 13:50
本发明专利技术公开了一种融合命令处理方法,包括以下步骤:获取队列中的命令;响应于获取到的命令是融合命令中的第一子命令,将第一子命令分配到第一缓存中;响应于获取到的命令是融合命令中的第二子命令,将第二子命令分配到第二缓存中,并建立第二子命令在第二缓存中的指针位置与对应的第一子命令在第一缓存中的指针位置之间的映射关系;处理第一缓存中的第一子命令,并在处理完第一子命令后根据对应的映射关系获取并处理对应的第二子命令。本发明专利技术还公开了一种系统、计算机设备以及可读存储介质。本发明专利技术通过建立第一子命令的指针位置和第二子命令的指针位置的一一映射关系,实现先处理第一子命令,后处理第二子命令,可以更有效的提高存储业务。提高存储业务。提高存储业务。

【技术实现步骤摘要】
一种融合命令处理方法、系统、设备以及介质


[0001]本专利技术涉及命令融合领域,具体涉及一种融合命令处理方法、系统、设备以及存储介质。

技术介绍

[0002]随着存储系统的不断发展,存储服务器的协议栈上如vSphere 7.0存储栈采用NVMe协议上更多的命令,尤其采用组合的融合命令,融合操作通过“fusing”把两个简单的命令融合一起来支持一个更复杂的命令,可以更有效的提高存储业务,如比较和写融合命令,在保证之前存储业务无问题的情况下再进行内容的更新,如果出现读取的数据与比较的数据不一致,可能之前的业务保存已经出现问题,不需要再进行IO写业务,直接返回主机错误。但是现有技术中无法提供复杂融合命令的实现机制。

技术实现思路

[0003]有鉴于此,为了克服上述问题的至少一个方面,本专利技术实施例提出一种融合命令处理方法,包括以下步骤:
[0004]获取队列中的命令;
[0005]响应于获取到的命令是融合命令中的第一子命令,将所述第一子命令分配到第一缓存中;
[0006]响应于获取到的命令是融合命令中的第二子命令,将所述第二子命令分配到第二缓存中,并建立所述第二子命令在所述第二缓存中的指针位置与对应的所述第一子命令在所述第一缓存中的指针位置之间的映射关系;
[0007]处理所述第一缓存中的第一子命令,并在处理完所述第一子命令后根据对应的映射关系获取并处理对应的所述第二子命令。
[0008]在一些实施例中,将所述第一子命令分配到第一缓存中或者将所述第二子命令分配到第二缓存中,进一步包括:
[0009]根据所述获取到的命令的标志位判断是否属于融合命令;
[0010]响应于属于融合命令,将所述获取到的命令分配到所述第一缓存或所述第二缓存中。
[0011]在一些实施例中,响应于获取到的命令是融合命令中的第二子命令,将所述第二子命令分配到第二缓存中,进一步包括:
[0012]判断所述第二子命令与所述第一缓存中对应的第一子命令所占用的LBA的范围是否相同;
[0013]响应于相同,将所述第二子命令分配到第二缓存中。
[0014]在一些实施例中,还包括:
[0015]将组合成融合命令的所述第一子命令和所述第二子命令插入所述队列中的相邻位置。
[0016]在一些实施例中,处理所述第一缓存中的第一子命令,进一步包括:
[0017]对待处理的所述第一子命令进行LBA加锁;
[0018]响应于加锁成功,处理所述待处理的第一子命令,并在处理完成后进行解锁处理。
[0019]在一些实施例中,在处理完所述第一子命令后根据对应的映射关系获取并处理对应的所述第二子命令,进一步包括:
[0020]响应于第一子命令处理失败,不再处理对应的所述第二子命令,直接返回错误返回值。
[0021]在一些实施例中,还包括:
[0022]响应于获取到的命令不是融合命令中的第一子命令或第二子命令,将命令分配到其他缓存中。
[0023]基于同一专利技术构思,根据本专利技术的另一个方面,本专利技术的实施例还提供了一种融合命令处理系统,包括:
[0024]获取模块,所述获取模块配置为获取队列中的命令;
[0025]第一分配模块,所述第一分配模块配置为响应于获取到的命令是融合命令中的第一子命令,将所述第一子命令分配到第一缓存中;
[0026]第二分配模块,所述第二分配模块配置为响应于获取到的命令是融合命令中的第二子命令,将所述第二子命令分配到第二缓存中,并建立所述第二子命令在所述第二缓存中的指针位置与对应的所述第一子命令在所述第一缓存中的指针位置之间的映射关系;
[0027]处理模块,所述处理模块配置为处理所述第一缓存中的第一子命令,并在处理完所述第一子命令后根据对应的映射关系获取并处理对应的所述第二子命令。
[0028]基于同一专利技术构思,根据本专利技术的另一个方面,本专利技术的实施例还提供了一种计算机设备,包括:
[0029]至少一个处理器;以及
[0030]存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种融合命令处理方法的步骤。
[0031]基于同一专利技术构思,根据本专利技术的另一个方面,本专利技术的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种融合命令处理方法的步骤。
[0032]本专利技术具有以下有益技术效果之一:本专利技术提供的方案通过建立第一子命令的指针位置和第二子命令的指针位置的一一映射关系,实现先处理第一子命令,后处理第二子命令,可以更有效的提高存储业务。
附图说明
[0033]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0034]图1为本专利技术的实施例提供的融合命令处理方法的流程示意图;
[0035]图2为本专利技术的实施例提供的融合命令处理方法的流程框图;
[0036]图3为本专利技术的实施例提供的融合命令处理系统的结构示意图;
[0037]图4为本专利技术的实施例提供的计算机设备的结构示意图;
[0038]图5为本专利技术的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
[0039]为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术实施例进一步详细说明。
[0040]需要说明的是,本专利技术实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本专利技术实施例的限定,后续实施例对此不再一一说明。
[0041]根据本专利技术的一个方面,本专利技术的实施例提出一种融合命令处理方法,如图1所示,其可以包括步骤:
[0042]S1,获取队列中的命令;
[0043]S2,响应于获取到的命令是融合命令中的第一子命令,将所述第一子命令分配到第一缓存中;
[0044]S3,响应于获取到的命令是融合命令中的第二子命令,将所述第二子命令分配到第二缓存中,并建立所述第二子命令在所述第二缓存中的指针位置与对应的所述第一子命令在所述第一缓存中的指针位置之间的映射关系;
[0045]S4,处理所述第一缓存中的第一子命令,并在处理完所述第一子命令后根据对应的映射关系获取并处理对应的所述第二子命令。
[0046]本专利技术提供的方案通过建立第一子命令的指针位置和第二子命令的指针位置的一一映射关系,实现先处理第一子命令,后处理第二子命令,可以更有效的提高存储业务。
[0047]在一些实施例中,将所述第一子命令分配到第一缓存中或者将所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种融合命令处理方法,其特征在于,包括以下步骤:获取队列中的命令;响应于获取到的命令是融合命令中的第一子命令,将所述第一子命令分配到第一缓存中;响应于获取到的命令是融合命令中的第二子命令,将所述第二子命令分配到第二缓存中,并建立所述第二子命令在所述第二缓存中的指针位置与对应的所述第一子命令在所述第一缓存中的指针位置之间的映射关系;处理所述第一缓存中的第一子命令,并在处理完所述第一子命令后根据对应的映射关系获取并处理对应的所述第二子命令。2.如权利要求1所述的方法,其特征在于,将所述第一子命令分配到第一缓存中或者将所述第二子命令分配到第二缓存中,进一步包括:根据所述获取到的命令的标志位判断是否属于融合命令;响应于属于融合命令,将所述获取到的命令分配到所述第一缓存或所述第二缓存中。3.如权利要求1所述的方法,其特征在于,响应于获取到的命令是融合命令中的第二子命令,将所述第二子命令分配到第二缓存中,进一步包括:判断所述第二子命令与所述第一缓存中对应的第一子命令所占用的LBA的范围是否相同;响应于相同,将所述第二子命令分配到第二缓存中。4.如权利要求1所述的方法,其特征在于,还包括:将组合成融合命令的所述第一子命令和所述第二子命令插入所述队列中的相邻位置。5.如权利要求1所述的方法,其特征在于,处理所述第一缓存中的第一子命令,进一步包括:对待处理的所述第一子命令进行LBA加锁;响应于加锁成功,处理所述待处理的第一子命令,并在处理完成后进行解锁处理。...

【专利技术属性】
技术研发人员:尹作刚
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1