From: Hannes Reinecke Date: Fri, 16 Nov 2018 07:35:00 +0000 (+0100) Subject: nvme: print out controller state for 'list-subsys' X-Git-Tag: v1.7~28 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=381e48c239a339d9aae5a16d425e6964777af8ed;p=users%2Fsagi%2Fnvme-cli.git nvme: print out controller state for 'list-subsys' Signed-off-by: Hannes Reinecke --- diff --git a/nvme-print.c b/nvme-print.c index b7289757..5cdfabe7 100644 --- a/nvme-print.c +++ b/nvme-print.c @@ -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 f15d3723..c3295c55 100644 --- 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 32ac96d3..668c6fd8 100644 --- 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 {