Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.4:Update
nvme-cli.26591
0010-nvme-Return-status-error-code-for-effects-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0010-nvme-Return-status-error-code-for-effects-log-comman.patch of Package nvme-cli.26591
From: Daniel Wagner <dwagner@suse.de> Date: Mon, 11 Jul 2022 13:39:39 +0200 Subject: nvme: Return status/error code for effects-log command Git-commit: 43c1ac652b74182e483f2e8033a5f5fe417fb429 References: git-fixes 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 <dwagner@suse.de> --- nvme.c | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) --- a/nvme.c +++ b/nvme.c @@ -583,18 +583,22 @@ static int get_endurance_log(int argc, c 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); @@ -602,6 +606,7 @@ void collect_effects_log(int fd, enum nv 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) @@ -672,29 +677,28 @@ static int get_effects_log(int argc, cha 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 (!err && other_command_sets_supported) + err = collect_effects_log(fd, NVME_CSI_ZNS, + &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); - - } - 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;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor