]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme: Change to use pci resource bar at first by show-regs command
authorTokunori Ikegami <ikegami.t@gmail.com>
Thu, 3 Nov 2022 15:56:33 +0000 (00:56 +0900)
committerDaniel Wagner <dwagner@suse.de>
Thu, 10 Nov 2022 07:20:25 +0000 (08:20 +0100)
This is to prevent to submit the unnecessary or unsupported commands to device
mentioned by the issue #1593.

Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
nvme.c

diff --git a/nvme.c b/nvme.c
index 74970649baf83e85f454f3d98bdf606852d062e7..795ba7692ccd28d8d36e0dd5facd203fe73989dd 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -4543,6 +4543,8 @@ static int nvme_get_properties(int fd, void **pbar)
                        err = 0;
                        value = -1;
                } else if (err) {
+                       fprintf(stderr, "get-property: %s\n",
+                               nvme_strerror(errno));
                        free(*pbar);
                        break;
                }
@@ -4585,15 +4587,19 @@ static void *mmap_registers(nvme_root_t r, struct nvme_dev *dev)
 
        fd = open(path, O_RDONLY);
        if (fd < 0) {
-               fprintf(stderr, "%s did not find a pci resource, open failed %s\n",
+               if (map_log_level(0, false) >= LOG_DEBUG)
+                       fprintf(stderr,
+                               "%s did not find a pci resource, open failed %s\n",
                                dev->name, strerror(errno));
                return NULL;
        }
 
        membase = mmap(NULL, getpagesize(), PROT_READ, MAP_SHARED, fd, 0);
        if (membase == MAP_FAILED) {
-               fprintf(stderr, "%s failed to map. ", dev->name);
-               fprintf(stderr, "Did your kernel enable CONFIG_IO_STRICT_DEVMEM?\n");
+               if (map_log_level(0, false) >= LOG_DEBUG) {
+                       fprintf(stderr, "%s failed to map. ", dev->name);
+                       fprintf(stderr, "Did your kernel enable CONFIG_IO_STRICT_DEVMEM?\n");
+               }
                membase = NULL;
        }
 
@@ -4610,7 +4616,7 @@ static int show_registers(int argc, char **argv, struct command *cmd, struct plu
 
        enum nvme_print_flags flags;
        struct nvme_dev *dev;
-       bool fabrics = true;
+       bool fabrics = false;
        nvme_root_t r;
        void *bar;
        int err;
@@ -4641,16 +4647,13 @@ static int show_registers(int argc, char **argv, struct command *cmd, struct plu
                goto close_dev;
        if (cfg.human_readable)
                flags |= VERBOSE;
-
-       err = nvme_get_properties(dev_fd(dev), &bar);
-       if (err) {
-               bar = mmap_registers(r, dev);
-               fabrics = false;
-               if (bar)
-                       err = 0;
+       bar = mmap_registers(r, dev);
+       if (!bar) {
+               err = nvme_get_properties(dev_fd(dev), &bar);
+               if (!bar)
+                       goto close_dev;
+               fabrics = true;
        }
-       if (!bar)
-               goto close_dev;
 
        nvme_show_ctrl_registers(bar, fabrics, flags);
        if (fabrics)