nvme: print a warning for when listing active namespaces fails
authorMinwoo Im <minwoo.im.dev@gmail.com>
Mon, 30 Nov 2020 12:47:47 +0000 (21:47 +0900)
committerChristoph Hellwig <hch@lst.de>
Tue, 1 Dec 2020 19:36:37 +0000 (20:36 +0100)
During the scan_work, an Identify command is issued to figure out which
namespaces are active.  If this command fails, the nvme driver falls back
to scanning namespaces sequentially.  In this situation, we don't see
any warnings and don't even know whether list-ns command has been failed
or not easiliy.

Printa warning when the Identify command executin fail:

[    1.108399] nvme nvme0: Identify NS List failed (status=0x400b)
[    1.109583] nvme0n1: detected capacity change from 0 to 1048576
[    1.112186] nvme nvme0: Identify Descriptors failed (nsid=2, status=0x4002)
[    1.113929] nvme nvme0: Identify Descriptors failed (nsid=3, status=0x4002)
[    1.116537] nvme nvme0: Identify Descriptors failed (nsid=4, status=0x4002)
...

Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/core.c

index 73c6684..279f4ae 100644 (file)
@@ -4110,8 +4110,11 @@ static int nvme_scan_ns_list(struct nvme_ctrl *ctrl)
 
                ret = nvme_submit_sync_cmd(ctrl->admin_q, &cmd, ns_list,
                                            NVME_IDENTIFY_DATA_SIZE);
-               if (ret)
+               if (ret) {
+                       dev_warn(ctrl->device,
+                               "Identify NS List failed (status=0x%x)\n", ret);
                        goto free;
+               }
 
                for (i = 0; i < nr_entries; i++) {
                        u32 nsid = le32_to_cpu(ns_list[i]);