]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
Add all error codes from 1.2 spec
authorKeith Busch <keith.busch@intel.com>
Tue, 10 May 2016 23:46:56 +0000 (17:46 -0600)
committerKeith Busch <keith.busch@intel.com>
Wed, 11 May 2016 00:00:28 +0000 (18:00 -0600)
This adds enums and prints for all error codes. Since the names are
getting longer, all the prints have white space code shift to align
the same.

Signed-off-by: Keith Busch <keith.busch@intel.com>
linux/nvme.h
nvme-print.c
nvme.c

index 865e3e3b0971c9423415d5435a324b0eb9f8a2fe..e2546d494597e22b8fe36a6076659d3669dca350 100644 (file)
@@ -434,12 +434,23 @@ enum {
        NVME_SC_INVALID_VECTOR          = 0x108,
        NVME_SC_INVALID_LOG_PAGE        = 0x109,
        NVME_SC_INVALID_FORMAT          = 0x10a,
-       NVME_SC_FIRMWARE_NEEDS_RESET    = 0x10b,
+       NVME_SC_FW_NEEDS_CONV_RESET     = 0x10b,
        NVME_SC_INVALID_QUEUE           = 0x10c,
        NVME_SC_FEATURE_NOT_SAVEABLE    = 0x10d,
        NVME_SC_FEATURE_NOT_CHANGEABLE  = 0x10e,
        NVME_SC_FEATURE_NOT_PER_NS      = 0x10f,
-       NVME_SC_FW_NEEDS_RESET_SUBSYS   = 0x110,
+       NVME_SC_FW_NEEDS_SUBSYS_RESET   = 0x110,
+       NVME_SC_FW_NEEDS_RESET          = 0x111,
+       NVME_SC_FW_NEEDS_MAX_TIME       = 0x112,
+       NVME_SC_FW_ACIVATE_PROHIBITED   = 0x113,
+       NVME_SC_OVERLAPPING_RANGE       = 0x114,
+       NVME_SC_NS_INSUFFICENT_CAP      = 0x115,
+       NVME_SC_NS_ID_UNAVAILABLE       = 0x116,
+       NVME_SC_NS_ALREADY_ATTACHED     = 0x118,
+       NVME_SC_NS_IS_PRIVATE           = 0x119,
+       NVME_SC_NS_NOT_ATTACHED         = 0x11a,
+       NVME_SC_THIN_PROV_NOT_SUPP      = 0x11b,
+       NVME_SC_CTRL_LIST_INVALID       = 0x11c,
        NVME_SC_BAD_ATTRIBUTES          = 0x180,
        NVME_SC_INVALID_PI              = 0x181,
        NVME_SC_READ_ONLY               = 0x182,
@@ -450,6 +461,7 @@ enum {
        NVME_SC_REFTAG_CHECK            = 0x284,
        NVME_SC_COMPARE_FAILED          = 0x285,
        NVME_SC_ACCESS_DENIED           = 0x286,
+       NVME_SC_UNWRITTEN_BLOCK         = 0x287,
        NVME_SC_DNR                     = 0x4000,
 };
 
index e2421802fe27b8452373e935dfd46df3cd1c59ff..646f1daa28f44443e2fa20019afafd209a3b22cd 100644 (file)
@@ -870,42 +870,60 @@ char* nvme_select_to_string(int sel)
 char *nvme_status_to_string(__u32 status)
 {
        switch (status & 0x3ff) {
-       case NVME_SC_SUCCESS:           return "SUCCESS";
-       case NVME_SC_INVALID_OPCODE:    return "INVALID_OPCODE";
-       case NVME_SC_INVALID_FIELD:     return "INVALID_FIELD";
-       case NVME_SC_CMDID_CONFLICT:    return "CMDID_CONFLICT";
-       case NVME_SC_DATA_XFER_ERROR:   return "DATA_XFER_ERROR";
-       case NVME_SC_POWER_LOSS:        return "POWER_LOSS";
-       case NVME_SC_INTERNAL:          return "INTERNAL";
-       case NVME_SC_ABORT_REQ:         return "ABORT_REQ";
-       case NVME_SC_ABORT_QUEUE:       return "ABORT_QUEUE";
-       case NVME_SC_FUSED_FAIL:        return "FUSED_FAIL";
-       case NVME_SC_FUSED_MISSING:     return "FUSED_MISSING";
-       case NVME_SC_INVALID_NS:        return "INVALID_NS";
-       case NVME_SC_CMD_SEQ_ERROR:     return "CMD_SEQ_ERROR";
-       case NVME_SC_LBA_RANGE:         return "LBA_RANGE";
-       case NVME_SC_CAP_EXCEEDED:      return "CAP_EXCEEDED";
-       case NVME_SC_NS_NOT_READY:      return "NS_NOT_READY";
-       case NVME_SC_CQ_INVALID:        return "CQ_INVALID";
-       case NVME_SC_QID_INVALID:       return "QID_INVALID";
-       case NVME_SC_QUEUE_SIZE:        return "QUEUE_SIZE";
-       case NVME_SC_ABORT_LIMIT:       return "ABORT_LIMIT";
-       case NVME_SC_ABORT_MISSING:     return "ABORT_MISSING";
-       case NVME_SC_ASYNC_LIMIT:       return "ASYNC_LIMIT";
-       case NVME_SC_FIRMWARE_SLOT:     return "FIRMWARE_SLOT";
-       case NVME_SC_FIRMWARE_IMAGE:    return "FIRMWARE_IMAGE";
-       case NVME_SC_INVALID_VECTOR:    return "INVALID_VECTOR";
-       case NVME_SC_INVALID_LOG_PAGE:  return "INVALID_LOG_PAGE";
-       case NVME_SC_INVALID_FORMAT:    return "INVALID_FORMAT";
-       case NVME_SC_BAD_ATTRIBUTES:    return "BAD_ATTRIBUTES";
-       case NVME_SC_WRITE_FAULT:       return "WRITE_FAULT";
-       case NVME_SC_READ_ERROR:        return "READ_ERROR";
-       case NVME_SC_GUARD_CHECK:       return "GUARD_CHECK";
-       case NVME_SC_APPTAG_CHECK:      return "APPTAG_CHECK";
-       case NVME_SC_REFTAG_CHECK:      return "REFTAG_CHECK";
-       case NVME_SC_COMPARE_FAILED:    return "COMPARE_FAILED";
-       case NVME_SC_ACCESS_DENIED:     return "ACCESS_DENIED";
-       default:                        return "Unknown";
+       case NVME_SC_SUCCESS:                   return "SUCCESS";
+       case NVME_SC_INVALID_OPCODE:            return "INVALID_OPCODE";
+       case NVME_SC_INVALID_FIELD:             return "INVALID_FIELD";
+       case NVME_SC_CMDID_CONFLICT:            return "CMDID_CONFLICT";
+       case NVME_SC_DATA_XFER_ERROR:           return "DATA_XFER_ERROR";
+       case NVME_SC_POWER_LOSS:                return "POWER_LOSS";
+       case NVME_SC_INTERNAL:                  return "INTERNAL";
+       case NVME_SC_ABORT_REQ:                 return "ABORT_REQ";
+       case NVME_SC_ABORT_QUEUE:               return "ABORT_QUEUE";
+       case NVME_SC_FUSED_FAIL:                return "FUSED_FAIL";
+       case NVME_SC_FUSED_MISSING:             return "FUSED_MISSING";
+       case NVME_SC_INVALID_NS:                return "INVALID_NS";
+       case NVME_SC_CMD_SEQ_ERROR:             return "CMD_SEQ_ERROR";
+       case NVME_SC_LBA_RANGE:                 return "LBA_RANGE";
+       case NVME_SC_CAP_EXCEEDED:              return "CAP_EXCEEDED";
+       case NVME_SC_NS_NOT_READY:              return "NS_NOT_READY";
+       case NVME_SC_CQ_INVALID:                return "CQ_INVALID";
+       case NVME_SC_QID_INVALID:               return "QID_INVALID";
+       case NVME_SC_QUEUE_SIZE:                return "QUEUE_SIZE";
+       case NVME_SC_ABORT_LIMIT:               return "ABORT_LIMIT";
+       case NVME_SC_ABORT_MISSING:             return "ABORT_MISSING";
+       case NVME_SC_ASYNC_LIMIT:               return "ASYNC_LIMIT";
+       case NVME_SC_FIRMWARE_SLOT:             return "FIRMWARE_SLOT";
+       case NVME_SC_FIRMWARE_IMAGE:            return "FIRMWARE_IMAGE";
+       case NVME_SC_INVALID_VECTOR:            return "INVALID_VECTOR";
+       case NVME_SC_INVALID_LOG_PAGE:          return "INVALID_LOG_PAGE";
+       case NVME_SC_INVALID_FORMAT:            return "INVALID_FORMAT";
+       case NVME_SC_FW_NEEDS_CONV_RESET:       return "FW_NEEDS_CONVENTIONAL_RESET";
+       case NVME_SC_INVALID_QUEUE:             return "INVALID_QUEUE";
+       case NVME_SC_FEATURE_NOT_SAVEABLE:      return "FEATURE_NOT_SAVEABLE";
+       case NVME_SC_FEATURE_NOT_CHANGEABLE:    return "FEATURE_NOT_CHANGEABLE";
+       case NVME_SC_FEATURE_NOT_PER_NS:        return "FEATURE_NOT_PER_NS";
+       case NVME_SC_FW_NEEDS_SUBSYS_RESET:     return "FW_NEEDS_SUBSYSTEM_RESET";
+       case NVME_SC_FW_NEEDS_RESET:            return "FW_NEEDS_RESET";
+       case NVME_SC_FW_NEEDS_MAX_TIME:         return "FW_NEEDS_MAX_TIME_VIOLATION";
+       case NVME_SC_FW_ACIVATE_PROHIBITED:     return "FW_ACTIVATION_PROHIBITED";
+       case NVME_SC_OVERLAPPING_RANGE:         return "OVERLAPPING_RANGE";
+       case NVME_SC_NS_INSUFFICENT_CAP:        return "NS_INSUFFICIENT_CAPACITY";
+       case NVME_SC_NS_ID_UNAVAILABLE:         return "NS_ID_UNAVAILABLE";
+       case NVME_SC_NS_ALREADY_ATTACHED:       return "NS_ALREADY_ATTACHED";
+       case NVME_SC_NS_IS_PRIVATE:             return "NS_IS_PRIVATE";
+       case NVME_SC_NS_NOT_ATTACHED:           return "NS_NOT_ATTACHED";
+       case NVME_SC_THIN_PROV_NOT_SUPP:        return "THIN_PROVISIONING_NOT_SUPPORTED";
+       case NVME_SC_CTRL_LIST_INVALID:         return "CONTROLLER_LIST_INVALID";
+       case NVME_SC_BAD_ATTRIBUTES:            return "BAD_ATTRIBUTES";
+       case NVME_SC_WRITE_FAULT:               return "WRITE_FAULT";
+       case NVME_SC_READ_ERROR:                return "READ_ERROR";
+       case NVME_SC_GUARD_CHECK:               return "GUARD_CHECK";
+       case NVME_SC_APPTAG_CHECK:              return "APPTAG_CHECK";
+       case NVME_SC_REFTAG_CHECK:              return "REFTAG_CHECK";
+       case NVME_SC_COMPARE_FAILED:            return "COMPARE_FAILED";
+       case NVME_SC_ACCESS_DENIED:             return "ACCESS_DENIED";
+       case NVME_SC_UNWRITTEN_BLOCK:           return "UNWRITTEN_BLOCK";
+       default:                                return "Unknown";
        }
 }
 
diff --git a/nvme.c b/nvme.c
index 5f5f1b5d6daa104f9d19a8e0f7cfbc471e7e2137..665299b2680a519eab84ff04d7463d51d3a4829a 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -1200,7 +1200,7 @@ static int fw_activate(int argc, char **argv)
        if (err < 0)
                perror("fw-activate");
        else if (err != 0)
-               if (err == NVME_SC_FIRMWARE_NEEDS_RESET)
+               if (err == NVME_SC_FW_NEEDS_CONV_RESET)
                        printf("Success activating firmware action:%d slot:%d, but a conventional reset is required\n",
                               cfg.action, cfg.slot);
                else