[发明专利]一种屏蔽接口差异的架构及其方法及系统在审
申请号: | 202111006929.1 | 申请日: | 2021-08-30 |
公开(公告)号: | CN113721852A | 公开(公告)日: | 2021-11-30 |
发明(设计)人: | 谢若冰 | 申请(专利权)人: | 谢若冰 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F13/42 |
代理公司: | 成都鱼爪智云知识产权代理有限公司 51308 | 代理人: | 张丽 |
地址: | 438200 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 屏蔽 接口 差异 架构 及其 方法 系统 | ||
1.一种屏蔽接口差异的架构及其方法,其特征在于,包括:
业务层调用spdk_io_submit接口,内部通过spdk_thread_send_mess-age把包含业务层回调的ioctx发送到后台绑定的spdk_thread内部的无锁队列(ctx ring);
Spdk thread按照FIFO的顺序获取ctx ring中的请求,通过spdk_nv-me_ns_cmd_write/read执行IO请求提交工作,后续对应的回调函数将把已经完成的IO对应的ioctx塞入到无锁的完成事件队列event ring;
NVME controller从hardware提交队列消费新的IO请求ioctx;
NVME controller把完成的IO请求ioctx放到hardware completion queue;
Spdk thread的poller线程周期地执行spdk_nvme_qpair_process_co-mpletions操作,收割完成的IO,把hardware completion queue上的请求消费掉,并触发上面的回调函数的执行。
2.如权利要求1所述的一种屏蔽接口差异的架构及其方法,其特征在于,还包括:
业务层通过spdk_io_getevents()获取完成的io_events。
3.如权利要求2所述的一种屏蔽接口差异的架构及其方法,其特征在于,还包括:
业务层根据业务场景调用ioctx/ioevent中对应的业务层回调。
4.如权利要求1所述的一种屏蔽接口差异的架构及其方法,其特征在于,所述Spdkthread的poller线程周期地执行spdk_nvme_qpair_p_roc-ess_completions操作,收割完成的IO,把hardware completion queu-e上的请求消费掉,并触发上面的回调函数的执行包括:
根据ioctx中的参数和操作字段构造io_event,并把构造出来的io_e-vent塞到无锁的完成事件队列。
5.如权利要求2所述的一种屏蔽接口差异的架构及其方法,其特征在于,还包括:
spdk_io_getevents()以无锁的方式访问无锁的完成事件队列,按照FIFO的顺序获取io_event,通过上面ioctx和ioevent的对应关系从io_event中反向解析出io_ctx和回调函数,并且执行。
6.如权利要求5所述的一种屏蔽接口差异的架构及其方法,其特征在于,所述反向解析包括:
从io_event的data字段获取ioctx的回调函数;
从Io_event的obj字段获取ioctx;
从Io_event的res字段获取IO完成的返回值;
从Io_event的res2字段获取IO失败时的错误码。
7.如权利要求3所述的一种屏蔽接口差异的架构及其方法,其特征在于,还包括:
如果IO完成的返回值表示失败,不执行回调,返回当时的错误码;
如果IO完成的返回值表示成功,执行回调io_event-data(io_even t-obj)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于谢若冰,未经谢若冰许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111006929.1/1.html,转载请声明来源钻瓜专利网。