return nvme_submit_admin_passthru(fd, &cmd);
}
-int nvme_self_test_start(int fd, __u32 nsid, __u32 cdw10)
+int nvme_self_test_start(int fd, __u32 nsid, __u8 stc)
{
struct nvme_admin_cmd cmd = {
.opcode = nvme_admin_dev_self_test,
.nsid = nsid,
- .cdw10 = cdw10,
+ .cdw10 = stc,
};
return nvme_submit_admin_passthru(fd, &cmd);
int nvme_get_property(int fd, int offset, uint64_t *value);
int nvme_sanitize(int fd, __u8 sanact, __u8 ause, __u8 owpass, __u8 oipbp,
__u8 no_dealloc, __u32 ovrpat);
-int nvme_self_test_start(int fd, __u32 nsid, __u32 cdw10);
+int nvme_self_test_start(int fd, __u32 nsid, __u8 stc);
int nvme_self_test_log(int fd, __u32 nsid, struct nvme_self_test_log *self_test_log);
int nvme_virtual_mgmt(int fd, __u32 cdw10, __u32 cdw11, __u32 *result);
struct config {
__u32 namespace_id;
- __u32 cdw10;
+ __u8 stc;
};
struct config cfg = {
.namespace_id = NVME_NSID_ALL,
- .cdw10 = 0,
+ .stc = 0,
};
OPT_ARGS(opts) = {
OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
- OPT_UINT("self-test-code", 's', &cfg.cdw10, self_test_code),
+ OPT_UINT("self-test-code", 's', &cfg.stc, self_test_code),
OPT_END()
};
if (fd < 0)
goto ret;
- err = nvme_self_test_start(fd, cfg.namespace_id, cfg.cdw10);
+ err = nvme_self_test_start(fd, cfg.namespace_id, cfg.stc);
if (!err) {
- if ((cfg.cdw10 & 0xf) == 0xf)
+ if (cfg.stc == 0xf)
printf("Aborting device self-test operation\n");
- else
- printf("Device self-test started\n");
+ else if (cfg.stc == 0x2)
+ printf("Extended Device self-test started\n");
+ else if (cfg.stc == 0x1)
+ printf("Short Device self-test started\n");
} else if (err > 0) {
nvme_show_status(err);
} else