From 64c27f807cd4fc1ec89e450f000aa02cf54d92e0 Mon Sep 17 00:00:00 2001 From: Gollu Appalanaidu Date: Sat, 23 Jan 2021 23:48:44 +0530 Subject: [PATCH] nvme: device self test cdw10 specific fields Signed-off-by: Gollu Appalanaidu --- nvme-ioctl.c | 4 ++-- nvme-ioctl.h | 2 +- nvme.c | 16 +++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/nvme-ioctl.c b/nvme-ioctl.c index a99d4909..120b9ffe 100644 --- a/nvme-ioctl.c +++ b/nvme-ioctl.c @@ -951,12 +951,12 @@ int nvme_sanitize(int fd, __u8 sanact, __u8 ause, __u8 owpass, __u8 oipbp, 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); diff --git a/nvme-ioctl.h b/nvme-ioctl.h index 23c657fe..e60d95fe 100644 --- a/nvme-ioctl.h +++ b/nvme-ioctl.h @@ -166,7 +166,7 @@ int nvme_set_property(int fd, int offset, uint64_t value); 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); diff --git a/nvme.c b/nvme.c index d1ef6e94..700c7bb7 100644 --- a/nvme.c +++ b/nvme.c @@ -2239,17 +2239,17 @@ static int device_self_test(int argc, char **argv, struct command *cmd, struct p 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() }; @@ -2257,12 +2257,14 @@ static int device_self_test(int argc, char **argv, struct command *cmd, struct p 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 -- 2.50.1