]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: fix error path if write() fails in get_telemetry_log()
authorMaurizio Lombardi <mlombard@redhat.com>
Mon, 22 Apr 2024 09:47:33 +0000 (11:47 +0200)
committerDaniel Wagner <wagi@monom.org>
Tue, 30 Apr 2024 09:24:07 +0000 (11:24 +0200)
Print an error message and return the error code to the caller.

Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
nvme.c

diff --git a/nvme.c b/nvme.c
index 25a30d37d680b65b0e9dd78df3f460da4f83ddba..4a65c4b7c71825c818c2c88d05d34999c29bf16c 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -913,7 +913,9 @@ static int get_telemetry_log(int argc, char **argv, struct command *cmd,
        while (data_remaining) {
                data_written = write(output, data_ptr, data_remaining);
                if (data_written < 0) {
-                       data_remaining = data_written;
+                       err = -errno;
+                       nvme_show_error("ERROR: %s: : write failed with error : %s",
+                                       __func__, strerror(errno));
                        break;
                } else if (data_written <= data_remaining) {
                        data_remaining -= data_written;
@@ -922,6 +924,7 @@ static int get_telemetry_log(int argc, char **argv, struct command *cmd,
                        /* Unexpected overwrite */
                        fprintf(stderr, "Failure: Unexpected telemetry log overwrite - data_remaining = 0x%x, data_written = 0x%x\n",
                                        data_remaining, data_written);
+                       err = -1;
                        break;
                }
        }