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;
