]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme-print: print new fields of nvme_id_independent_id_ns
authorFrancis Pravin <francis.p@samsung.com>
Thu, 10 Apr 2025 12:15:45 +0000 (17:45 +0530)
committerDaniel Wagner <wagi@monom.org>
Thu, 10 Apr 2025 13:09:10 +0000 (13:09 +0000)
Print new fields of I/O Command Set Independent Identify Namespace
Data Structure based on NVM Express Base Specification 2.1.

Signed-off-by: Francis Pravin <francis.p@samsung.com>
nvme-print-json.c
nvme-print-stdout.c
nvme.c

index dbb8bb785195a3660d5f0b1efe6e93b68ba8b824..f4808b85b304f3e14a075580c17f6c0ef05c681e 100644 (file)
@@ -3025,6 +3025,9 @@ static void json_nvme_cmd_set_independent_id_ns(struct nvme_id_independent_id_ns
        obj_add_int(r, "nvmsetid", le16_to_cpu(ns->nvmsetid));
        obj_add_int(r, "endgid", le16_to_cpu(ns->endgid));
        obj_add_int(r, "nstat", ns->nstat);
+       obj_add_int(r, "kpios", ns->kpios);
+       obj_add_int(r, "maxkt", le16_to_cpu(ns->maxkt));
+       obj_add_int(r, "rgrpid", le32_to_cpu(ns->rgrpid));
 
        json_print(r);
 }
index 75430be2be16907f85f6a9393b4a52b875f8fe78..13bbad803f19b4b110af61c91ac204fcd6c8ecc6 100644 (file)
@@ -2917,11 +2917,20 @@ static void stdout_cmd_set_independent_id_ns_nsfeat(__u8 nsfeat)
 
 static void stdout_cmd_set_independent_id_ns_nstat(__u8 nstat)
 {
-       __u8 rsvd1 = (nstat & 0xfe) >> 1;
+       __u8 rsvd3 = (nstat & 0xf8) >> 3;
+       __u8 ioi = (nstat & 0x6) >> 1;
        __u8 nrdy = nstat & 0x1;
 
-       if (rsvd1)
-               printf("  [7:1] : %#x\tReserved\n", rsvd1);
+       static const char * const ioi_string[] = {
+               "I/O performance degradation is not reported",
+               "Reserved",
+               "I/O performance is not currently degraded",
+               "I/O performance is currently degraded"
+       };
+
+       if (rsvd3)
+               printf("  [7:3] : %#x\tReserved\n", rsvd3);
+       printf("  [2:1] : %#x\t%s\n", ioi, ioi_string[ioi]);
        printf("  [0:0] : %#x\tName space is %sready\n",
                nrdy, nrdy ? "" : "not ");
        printf("\n");
@@ -2955,6 +2964,11 @@ static void stdout_cmd_set_independent_id_ns(struct nvme_id_independent_id_ns *n
        printf("nstat   : %#x\n", ns->nstat);
        if (human)
                stdout_cmd_set_independent_id_ns_nstat(ns->nstat);
+       printf("kpios   : %#x\n", ns->kpios);
+       if (human)
+               stdout_id_ns_kpios(ns->kpios);
+       printf("maxkt   : %#x\n", le16_to_cpu(ns->maxkt));
+       printf("rgrpid  : %#x\n", le32_to_cpu(ns->rgrpid));
 }
 
 static void stdout_id_ns_descs(void *data, unsigned int nsid)
diff --git a/nvme.c b/nvme.c
index 0d07e2a52720300394505683017f8408817a338a..636ca82ecc34fbac03ff2f8a2c2aa21d4622bc78 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -3954,7 +3954,7 @@ static int cmd_set_independent_id_ns(int argc, char **argv, struct command *cmd,
                flags |= VERBOSE;
 
        if (!cfg.namespace_id) {
-               err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
+               err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
                if (err < 0) {
                        nvme_show_perror("get-namespace-id");
                        return err;