]> www.infradead.org Git - users/hch/nvme-cli.git/commitdiff
nvme-cli: Add 'transport type' error to the error log
authorRevanth Rajashekar <revanth.rajashekar@intel.com>
Mon, 30 Sep 2019 23:40:18 +0000 (17:40 -0600)
committerRevanth Rajashekar <revanth.rajashekar@intel.com>
Mon, 30 Sep 2019 23:42:34 +0000 (17:42 -0600)
* Update show_error_log
* Update json_error_log

Signed-off-by: Revanth Rajashekar <revanth.rajashekar@intel.com>
nvme-print.c
nvme.h

index 302ba501b7b8238c90df16fe11ea8fe0fa97f40b..8ec54e9a3d925662fe887ee9718d2f5b85d262f0 100644 (file)
@@ -1452,6 +1452,19 @@ void json_nvme_id_uuid_list(struct nvme_id_uuid_list *uuid_list)
        json_free_object(root);
 }
 
+static const char *nvme_trtype_to_string(__u8 trtype)
+{
+       switch(trtype) {
+       case 0: return "The transport type is not indicated or the error "\
+               "is not transport related.";
+       case 1: return "RDMA Transport error.";
+       case 2: return "Fibre Channel Transport error.";
+       case 3: return "TCP Transport error.";
+       case 254: return "Intra-host Transport error.";
+       default: return "Reserved";
+       };
+}
+
 void show_error_log(struct nvme_error_log_page *err_log, int entries, const char *devname)
 {
        int i;
@@ -1462,17 +1475,19 @@ void show_error_log(struct nvme_error_log_page *err_log, int entries, const char
        for (i = 0; i < entries; i++) {
                printf(" Entry[%2d]   \n", i);
                printf(".................\n");
-               printf("error_count  : %"PRIu64"\n", le64_to_cpu(err_log[i].error_count));
-               printf("sqid         : %d\n", err_log[i].sqid);
-               printf("cmdid        : %#x\n", err_log[i].cmdid);
-               printf("status_field : %#x(%s)\n", err_log[i].status_field,
+               printf("error_count     : %"PRIu64"\n", le64_to_cpu(err_log[i].error_count));
+               printf("sqid            : %d\n", err_log[i].sqid);
+               printf("cmdid           : %#x\n", err_log[i].cmdid);
+               printf("status_field    : %#x(%s)\n", err_log[i].status_field,
                        nvme_status_to_string(le16_to_cpu(err_log[i].status_field) >> 1));
-               printf("parm_err_loc : %#x\n", err_log[i].parm_error_location);
-               printf("lba          : %#"PRIx64"\n",le64_to_cpu(err_log[i].lba));
-               printf("nsid         : %#x\n", err_log[i].nsid);
-               printf("vs           : %d\n", err_log[i].vs);
-               printf("cs           : %#"PRIx64"\n",
+               printf("parm_err_loc    : %#x\n", err_log[i].parm_error_location);
+               printf("lba             : %#"PRIx64"\n",le64_to_cpu(err_log[i].lba));
+               printf("nsid            : %#x\n", err_log[i].nsid);
+               printf("vs              : %d\n", err_log[i].vs);
+               printf("trtype          : %s\n", nvme_trtype_to_string(err_log[i].trtype));
+               printf("cs              : %#"PRIx64"\n",
                       le64_to_cpu(err_log[i].cs));
+               printf("trtype_spec_info: %#x\n", err_log[i].trtype_spec_info);
                printf(".................\n");
        }
 }
@@ -3021,8 +3036,11 @@ void json_error_log(struct nvme_error_log_page *err_log, int entries, const char
                json_object_add_value_uint(error, "nsid",
                                           le32_to_cpu(err_log[i].nsid));
                json_object_add_value_int(error, "vs", err_log[i].vs);
+               json_object_add_value_int(error, "trtype", err_log[i].trtype);
                json_object_add_value_uint(error, "cs",
                                           le64_to_cpu(err_log[i].cs));
+               json_object_add_value_int(error, "trtype_spec_info",
+                                         le16_to_cpu(err_log[i].trtype_spec_info));
 
                json_array_add_value_object(errors, error);
        }
diff --git a/nvme.h b/nvme.h
index 6d745b66c339c632f31545aca9636935a853dabc..0d29c1187317790c53018db569a61b10376ba1d2 100644 (file)
--- a/nvme.h
+++ b/nvme.h
@@ -41,9 +41,11 @@ struct nvme_error_log_page {
        __le64  lba;
        __le32  nsid;
        __u8    vs;
-       __u8    resv[3];
+       __u8    trtype;
+       __u8    resv[2];
        __le64  cs;
-       __u8    resv2[24];
+       __le16  trtype_spec_info;
+       __u8    resv2[22];
 };
 
 struct nvme_firmware_log_page {