我正在研究nvme-cli的测试工具(用c编写,可以在linux上运行)。
对于SSD验证目的,我实际上是在寻找一个自定义命令(例如I / O命令,写入然后再读取它,最后比较两个数据是否相同)
对于读取,使用ioctl()
函数,如下面的代码所示。
struct nvme_user_io io = {
.opcode = opcode,
.flags = 0,
.control = control,
.nblocks = nblocks,
.rsvd = 0,
.metadata = (__u64)(uintptr_t) metadata,
.addr = (__u64)(uintptr_t) data,
.slba = slba,
.dsmgmt = dsmgmt,
.reftag = reftag,
.appmask = appmask,
.apptag = apptag,
};
err = ioctl(fd, NVME_IOCTL_SUBMIT_IO, &io);
我是否可以确切地控制执行,以便理解读取。
此外,我想要另一个看起来像
的命令 err = ioctl(fd,NVME_IOCTL_WRITE_AND_COMPARE_IO, &io);
这样我就可以在内部进行写操作,然后读取相同的位置,最后比较两个数据,以确保磁盘只包含我想写的数据。
由于我是这个nvme / ioctl()的新手,如果有任何错误请指正。
答案 0 :(得分:0)
nvme_io()是一个主命令处理程序,它接受您要发送到设备的NVMe操作码作为参数。根据标准,您有用于读取,写入和比较的单独命令(操作码)。您可以单独发送这些命令,也可以添加特定于供应商的命令来计算您需要的命令。