From 6b792a1ff4e3f35cbc510c767f5cbacc976baf95 Mon Sep 17 00:00:00 2001 From: Maurizio Lombardi Date: Fri, 15 Jul 2022 16:20:23 +0200 Subject: [PATCH] Fix return error code for effects-log command Resolves: #2105742 Signed-off-by: Maurizio Lombardi --- ...us-error-code-for-effects-log-comman.patch | 102 ++++++++++++++++++ nvme-cli.spec | 9 +- 2 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 0001-nvme-Return-status-error-code-for-effects-log-comman.patch diff --git a/0001-nvme-Return-status-error-code-for-effects-log-comman.patch b/0001-nvme-Return-status-error-code-for-effects-log-comman.patch new file mode 100644 index 0000000..16b565c --- /dev/null +++ b/0001-nvme-Return-status-error-code-for-effects-log-comman.patch @@ -0,0 +1,102 @@ +From 43c1ac652b74182e483f2e8033a5f5fe417fb429 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +Date: Mon, 11 Jul 2022 13:39:39 +0200 +Subject: [PATCH] nvme: Return status/error code for effects-log command + +collect_effects_log eats up the return code from +nvme_get_log_cmd_effects. Forward it to the shell.. + +Fixes: 155fbebfe7b7 ("Update effects-log to handle multiple command sets") + +Signed-off-by: Daniel Wagner +--- + nvme.c | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +diff --git a/nvme.c b/nvme.c +index a2a9996a..6df08d7e 100644 +--- a/nvme.c ++++ b/nvme.c +@@ -587,18 +587,22 @@ ret: + return err; + } + +-void collect_effects_log(int fd, enum nvme_csi csi, struct list_head *list, int flags) ++static int collect_effects_log(int fd, enum nvme_csi csi, ++ struct list_head *list, int flags) + { ++ nvme_effects_log_node_t *node; + int err; +- nvme_effects_log_node_t *node = malloc(sizeof(nvme_effects_log_node_t)); ++ ++ node = malloc(sizeof(nvme_effects_log_node_t)); + if (!node) +- return; ++ return -ENOMEM; ++ + node->csi = csi; + + err = nvme_get_log_cmd_effects(fd, csi, &node->effects); + if (!err) { + list_add(list, &node->node); +- return; ++ return err; + } + else if (err > 0) + nvme_show_status(err); +@@ -606,6 +610,7 @@ void collect_effects_log(int fd, enum nvme_csi csi, struct list_head *list, int + fprintf(stderr, "effects log page: %s\n", nvme_strerror(errno)); + + free(node); ++ return err; + } + + static int get_effects_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) +@@ -676,29 +681,28 @@ static int get_effects_log(int argc, char **argv, struct command *cmd, struct pl + nvme_command_set_supported = NVME_CAP_CSS(cap) & NVME_CAP_CSS_NVM; + other_command_sets_supported = NVME_CAP_CSS(cap) & NVME_CAP_CSS_CSI; + ++ if (nvme_command_set_supported) ++ err = collect_effects_log(fd, NVME_CSI_NVM, ++ &log_pages, flags); + +- if (nvme_command_set_supported) { +- collect_effects_log(fd, NVME_CSI_NVM, &log_pages, flags); +- } +- +- if (other_command_sets_supported) { +- collect_effects_log(fd, NVME_CSI_ZNS, &log_pages, flags); +- } +- +- nvme_print_effects_log_pages(&log_pages, flags); ++ if (!err && other_command_sets_supported) ++ err = collect_effects_log(fd, NVME_CSI_ZNS, ++ &log_pages, flags); + +- } +- else { +- collect_effects_log(fd, cfg.csi, &log_pages, flags); +- nvme_print_effects_log_pages(&log_pages, flags); ++ } else { ++ err = collect_effects_log(fd, cfg.csi, &log_pages, flags); + } + ++ if (!err) ++ nvme_print_effects_log_pages(&log_pages, flags); ++ else if (err > 0) ++ nvme_show_status(err); ++ else ++ perror("effects log page"); + + close_fd: +- while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node))) { ++ while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node))) + free(node); +- } +- + close(fd); + ret: + return err; +-- +2.31.1 + diff --git a/nvme-cli.spec b/nvme-cli.spec index bb24782..cf073d2 100644 --- a/nvme-cli.spec +++ b/nvme-cli.spec @@ -3,7 +3,7 @@ Name: nvme-cli Version: 2.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: NVMe management command line interface License: GPLv2+ @@ -11,6 +11,7 @@ URL: https://github.com/linux-nvme/nvme-cli Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz #Patch0: nvme-cli-makefile-dont-install-host-params-patch +Patch0: 0001-nvme-Return-status-error-code-for-effects-log-comman.patch BuildRequires: meson >= 0.47.0 BuildRequires: gcc gcc-c++ @@ -30,7 +31,8 @@ nvme-cli provides NVM-Express user space tooling for Linux. %prep #%%setup -qn %%{name}-%%{commit0} %setup -q -#%patch0 -p1 + +%patch0 -p1 %build @@ -88,6 +90,9 @@ if [ $1 -eq 1 ] || [ $1 -eq 2 ]; then fi %changelog +* Fri Jul 15 2022 Maurizio Lombardi - 2.0-3 +- Fix BZ2105742 + * Thu Jun 16 2022 Maurizio Lombardi - 2.0-2 - Fix the gating tests