Hello community,

here is the log from the commit of package nvme-cli for openSUSE:Factory 
checked in at 2017-06-15 11:25:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nvme-cli (Old)
 and      /work/SRC/openSUSE:Factory/.nvme-cli.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nvme-cli"

Thu Jun 15 11:25:06 2017 rev:13 rq:503609 version:1.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/nvme-cli/nvme-cli.changes        2017-05-16 
14:46:18.945345275 +0200
+++ /work/SRC/openSUSE:Factory/.nvme-cli.new/nvme-cli.changes   2017-06-15 
11:25:45.203409613 +0200
@@ -1,0 +2,8 @@
+Wed Jun 14 07:01:27 UTC 2017 - [email protected]
+
+- Add NVMe over Fabrics specific id-ctrl fields (bsc#1037293)
+  + add-missing-nvme_id_crtl-fileds.patch
+  + 0003-nvme-cli-show-more-fields-for-id-ctrl.patch
+  + 0004-nvme-cli-id-ctrl-display-additional-fields.patch
+
+-------------------------------------------------------------------

New:
----
  0003-nvme-cli-show-more-fields-for-id-ctrl.patch
  0004-nvme-cli-id-ctrl-display-additional-fields.patch
  add-missing-nvme_id_crtl-fileds.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ nvme-cli.spec ++++++
--- /var/tmp/diff_new_pack.Xu7GQJ/_old  2017-06-15 11:25:45.851318153 +0200
+++ /var/tmp/diff_new_pack.Xu7GQJ/_new  2017-06-15 11:25:45.855317588 +0200
@@ -28,6 +28,9 @@
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Patch0:         0001-fabrics-add-option-to-override-drivers-queue-depth.patch
 Patch1:         0002-fabrics-add-option-to-override-drivers-queue-depth-a.patch
+Patch2:         add-missing-nvme_id_crtl-fileds.patch
+Patch3:         0003-nvme-cli-show-more-fields-for-id-ctrl.patch
+Patch4:         0004-nvme-cli-id-ctrl-display-additional-fields.patch
 
 %description
 NVMe is a fast, scalable, direct attached storage interface. The nvme
@@ -37,6 +40,9 @@
 %setup -q -n %{name}-v%{version}
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 
 %build
 echo %{version} > version

++++++ 0003-nvme-cli-show-more-fields-for-id-ctrl.patch ++++++
>From 176ce81b8d3784a72a2d95888ce4a6f3e205e6e6 Mon Sep 17 00:00:00 2001
From: Guan Junxiong <[email protected]>
Date: Fri, 2 Jun 2017 15:18:19 +0800
Subject: nvme-cli: show more fields for id-ctrl
Git-commit: 176ce81b8d3784a72a2d95888ce4a6f3e205e6e6
Patch-mainline: v1.4

NVMe 1.3 inctrodues new fields such as EDSTT, DSTO, FWUG, HCTMA, MNTMT,
MXTMT, SANICAP into the idenfity controller data structure. The id-ctrl
command should print them or write them into json format. Note that
although KAS field is included in the previous NVMe 1.2.1 spec, this
patch also supports this field.

Reviewed-by: Sagi Grimberg <[email protected]>
Signed-off-by: Keith Busch <[email protected]>
---
 nvme-print.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/nvme-print.c b/nvme-print.c
index 60fe119..ffa63ad 100644
--- a/nvme-print.c
+++ b/nvme-print.c
@@ -198,6 +198,38 @@ static void show_nvme_id_ctrl_rpmbs(__le32 ctrl_rpmbs)
        printf("\n");
 }
 
+static void show_nvme_id_ctrl_hctma(__le16 ctrl_hctma)
+{
+       __u16 hctma = le16_to_cpu(ctrl_hctma);
+       __u16 rsvd = (hctma & 0xFFFE) >> 1;
+       __u16 hctm = hctma & 0x1;
+
+       if (rsvd)
+               printf(" [15:1] : %#x\tReserved\n", rsvd);
+       printf("  [0:0] : %#x\tHost Controlled Thermal Management 
%sSupported\n",
+               hctm, hctm ? "" : "Not ");
+       printf("\n");
+}
+
+static void show_nvme_id_ctrl_sanicap(__le32 ctrl_sanicap)
+{
+       __u32 sanicap = le32_to_cpu(ctrl_sanicap);
+       __u32 rsvd = (sanicap & 0xFFFFFFF8) >> 3;
+       __u32 owr = (sanicap & 0x4) >> 2;
+       __u32 ber = (sanicap & 0x2) >> 1;
+       __u32 cer = sanicap & 0x1;
+
+       if (rsvd)
+               printf(" [31:3] : %#x\tReserved\n", rsvd);
+       printf("  [2:2] : %#x\tOverwrite Sanitize Operation %sSupported\n",
+               owr, owr ? "" : "Not ");
+       printf("  [1:1] : %#x\tBlock Erase Sanitize Operation %sSupported\n",
+               ber, ber ? "" : "Not ");
+       printf("  [0:0] : %#x\tCrypto Erase Sanitize Operation %sSupported\n",
+               cer, cer ? "" : "Not ");
+       printf("\n");
+}
+
 static void show_nvme_id_ctrl_sqes(__u8 sqes)
 {
        __u8 msqes = (sqes & 0xF0) >> 4;
@@ -643,6 +675,18 @@ void __show_nvme_id_ctrl(struct nvme_id_ctrl *ctrl, 
unsigned int mode, void (*ve
        printf("rpmbs   : %#x\n", le32_to_cpu(ctrl->rpmbs));
        if (human)
                show_nvme_id_ctrl_rpmbs(ctrl->rpmbs);
+       printf("edstt   : %d\n", le16_to_cpu(ctrl->edstt));
+       printf("dsto    : %d\n", ctrl->dsto);
+       printf("fwug    : %d\n", ctrl->fwug);
+       printf("kas     : %d\n", le16_to_cpu(ctrl->kas));
+       printf("hctma   : %#x\n", le16_to_cpu(ctrl->hctma));
+       if (human)
+               show_nvme_id_ctrl_hctma(ctrl->hctma);
+       printf("mntmt   : %d\n", le16_to_cpu(ctrl->mntmt));
+       printf("mxtmt   : %d\n", le16_to_cpu(ctrl->mxtmt));
+       printf("sanicap : %#x\n", le32_to_cpu(ctrl->sanicap));
+       if (human)
+               show_nvme_id_ctrl_sanicap(ctrl->sanicap);
        printf("sqes    : %#x\n", ctrl->sqes);
        if (human)
                show_nvme_id_ctrl_sqes(ctrl->sqes);
@@ -1269,6 +1313,14 @@ void json_nvme_id_ctrl(struct nvme_id_ctrl *ctrl, 
unsigned int mode, void (*vs)(
        json_object_add_value_float(root, "tnvmcap", tnvmcap);
        json_object_add_value_float(root, "unvmcap", unvmcap);
        json_object_add_value_int(root, "rpmbs", le32_to_cpu(ctrl->rpmbs));
+       json_object_add_value_int(root, "edstt", le16_to_cpu(ctrl->edstt));
+       json_object_add_value_int(root, "dsto", ctrl->dsto);
+       json_object_add_value_int(root, "fwug", ctrl->fwug);
+       json_object_add_value_int(root, "kas", le16_to_cpu(ctrl->kas));
+       json_object_add_value_int(root, "hctma", le16_to_cpu(ctrl->hctma));
+       json_object_add_value_int(root, "mntmt", le16_to_cpu(ctrl->mntmt));
+       json_object_add_value_int(root, "mxtmt", le16_to_cpu(ctrl->mxtmt));
+       json_object_add_value_int(root, "sanicap", le32_to_cpu(ctrl->sanicap));
        json_object_add_value_int(root, "sqes", ctrl->sqes);
        json_object_add_value_int(root, "cqes", ctrl->cqes);
        json_object_add_value_int(root, "nn", le32_to_cpu(ctrl->nn));
++++++ 0004-nvme-cli-id-ctrl-display-additional-fields.patch ++++++
>From 05b094b4e8af7dd5298b4d8e0903d6b85c1fd045 Mon Sep 17 00:00:00 2001
From: "Schremmer, Steven" <[email protected]>
Date: Wed, 7 Jun 2017 21:24:26 +0000
Subject: [PATCH] nvme-cli: id-ctrl: display additional fields
Patch-mainline: v1.4
Git-commit: 05b094b4e8af7dd5298b4d8e0903d6b85c1fd045

Additional fields displayed: ctratt, maxcmd, ioccsz, iorcsz, icdoff,
ctrattr, msdbd
Additional human-readable decode for lpa and sgls fields.

Signed-off-by: Keith Busch <[email protected]>
---
 nvme-print.c |   62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 57 insertions(+), 5 deletions(-)

--- a/nvme-print.c
+++ b/nvme-print.c
@@ -106,6 +106,19 @@ static void show_nvme_id_ctrl_oaes(__le3
        printf("\n");
 }
 
+static void show_nvme_id_ctrl_ctratt(__le32 ctrl_ctratt)
+{
+       __u32 ctratt = le32_to_cpu(ctrl_ctratt);
+       __u32 rsvd0 = (ctratt & 0xFFFFFFFE) >> 1;
+       __u32 hostid128 = ctratt & 0x1;
+
+       if (rsvd0)
+               printf(" [31:1] : %#x\tReserved\n", rsvd0);
+       printf("  [0:0] : %#x\t128-bit Host Identifier %sSupported\n",
+               hostid128, hostid128 ? "" : "Not ");
+       printf("\n");
+}
+
 static void show_nvme_id_ctrl_oacs(__le16 ctrl_oacs)
 {
        __u16 oacs = le16_to_cpu(ctrl_oacs);
@@ -146,11 +159,14 @@ static void show_nvme_id_ctrl_frmw(__u8
 
 static void show_nvme_id_ctrl_lpa(__u8 lpa)
 {
-       __u8 rsvd = (lpa & 0xFC) >> 2;
+       __u8 rsvd = (lpa & 0xF8) >> 3;
+       __u8 ed = (lpa & 0x4) >> 2;
        __u8 celp = (lpa & 0x2) >> 1;
        __u8 smlp = lpa & 0x1;
        if (rsvd)
-               printf("  [7:2] : %#x\tReserved\n", rsvd);
+               printf("  [7:3] : %#x\tReserved\n", rsvd);
+       printf("  [2:2] : %#x\tExtended data for Get Log Page %sSupported\n",
+               ed, ed ? "" : "Not ");
        printf("  [1:1] : %#x\tCommand Effects Log Page %sSupported\n",
                celp, celp ? "" : "Not ");
        printf("  [0:0] : %#x\tSMART/Health Log Page per NS %sSupported\n",
@@ -335,7 +351,9 @@ static void show_nvme_id_ctrl_sgls(__le3
        __u32 sglltb = (sgls & 0x40000) >> 18;
        __u32 bacmdb = (sgls & 0x20000) >> 17;
        __u32 bbs = (sgls & 0x10000) >> 16;
-       __u32 rsvd1 = (sgls & 0xFFFE) >> 1;
+       __u32 rsvd1 = (sgls & 0xFFF8) >> 3;
+       __u32 key = (sgls & 0x4) >> 2;
+       __u32 rsvd2 = (sgls & 0x2) >> 1;
        __u32 sglsp = sgls & 0x1;
 
        if (rsvd0)
@@ -350,12 +368,28 @@ static void show_nvme_id_ctrl_sgls(__le3
                printf(" [16:16]: %#x\tSGL Bit-Bucket %sSupported\n",
                        bbs, bbs ? "" : "Not ");
        if (rsvd1)
-               printf(" [15:1] : %#x\tReserved\n", rsvd1);
+               printf(" [15:3] : %#x\tReserved\n", rsvd1);
+       if (sglsp || (!sglsp && key))
+               printf(" [16:16]: %#x\tKeyed SGL Data Block descriptor 
%sSupported\n",
+                       key, key ? "" : "Not ");
+       if (rsvd2)
+               printf(" [1:1] : %#x\tReserved\n", rsvd2);
        printf("  [0:0] : %#x\tScatter-Gather Lists %sSupported\n",
                sglsp, sglsp ? "" : "Not ");
        printf("\n");
 }
 
+static void show_nvme_id_ctrl_ctrattr(__u8 ctrattr)
+{
+       __u8 rsvd = (ctrattr & 0xFE) >> 1;
+       __u8 scm = ctrattr & 0x1;
+       if (rsvd)
+               printf("  [7:1] : %#x\tReserved\n", rsvd);
+       printf("  [0:0] : %#x\t%s Controller Model\n",
+               scm, scm ? "Static" : "Dynamic");
+       printf("\n");
+}
+
 static void show_nvme_id_ns_nsfeat(__u8 nsfeat)
 {
        __u8 rsvd = (nsfeat & 0xF8) >> 3;
@@ -645,6 +679,9 @@ void __show_nvme_id_ctrl(struct nvme_id_
        printf("oaes    : %#x\n", le32_to_cpu(ctrl->oaes));
        if (human)
                show_nvme_id_ctrl_oaes(ctrl->oaes);
+       printf("ctratt  : %#x\n", le32_to_cpu(ctrl->ctratt));
+       if (human)
+               show_nvme_id_ctrl_ctratt(ctrl->ctratt);
        printf("oacs    : %#x\n", le16_to_cpu(ctrl->oacs));
        if (human)
                show_nvme_id_ctrl_oacs(ctrl->oacs);
@@ -692,6 +729,7 @@ void __show_nvme_id_ctrl(struct nvme_id_
        printf("cqes    : %#x\n", ctrl->cqes);
        if (human)
                show_nvme_id_ctrl_cqes(ctrl->cqes);
+       printf("maxcmd  : %d\n", le16_to_cpu(ctrl->maxcmd));
        printf("nn      : %d\n", le32_to_cpu(ctrl->nn));
        printf("oncs    : %#x\n", le16_to_cpu(ctrl->oncs));
        if (human)
@@ -714,8 +752,14 @@ void __show_nvme_id_ctrl(struct nvme_id_
        printf("sgls    : %x\n", le32_to_cpu(ctrl->sgls));
        if (human)
                show_nvme_id_ctrl_sgls(ctrl->sgls);
-
        printf("subnqn  : %-.*s\n", (int)sizeof(ctrl->subnqn), ctrl->subnqn);
+       printf("ioccsz  : %d\n", le32_to_cpu(ctrl->ioccsz));
+       printf("iorcsz  : %d\n", le32_to_cpu(ctrl->iorcsz));
+       printf("icdoff  : %d\n", le16_to_cpu(ctrl->icdoff));
+       printf("ctrattr : %x\n", ctrl->ctrattr);
+       if (human)
+               show_nvme_id_ctrl_ctrattr(ctrl->ctrattr);
+       printf("msdbd   : %d\n", ctrl->msdbd);
 
        show_nvme_id_ctrl_power(ctrl);
        if (vendor_show)
@@ -1294,6 +1338,7 @@ void json_nvme_id_ctrl(struct nvme_id_ct
        json_object_add_value_int(root, "rtd3r", le32_to_cpu(ctrl->rtd3r));
        json_object_add_value_int(root, "rtd3e", le32_to_cpu(ctrl->rtd3e));
        json_object_add_value_int(root, "oaes", le32_to_cpu(ctrl->oaes));
+       json_object_add_value_int(root, "ctratt", le32_to_cpu(ctrl->ctratt));
        json_object_add_value_int(root, "oacs", le16_to_cpu(ctrl->oacs));
        json_object_add_value_int(root, "acl", ctrl->acl);
        json_object_add_value_int(root, "aerl", ctrl->aerl);
@@ -1321,6 +1366,7 @@ void json_nvme_id_ctrl(struct nvme_id_ct
        json_object_add_value_int(root, "sanicap", le32_to_cpu(ctrl->sanicap));
        json_object_add_value_int(root, "sqes", ctrl->sqes);
        json_object_add_value_int(root, "cqes", ctrl->cqes);
+       json_object_add_value_int(root, "maxcmd", le16_to_cpu(ctrl->maxcmd));
        json_object_add_value_int(root, "nn", le32_to_cpu(ctrl->nn));
        json_object_add_value_int(root, "oncs", le16_to_cpu(ctrl->oncs));
        json_object_add_value_int(root, "fuses", le16_to_cpu(ctrl->fuses));
@@ -1333,6 +1379,12 @@ void json_nvme_id_ctrl(struct nvme_id_ct
        json_object_add_value_int(root, "sgls", le32_to_cpu(ctrl->sgls));
        json_object_add_value_string(root, "subnqn", subnqn);
 
+       json_object_add_value_int(root, "ioccsz", le32_to_cpu(ctrl->ioccsz));
+       json_object_add_value_int(root, "iorcsz", le32_to_cpu(ctrl->iorcsz));
+       json_object_add_value_int(root, "icdoff", le16_to_cpu(ctrl->icdoff));
+       json_object_add_value_int(root, "ctrattr", ctrl->ctrattr);
+       json_object_add_value_int(root, "msdbd", ctrl->msdbd);
+
        psds = json_create_array();
        json_object_add_value_array(root, "psds", psds);
 
++++++ add-missing-nvme_id_crtl-fileds.patch ++++++
From: Johannes Thumshirn <[email protected]>
Subject: add missing nvme_id_ctrl fields
Date: Wed Jun 14 09:19:39 CEST 2017
Patch-mainline: Never, SUSE backport specific

Add missing fields in the nvme_id_ctrl structure introduced with NVMe
over Fabrics and needed for pretty printing NVMf information.

Signed-off-by: Johannes Thumshirn <[email protected]>
---
 linux/nvme.h |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

--- a/linux/nvme.h
+++ b/linux/nvme.h
@@ -207,9 +207,15 @@ struct nvme_id_ctrl {
        __u8                    tnvmcap[16];
        __u8                    unvmcap[16];
        __le32                  rpmbs;
-       __u8                    rsvd316[4];
+       __le16                  edstt;
+       __u8                    dsto;
+       __u8                    fwug;
        __le16                  kas;
-       __u8                    rsvd322[190];
+       __le16                  hctma;
+       __le16                  mntmt;
+       __le16                  mxtmt;
+       __le32                  sanicap;
+       __u8                    rsvd332[180];
        __u8                    sqes;
        __u8                    cqes;
        __le16                  maxcmd;

Reply via email to