]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: device self test cdw10 specific fields
authorGollu Appalanaidu <anaidu.gollu@samsung.com>
Sat, 23 Jan 2021 18:18:44 +0000 (23:48 +0530)
committerKeith Busch <kbusch@kernel.org>
Tue, 26 Jan 2021 21:13:34 +0000 (14:13 -0700)
Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com>
nvme-ioctl.c
nvme-ioctl.h
nvme.c

index a99d4909872c327c83af4a4999e9e27c05058c2f..120b9ffe27de121414513f6d4787bb49f2817047 100644 (file)
@@ -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);
index 23c657fe07ff4028d0870feff6ae7c047d0c138c..e60d95fe029c225bf3ef124df8312740100ec025 100644 (file)
@@ -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 d1ef6e944acfca3c016cb13241b4ce801bd7376b..700c7bb733966e48e1a6c43bc82239f2cb0e549c 100644 (file)
--- 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