]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: print out controller state for 'list-subsys'
authorHannes Reinecke <hare@suse.de>
Fri, 16 Nov 2018 07:35:00 +0000 (08:35 +0100)
committerKeith Busch <keith.busch@intel.com>
Fri, 16 Nov 2018 16:36:46 +0000 (09:36 -0700)
Signed-off-by: Hannes Reinecke <hare@suse.com>
nvme-print.c
nvme.c
nvme.h

index b728975792a091d5e0a90f819bddc3e1797a51c2..5cdfabe7eb65af7bd34a4c36dc6380f64a08480b 100644 (file)
@@ -2772,9 +2772,10 @@ static void show_nvme_subsystem(struct subsys_list_item *item)
        printf("\\\n");
 
        for (i = 0; i < item->nctrls; i++) {
-               printf(" +- %s %s %s\n", item->ctrls[i].name,
+               printf(" +- %s %s %s %s\n", item->ctrls[i].name,
                                item->ctrls[i].transport,
-                               item->ctrls[i].address);
+                               item->ctrls[i].address,
+                               item->ctrls[i].state);
        }
 
 }
@@ -2820,6 +2821,8 @@ void json_print_nvme_subsystem_list(struct subsys_list_item *slist, int n)
                                        slist[i].ctrls[j].transport);
                        json_object_add_value_string(path_attrs, "Address",
                                        slist[i].ctrls[j].address);
+                       json_object_add_value_string(path_attrs, "State",
+                                       slist[i].ctrls[j].state);
                        json_array_add_value_object(paths, path_attrs);
                }
                if (j) {
diff --git a/nvme.c b/nvme.c
index f15d372389f1f53555d18c8677325ae65561b628..c3295c555a7e419bf130da062b0fd97a2db7553b 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -1363,6 +1363,7 @@ static void free_ctrl_list_item(struct ctrl_list_item *ctrls)
        free(ctrls->name);
        free(ctrls->transport);
        free(ctrls->address);
+       free(ctrls->state);
 }
 
 static int get_nvme_subsystem_info(char *name, char *path,
@@ -1416,6 +1417,14 @@ static int get_nvme_subsystem_info(char *name, char *path,
                        continue;
                }
 
+               item->ctrls[ccnt].state =
+                               get_nvme_ctrl_attr(ctrl_path, "state");
+               if (!item->ctrls[ccnt].state) {
+                       fprintf(stderr, "failed to get controller[%d] state.\n", i);
+                       free_ctrl_list_item(&item->ctrls[ccnt]);
+                       continue;
+               }
+
                ccnt++;
        }
 
diff --git a/nvme.h b/nvme.h
index 32ac96d34a28490e9ba6f98ebae92fbd51669755..668c6fd80fcd740d6fe05dc0da5db302c1c9d013 100644 (file)
--- a/nvme.h
+++ b/nvme.h
@@ -129,6 +129,7 @@ struct ctrl_list_item {
        char *name;
        char *address;
        char *transport;
+       char *state;
 };
 
 struct subsys_list_item {