nvme-cli常见命令分析

一、背景

nvme-cli命令常常用于获取或者设置SSD参数,比如常见的nvme list,nvme id-ctrl等,都是获取SSD的基本信息,也有nvme admin-passthru用于读取或者设置自定义命令。作为使用者,我们并不知道nvme-cli源码怎么实现的,为了探究溯源,阅读源码探究一下nvme-cli常见命令的细节。具体的nvme-cli master代码下载地址见链接。

nvme-builtin.h可以看到,可命令支持如下:

二、常见命令

2.1 nvme list

作为最简单的nvme-cli命令,以此为基础进行分析,首先进入nvme.c函数入口,这是nvme-cli命令的入口,找到nvme list命令function:

最终调用struct print_ops的成员变量,一个函数指针list_items:

而list_items在nvme-cli-master\nvme-print-stdout.c中的struct print_ops stdout_print_ops结构体进行初始化:

在nvme-cli-master\nvme-print-stdout.c找到stdout_list_items

 stdout_simple_ns里面找到stdout_list_item,最终可以查看nvme list打印信息:

从代码上可以看到,当在host终端上输入“nvme list”后,显示的数据类型有:dev_name、genname、nvme_ns_get_serial(n)、nvme_ns_get_model(n)、nvme_ns_get_nsid(n)、usage、format、nvme_ns_get_firmware(n))。

其中usage信息有两个,前一个是nuse,另一个是nsze,这都是NVME协议里面规定的位域:

这里需要注意一点:如果SSD不支持thin provisioning,那么NUSE需要等于NCAP,否则NUSE可以小于NCAP。

 2.2 nvme list_subsys

 主要是nvme_show_subsystem_list函数,

在nvme-print.h获取print_nvme_subsystem_list 

 初始化.print_nvme_subsystem_list = stdout_subsystem_list,

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682267.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序员修炼之道 07:调试

不记录,等于没读。 这里是我阅读《程序员修炼之道》这本书的记录。 软件缺陷以各种方式表现出来,从对需求的误解到编码错误。现在的计算机系统仍有局限性,能干你让它干的事情,但不一定能干你想让它干的事情。本章介绍调试中涉及的…

基于STC12C5A60S2系列1T 8051单片机实现串口调试助手软件与单片机相互发送数据的RS485通信功能

基于STC12C5A60S2系列1T 8051单片机实现串口调试助手软件与单片机相互发送数据的RS485通信功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功…

编译原理总结

编译器构成 1. 前端分析部分 1.1 词法分析 确定词性,输出为token序列 1.2 语法分析 识别短语 1.3 语义分析 分析短语在句子中的成分 IR中间代码生成 2. 机器无关代码优化 3. 后端综合部分 目标代码生成 机器相关代码优化 4. 其他 全局信息表 异常输出

SOCKS 代理 和 HTTP 代理, WebSocket

SOCKS 代理 和 HTTP 代理 的区别 SOCKS 代理 和 HTTP 代理 都是代理服务器,它们充当客户端和目标服务器之间的中介,但它们的工作方式和应用场景有所不同。 1. SOCKS 代理: 工作原理: SOCKS 代理是一种更底层的代理,…

列存在 OceanBase 数据库架构中的应用与演进

OceanBase 4.3 版本上线了列存功能,以满足实时分析的需求。 本文作为《特性解读:列存技术》的后续,将详细阐述列存技术在OceanBase数据库架构中的应用、发展历程,以及未来的趋势。 一、前言 1970 年,关系模型之父 Co…

Java物业管理系统+数据库应用程序开发[JavaSE+JDBC+idea控制台+MySQL]

背景: 使用JavaSEJDBCMySQL技术实现一个物业管理系统,具体要求如下 物业管理系统需求: 需求分析 1.1用户需求分析 在进入系统之前,要进行身份确认,只有用户名和用户密码都相符的用户方可进入本系统,为…

PCL 抛物线回归拟合(Quadratic,二维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里仍然是最小二乘法的应用,其推导过程如下所述: 1.二次函数模型: 其中,a、b 和 c 是需要确定的参数。 2.最小二乘法 假设我们有一组数据点 ( x 1 ​ , y

负压实验室设计建设方案

随着全球公共卫生事件的频发,负压实验室的设计和建设在医疗机构中的重要性日益凸显。负压实验室,特别是负压隔离病房,主要用于控制传染性疾病的扩散,保护医护人员和周围环境的安全。广州实验室装修公司中壹联凭借丰富的实验室装修…

k8s 对外服务之 Ingress(七层代理)

一 Ingress 简介 理论方面 1, k8s service 作用 对集群内部: 它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制 对集群外部: 对集群外部,他类似负载均衡器&am…

剪画小程序:AI声音克隆,只需10秒完美复制真人音色

Hello,大家好呀!我是分享声音的克隆。 想象一下,如果你能够复制自己的声音,那么您可以给视频配上自己的声 音,那是多么的有趣啊。 ​编辑 工具:小程序剪画 功能简介:支持多种端口&#xff1…

Vuforia AR篇(七)— 二维码识别

目录 前言一、什么是Barcode ?二、使用步骤三、点击二维码显示信息四、效果 前言 在数字化时代,条形码和二维码已成为连接现实世界与数字信息的重要桥梁。Vuforia作为领先的AR开发平台,提供了Barcode Scanner功能,使得在Unity中实…

【Web API DOM10】日期(时间)对象

一:实例化 1 获取系统当前时间即创建日期对象 const date new Date() console.log(date) 2024年6月5日周三 2 获取指定的时间 以获取2025年6月29日为例 const date new Date(2025-6-29) console.log(date) 二:日期对象方法 1 使用场景&#xf…

QT安装与使用

QT安装与使用 Windows QT安装 1.下载windowsQT安装包 本教程使用的QT版本是:https://download.qt.io/archive/qt/5.12/5.12.9/ 本教程的安装包放在阿里云盘供大家获取。 2.QT安装 如果没有梯子,大家登录QT官网可能会失败,这里可以不需要Q…

Qt 的 d_ptr (d-pointer) 和 q_ptr (q-pointer)解析;Q_D和Q_Q指针

篇一: Qt之q指针(Q_Q)d指针(Q_D)源码剖析---源码面前了无秘密_qtq指针-CSDN博客 通常情况下,与一个类密切相关的数据会被作为数据成员直接定义在该类中。然而,在某些场合下,我们会…

文件编码概念

文件的读取 open()函数: 打开一个已存在的文件,或者创建一个新文件 open(name,mode,encoding) name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径) mode:设置打开文件的模式(访问模式)&am…

关于信号翻转模块(sig_flag_mod)的实现

关于信号翻转模块(sig_flag_mod)的实现 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于信号翻转模块(sig_flag_mod)的实现一、引言二、实现信号翻转模块的方法(1)输入接口(2)输出接口&…

MySQL换路径(文件夹)

#MySQL作为免费数据库很受欢迎,即使公司没有使用,自己也可以用。它是一个服务,在点击CtrlAltDelete选择任务管理器后,它在服务那个归类里。 经常整理计算机磁盘分类的小伙伴,如果你们安装了MySQL,并且想移…

【相关概念】经济金融中的Momentum

张张张三丰de思考与总结: 最近做的期货价格泡沫中,一直在说,momentum,momentum,momentum,那么究竟什么是momentum呢? 目前,在有关期货价格泡沫的研究文献中,一般都是研究…

小熊家务帮day13-day14 门户管理(ES搜索,Canal+MQ同步,索引同步)

目录 1 服务搜索1.1 需求分析1.2 技术方案1.2.1 使用Elasticsearch进行全文检索(为什么数据没有那么多还要用ES?)1.2.2 索引同步方案1.2.2.1 Canal介绍1.2.2.1 Canal工作原理 1 服务搜索 1.1 需求分析 服务搜索的入口有两处: 在…

【iOS】UI学习——UITableView

UI学习(四) UITableView基础UITableView协议UITableView高级协议和单元格 UITableView基础 dateSource:数据代理对象 delegate:普通代理对象 numberOfSectionInTableView:获得组数协议 numberOfRowsInSection:获得行数协议 cellForRowAtIndexPath:创建单…