NVMe: Improve error messages
authorMatthew Wilcox <matthew.r.wilcox@intel.com>
Fri, 11 Apr 2014 15:58:45 +0000 (11:58 -0400)
committerMatthew Wilcox <matthew.r.wilcox@intel.com>
Mon, 5 May 2014 14:41:25 +0000 (10:41 -0400)
Help people diagnose what is going wrong at initialisation time by
printing out which command has gone wrong and what the device returned.
Also fix the error message printed while waiting for reset.

Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>
drivers/block/nvme-core.c

index eacd64e36be36c2f241f1ae98a8c7e6deadd1042..074e9829bb0830ba0b3c163090574d7e71ada875 100644 (file)
@@ -1354,7 +1354,8 @@ static int nvme_wait_ready(struct nvme_dev *dev, u64 cap, bool enabled)
                        return -EINTR;
                if (time_after(jiffies, timeout)) {
                        dev_err(&dev->pci_dev->dev,
-                               "Device not ready; aborting initialisation\n");
+                               "Device not ready; aborting %s\n", enabled ?
+                                               "initialisation" : "reset");
                        return -ENODEV;
                }
        }
@@ -2058,8 +2059,13 @@ static int set_queue_count(struct nvme_dev *dev, int count)
 
        status = nvme_set_features(dev, NVME_FEAT_NUM_QUEUES, q_count, 0,
                                                                &result);
-       if (status)
-               return status < 0 ? -EIO : -EBUSY;
+       if (status < 0)
+               return status;
+       if (status > 0) {
+               dev_err(&dev->pci_dev->dev, "Could not set queue count (%d)\n",
+                                                                       status);
+               return -EBUSY;
+       }
        return min(result & 0xffff, result >> 16) + 1;
 }
 
@@ -2180,6 +2186,7 @@ static int nvme_dev_add(struct nvme_dev *dev)
 
        res = nvme_identify(dev, 0, 1, dma_addr);
        if (res) {
+               dev_err(&pdev->dev, "Identify Controller failed (%d)\n", res);
                res = -EIO;
                goto out;
        }