]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: Fix io-passthru command read metadata output
authorTokunori Ikegami <ikegami.t@gmail.com>
Wed, 17 May 2023 16:16:41 +0000 (01:16 +0900)
committerDaniel Wagner <wagi@monom.org>
Fri, 19 May 2023 07:34:38 +0000 (09:34 +0200)
Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
nvme.c

diff --git a/nvme.c b/nvme.c
index 23737794a624b352640f1d9da51003c42824702f..5d0af3e87053a81b1700bc2aa39380591254dae0 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -8591,18 +8591,27 @@ static int passthru(int argc, char **argv, bool admin,
        } else  {
                printf("%s Command %s is Success and result: 0x%08x\n", admin ? "Admin" : "IO",
                       strcmp(cmd_name, "Unknown") ? cmd_name : "Vendor Specific", result);
-               if (cfg.read && strlen(cfg.input_file)) {
-                       if (write(dfd, (void *)data, cfg.data_len) < 0)
-                               perror("failed to write data buffer");
+               if (cfg.read) {
+                       if (strlen(cfg.input_file)) {
+                               if (write(dfd, (void *)data, cfg.data_len) < 0)
+                                       perror("failed to write data buffer");
+                       } else if (data) {
+                               if (cfg.raw_binary)
+                                       d_raw((unsigned char *)data, cfg.data_len);
+                               else if (!err)
+                                       d((unsigned char *)data, cfg.data_len, 16, 1);
+                       }
                        if (cfg.metadata_len && cfg.metadata) {
-                               if (write(mfd, (void *)mdata, cfg.metadata_len) < 0)
-                                       perror("failed to write metadata buffer");
+                               if (strlen(cfg.metadata)) {
+                                       if (write(mfd, (void *)mdata, cfg.metadata_len) < 0)
+                                               perror("failed to write metadata buffer");
+                               } else {
+                                       if (cfg.raw_binary)
+                                               d_raw((unsigned char *)mdata, cfg.metadata_len);
+                                       else if (!err)
+                                               d((unsigned char *)mdata, cfg.metadata_len, 16, 1);
+                               }
                        }
-               } else if (!cfg.raw_binary) {
-                       if (data && cfg.read && !err)
-                               d((unsigned char *)data, cfg.data_len, 16, 1);
-               } else if (data && cfg.read) {
-                       d_raw((unsigned char *)data, cfg.data_len);
                }
        }
 free_metadata: