]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
util: Add strings for new status codes
authorTomas Bzatek <tbzatek@redhat.com>
Fri, 23 Jul 2021 14:03:02 +0000 (16:03 +0200)
committerTomas Bzatek <tbzatek@redhat.com>
Fri, 23 Jul 2021 14:03:02 +0000 (16:03 +0200)
src/nvme/util.c

index 5ea67e200289295aa7ac23b25bd0e06c99c11627..0167f45ef6d738f7f87ebd852ca1f6bd7e9c63ae 100644 (file)
@@ -157,90 +157,110 @@ __u8 nvme_status_to_errno(int status, bool fabrics)
 }
 
 static const char * const generic_status[] = {
-       [NVME_SC_SUCCESS]                 = "Successful Completion: The command completed without error",
-       [NVME_SC_INVALID_OPCODE]          = "Invalid Command Opcode: A reserved coded value or an unsupported value in the command opcode field",
-       [NVME_SC_INVALID_FIELD]           = "Invalid Field in Command: A reserved coded value or an unsupported value in a defined field",
-       [NVME_SC_CMDID_CONFLICT]          = "Command ID Conflict: The command identifier is already in use",
-       [NVME_SC_DATA_XFER_ERROR]         = "Data Transfer Error: Transferring the data or metadata associated with a command experienced an error",
-       [NVME_SC_POWER_LOSS]              = "Commands Aborted due to Power Loss Notification: Indicates that the command was aborted due to a power loss notification",
-       [NVME_SC_INTERNAL]                = "Internal Error: The command was not completed successfully due to an internal error",
-       [NVME_SC_ABORT_REQ]               = "Command Abort Requested: The command was aborted due to an Abort command",
-       [NVME_SC_ABORT_QUEUE]             = "Command Aborted due to SQ Deletion: The command was aborted due to a Delete I/O Submission Queue",
-       [NVME_SC_FUSED_FAIL]              = "Command Aborted due to Failed Fused Command: The command was aborted due to the other command in a fused operation failing",
-       [NVME_SC_FUSED_MISSING]           = "Command Aborted due to Missing Fused Command: The fused command was aborted due to the adjacent submission queue entry not containing a fused command",
-       [NVME_SC_INVALID_NS]              = "Invalid Namespace or Format: The namespace or the format of that namespace is invalid",
-       [NVME_SC_CMD_SEQ_ERROR]           = "Command Sequence Error: The command was aborted due to a protocol violation in a multi- command sequence",
-       [NVME_SC_SGL_INVALID_LAST]        = "Invalid SGL Segment Descriptor: The command includes an invalid SGL Last Segment or SGL Segment descriptor",
-       [NVME_SC_SGL_INVALID_COUNT]       = "Invalid Number of SGL Descriptors: There is an SGL Last Segment descriptor or an SGL Segment descriptor in a location other than the last descriptor of a segment based on the length indicated",
-       [NVME_SC_SGL_INVALID_DATA]        = "Data SGL Length Invalid: The length of a Data SGL is too short or too long and the controller does not support SGL transfers longer than the amount of data to be transferred",
-       [NVME_SC_SGL_INVALID_METADATA]    = "Metadata SGL Length Invalid: The length of a Metadata SGL is too short or too long and the controller does not support SGL transfers longer than the amount of data to be transferred",
-       [NVME_SC_SGL_INVALID_TYPE]        = "SGL Descriptor Type Invalid: The type of an SGL Descriptor is a type that is not supported by the controller",
-       [NVME_SC_CMB_INVALID_USE]         = "Invalid Use of Controller Memory Buffer: The attempted use of the Controller Memory Buffer is not supported by the controller",
-       [NVME_SC_PRP_INVALID_OFFSET]      = "PRP Offset Invalid: The Offset field for a PRP entry is invalid",
-       [NVME_SC_AWU_EXCEEDED]            = "Atomic Write Unit Exceeded: The length specified exceeds the atomic write unit size",
-       [NVME_SC_OP_DENIED]               = "Operation Denied: The command was denied due to lack of access rights",
-       [NVME_SC_SGL_INVALID_OFFSET]      = "SGL Offset Invalid: The offset specified in a descriptor is invalid",
-       [NVME_SC_HOSTID_FORMAT]           = "Host Identifier Inconsistent Format: The NVM subsystem detected the simultaneous use of 64- bit and 128-bit Host Identifier values on different controllers",
-       [NVME_SC_KAT_EXPIRED]             = "Keep Alive Timer Expired: The Keep Alive Timer expired",
-       [NVME_SC_KAT_INVALID]             = "Keep Alive Timeout Invalid: The Keep Alive Timeout value specified is invalid",
-       [NVME_SC_CMD_ABORTED_PREMEPT]     = "Command Aborted due to Preempt and Abort: The command was aborted due to a Reservation Acquire command",
-       [NVME_SC_SANITIZE_FAILED]         = "Sanitize Failed: The most recent sanitize operation failed and no recovery action has been successfully completed",
-       [NVME_SC_SANITIZE_IN_PROGRESS]    = "Sanitize In Progress: The requested function is prohibited while a sanitize operation is in progress",
-       [NVME_SC_SGL_INVALID_GRANULARITY] = "SGL Data Block Granularity Invalid: The Address alignment or Length granularity for an SGL Data Block descriptor is invalid",
-       [NVME_SC_CMD_IN_CMBQ_NOT_SUPP]    = "Command Not Supported for Queue in CMB: The controller does not support Submission Queue in the Controller Memory Buffer or Completion Queue in the Controller Memory Buffer",
-       [NVME_SC_NS_WRITE_PROTECTED]      = "Namespace is Write Protected: The command is prohibited while the namespace is write protected",
-       [NVME_SC_CMD_INTERRUPTED]         = "Command Interrupted: Command processing was interrupted and the controller is unable to successfully complete the command",
-       [NVME_SC_TRAN_TPORT_ERROR]        = "Transient Transport Error: A transient transport error was detected",
-       [NVME_SC_LBA_RANGE]               = "LBA Out of Range: The command references an LBA that exceeds the size of the namespace",
-       [NVME_SC_CAP_EXCEEDED]            = "Capacity Exceeded: Execution of the command has caused the capacity of the namespace to be exceeded",
-       [NVME_SC_NS_NOT_READY]            = "Namespace Not Ready: The namespace is not ready to be accessed",
-       [NVME_SC_RESERVATION_CONFLICT]    = "Reservation Conflict: The command was aborted due to a conflict with a reservation held on the accessed namespace",
-       [NVME_SC_FORMAT_IN_PROGRESS]      = "Format In Progress: A Format NVM command is in progress on the namespace",
+       [NVME_SC_SUCCESS]                         = "Successful Completion: The command completed without error",
+       [NVME_SC_INVALID_OPCODE]                  = "Invalid Command Opcode: A reserved coded value or an unsupported value in the command opcode field",
+       [NVME_SC_INVALID_FIELD]                   = "Invalid Field in Command: A reserved coded value or an unsupported value in a defined field",
+       [NVME_SC_CMDID_CONFLICT]                  = "Command ID Conflict: The command identifier is already in use",
+       [NVME_SC_DATA_XFER_ERROR]                 = "Data Transfer Error: Transferring the data or metadata associated with a command experienced an error",
+       [NVME_SC_POWER_LOSS]                      = "Commands Aborted due to Power Loss Notification: Indicates that the command was aborted due to a power loss notification",
+       [NVME_SC_INTERNAL]                        = "Internal Error: The command was not completed successfully due to an internal error",
+       [NVME_SC_ABORT_REQ]                       = "Command Abort Requested: The command was aborted due to an Abort command",
+       [NVME_SC_ABORT_QUEUE]                     = "Command Aborted due to SQ Deletion: The command was aborted due to a Delete I/O Submission Queue",
+       [NVME_SC_FUSED_FAIL]                      = "Command Aborted due to Failed Fused Command: The command was aborted due to the other command in a fused operation failing",
+       [NVME_SC_FUSED_MISSING]                   = "Command Aborted due to Missing Fused Command: The fused command was aborted due to the adjacent submission queue entry not containing a fused command",
+       [NVME_SC_INVALID_NS]                      = "Invalid Namespace or Format: The namespace or the format of that namespace is invalid",
+       [NVME_SC_CMD_SEQ_ERROR]                   = "Command Sequence Error: The command was aborted due to a protocol violation in a multi- command sequence",
+       [NVME_SC_SGL_INVALID_LAST]                = "Invalid SGL Segment Descriptor: The command includes an invalid SGL Last Segment or SGL Segment descriptor",
+       [NVME_SC_SGL_INVALID_COUNT]               = "Invalid Number of SGL Descriptors: There is an SGL Last Segment descriptor or an SGL Segment descriptor in a location other than the last descriptor of a segment based on the length indicated",
+       [NVME_SC_SGL_INVALID_DATA]                = "Data SGL Length Invalid: The length of a Data SGL is too short or too long and the controller does not support SGL transfers longer than the amount of data to be transferred",
+       [NVME_SC_SGL_INVALID_METADATA]            = "Metadata SGL Length Invalid: The length of a Metadata SGL is too short or too long and the controller does not support SGL transfers longer than the amount of data to be transferred",
+       [NVME_SC_SGL_INVALID_TYPE]                = "SGL Descriptor Type Invalid: The type of an SGL Descriptor is a type that is not supported by the controller",
+       [NVME_SC_CMB_INVALID_USE]                 = "Invalid Use of Controller Memory Buffer: The attempted use of the Controller Memory Buffer is not supported by the controller",
+       [NVME_SC_PRP_INVALID_OFFSET]              = "PRP Offset Invalid: The Offset field for a PRP entry is invalid",
+       [NVME_SC_AWU_EXCEEDED]                    = "Atomic Write Unit Exceeded: The length specified exceeds the atomic write unit size",
+       [NVME_SC_OP_DENIED]                       = "Operation Denied: The command was denied due to lack of access rights",
+       [NVME_SC_SGL_INVALID_OFFSET]              = "SGL Offset Invalid: The offset specified in a descriptor is invalid",
+       [NVME_SC_HOSTID_FORMAT]                   = "Host Identifier Inconsistent Format: The NVM subsystem detected the simultaneous use of 64- bit and 128-bit Host Identifier values on different controllers",
+       [NVME_SC_KAT_EXPIRED]                     = "Keep Alive Timer Expired: The Keep Alive Timer expired",
+       [NVME_SC_KAT_INVALID]                     = "Keep Alive Timeout Invalid: The Keep Alive Timeout value specified is invalid",
+       [NVME_SC_CMD_ABORTED_PREMEPT]             = "Command Aborted due to Preempt and Abort: The command was aborted due to a Reservation Acquire command",
+       [NVME_SC_SANITIZE_FAILED]                 = "Sanitize Failed: The most recent sanitize operation failed and no recovery action has been successfully completed",
+       [NVME_SC_SANITIZE_IN_PROGRESS]            = "Sanitize In Progress: The requested function is prohibited while a sanitize operation is in progress",
+       [NVME_SC_SGL_INVALID_GRANULARITY]         = "SGL Data Block Granularity Invalid: The Address alignment or Length granularity for an SGL Data Block descriptor is invalid",
+       [NVME_SC_CMD_IN_CMBQ_NOT_SUPP]            = "Command Not Supported for Queue in CMB: The controller does not support Submission Queue in the Controller Memory Buffer or Completion Queue in the Controller Memory Buffer",
+       [NVME_SC_NS_WRITE_PROTECTED]              = "Namespace is Write Protected: The command is prohibited while the namespace is write protected",
+       [NVME_SC_CMD_INTERRUPTED]                 = "Command Interrupted: Command processing was interrupted and the controller is unable to successfully complete the command",
+       [NVME_SC_TRAN_TPORT_ERROR]                = "Transient Transport Error: A transient transport error was detected",
+       [NVME_SC_PROHIBITED_BY_CMD_AND_FEAT]      = "Command Prohibited by Command and Feature Lockdown: The command was aborted due to command execution being prohibited by the Command and Feature Lockdown",
+       [NVME_SC_ADMIN_CMD_MEDIA_NOT_READY]       = "Admin Command Media Not Ready: The Admin command requires access to media and the media is not ready",
+       [NVME_SC_LBA_RANGE]                       = "LBA Out of Range: The command references an LBA that exceeds the size of the namespace",
+       [NVME_SC_CAP_EXCEEDED]                    = "Capacity Exceeded: Execution of the command has caused the capacity of the namespace to be exceeded",
+       [NVME_SC_NS_NOT_READY]                    = "Namespace Not Ready: The namespace is not ready to be accessed",
+       [NVME_SC_RESERVATION_CONFLICT]            = "Reservation Conflict: The command was aborted due to a conflict with a reservation held on the accessed namespace",
+       [NVME_SC_FORMAT_IN_PROGRESS]              = "Format In Progress: A Format NVM command is in progress on the namespace",
 };
 
 static const char * const cmd_spec_status[] = {
-       [NVME_SC_CQ_INVALID]             = "Completion Queue Invalid: The Completion Queue identifier specified in the command does not exist",
-       [NVME_SC_QID_INVALID]            = "Invalid Queue Identifier: The creation of the I/O Completion Queue failed due to an invalid queue identifier specified as part of the command",
-       [NVME_SC_QUEUE_SIZE]             = "Invalid Queue Size: The host attempted to create an I/O Completion Queue with an invalid number of entries",
-       [NVME_SC_ABORT_LIMIT]            = "Abort Command Limit Exceeded: The number of concurrently outstanding Abort commands has exceeded the limit indicated in the Identify Controller data structure",
-       [NVME_SC_ASYNC_LIMIT]            = "Asynchronous Event Request Limit Exceeded: The number of concurrently outstanding Asynchronous Event Request commands has been exceeded",
-       [NVME_SC_FIRMWARE_SLOT]          = "Invalid Firmware Slot: The firmware slot indicated is invalid or read only",
-       [NVME_SC_FIRMWARE_IMAGE]         = "Invalid Firmware Image: The firmware image specified for activation is invalid and not loaded by the controller",
-       [NVME_SC_INVALID_VECTOR]         = "Invalid Interrupt Vector: The creation of the I/O Completion Queue failed due to an invalid interrupt vector specified as part of the command",
-       [NVME_SC_INVALID_LOG_PAGE]       = "Invalid Log Page: The log page indicated is invalid",
-       [NVME_SC_INVALID_FORMAT]         = "Invalid Format: The LBA Format specified is not supported",
-       [NVME_SC_FW_NEEDS_CONV_RESET]    = "Firmware Activation Requires Conventional Reset: The firmware commit was successful, however, activation of the firmware image requires a conventional reset",
-       [NVME_SC_INVALID_QUEUE]          = "Invalid Queue Deletion: Invalid I/O Completion Queue specified to delete",
-       [NVME_SC_FEATURE_NOT_SAVEABLE]   = "Feature Identifier Not Saveable: The Feature Identifier specified does not support a saveable value",
-       [NVME_SC_FEATURE_NOT_CHANGEABLE] = "Feature Not Changeable: The Feature Identifier is not able to be changed",
-       [NVME_SC_FEATURE_NOT_PER_NS]     = "Feature Not Namespace Specific: The Feature Identifier specified is not namespace specific",
-       [NVME_SC_FW_NEEDS_SUBSYS_RESET]  = "Firmware Activation Requires NVM Subsystem Reset: The firmware commit was successful, however, activation of the firmware image requires an NVM Subsystem",
-       [NVME_SC_FW_NEEDS_RESET]         = "Firmware Activation Requires Controller Level Reset: The firmware commit was successful; however, the image specified does not support being activated without a reset",
-       [NVME_SC_FW_NEEDS_MAX_TIME]      = "Firmware Activation Requires Maximum Time Violation: The image specified if activated immediately would exceed the Maximum Time for Firmware Activation (MTFA) value reported in Identify Controller",
-       [NVME_SC_FW_ACTIVATE_PROHIBITED] = "Firmware Activation Prohibited: The image specified is being prohibited from activation by the controller for vendor specific reasons",
-       [NVME_SC_OVERLAPPING_RANGE]      = "Overlapping Range: The downloaded firmware image has overlapping ranges",
-       [NVME_SC_NS_INSUFFICIENT_CAP]    = "Namespace Insufficient Capacity: Creating the namespace requires more free space than is currently available",
-       [NVME_SC_NS_ID_UNAVAILABLE]      = "Namespace Identifier Unavailable: The number of namespaces supported has been exceeded",
-       [NVME_SC_NS_ALREADY_ATTACHED]    = "Namespace Already Attached: The controller is already attached to the namespace specified",
-       [NVME_SC_NS_IS_PRIVATE]          = "Namespace Is Private: The namespace is private and is already attached to one controller",
-       [NVME_SC_NS_NOT_ATTACHED]        = "Namespace Not Attached: The request to detach the controller could not be completed because the controller is not attached to the namespace",
-       [NVME_SC_THIN_PROV_NOT_SUPP]     = "Thin Provisioning Not Supported: Thin provisioning is not supported by the controller",
-       [NVME_SC_CTRL_LIST_INVALID]      = "Controller List Invalid: The controller list provided contains invalid controller ids",
-       [NVME_SC_SELF_TEST_IN_PROGRESS]  = "Device Self-test In Progress",
-       [NVME_SC_BP_WRITE_PROHIBITED]    = "Boot Partition Write Prohibited: The command tried to modify a locked Boot Partition",
-       [NVME_SC_INVALID_CTRL_ID]        = "Invalid Controller Identifier: An invalid controller id was specified",
-       [NVME_SC_INVALID_SEC_CTRL_STATE] = "Invalid Secondary Controller State: The requested secondary controller action is invalid based on the secondary and primary controllers current states",
-       [NVME_SC_INVALID_CTRL_RESOURCES] = "Invalid Number of Controller Resources: The specified number of Flexible Resources is invalid",
-       [NVME_SC_INVALID_RESOURCE_ID]    = "Invalid Resource Identifier: At least one of the specified resource identifiers was invalid",
-       [NVME_SC_PMR_SAN_PROHIBITED]     = "Sanitize Prohibited While Persistent Memory Region is Enabled",
-       [NVME_SC_ANA_GROUP_ID_INVALID]   = "ANA Group Identifier Invalid",
-       [NVME_SC_ANA_ATTACH_FAILED]      = "ANA Attach Failed: The command's specified ANA Group Identifier is not supported",
+       [NVME_SC_CQ_INVALID]                      = "Completion Queue Invalid: The Completion Queue identifier specified in the command does not exist",
+       [NVME_SC_QID_INVALID]                     = "Invalid Queue Identifier: The creation of the I/O Completion Queue failed due to an invalid queue identifier specified as part of the command",
+       [NVME_SC_QUEUE_SIZE]                      = "Invalid Queue Size: The host attempted to create an I/O Completion Queue with an invalid number of entries",
+       [NVME_SC_ABORT_LIMIT]                     = "Abort Command Limit Exceeded: The number of concurrently outstanding Abort commands has exceeded the limit indicated in the Identify Controller data structure",
+       [NVME_SC_ABORT_MISSING]                   = "Abort Command Is Missing: The abort command is missing",
+       [NVME_SC_ASYNC_LIMIT]                     = "Asynchronous Event Request Limit Exceeded: The number of concurrently outstanding Asynchronous Event Request commands has been exceeded",
+       [NVME_SC_FIRMWARE_SLOT]                   = "Invalid Firmware Slot: The firmware slot indicated is invalid or read only",
+       [NVME_SC_FIRMWARE_IMAGE]                  = "Invalid Firmware Image: The firmware image specified for activation is invalid and not loaded by the controller",
+       [NVME_SC_INVALID_VECTOR]                  = "Invalid Interrupt Vector: The creation of the I/O Completion Queue failed due to an invalid interrupt vector specified as part of the command",
+       [NVME_SC_INVALID_LOG_PAGE]                = "Invalid Log Page: The log page indicated is invalid",
+       [NVME_SC_INVALID_FORMAT]                  = "Invalid Format: The LBA Format specified is not supported",
+       [NVME_SC_FW_NEEDS_CONV_RESET]             = "Firmware Activation Requires Conventional Reset: The firmware commit was successful, however, activation of the firmware image requires a conventional reset",
+       [NVME_SC_INVALID_QUEUE]                   = "Invalid Queue Deletion: Invalid I/O Completion Queue specified to delete",
+       [NVME_SC_FEATURE_NOT_SAVEABLE]            = "Feature Identifier Not Saveable: The Feature Identifier specified does not support a saveable value",
+       [NVME_SC_FEATURE_NOT_CHANGEABLE]          = "Feature Not Changeable: The Feature Identifier is not able to be changed",
+       [NVME_SC_FEATURE_NOT_PER_NS]              = "Feature Not Namespace Specific: The Feature Identifier specified is not namespace specific",
+       [NVME_SC_FW_NEEDS_SUBSYS_RESET]           = "Firmware Activation Requires NVM Subsystem Reset: The firmware commit was successful, however, activation of the firmware image requires an NVM Subsystem",
+       [NVME_SC_FW_NEEDS_RESET]                  = "Firmware Activation Requires Controller Level Reset: The firmware commit was successful; however, the image specified does not support being activated without a reset",
+       [NVME_SC_FW_NEEDS_MAX_TIME]               = "Firmware Activation Requires Maximum Time Violation: The image specified if activated immediately would exceed the Maximum Time for Firmware Activation (MTFA) value reported in Identify Controller",
+       [NVME_SC_FW_ACTIVATE_PROHIBITED]          = "Firmware Activation Prohibited: The image specified is being prohibited from activation by the controller for vendor specific reasons",
+       [NVME_SC_OVERLAPPING_RANGE]               = "Overlapping Range: The downloaded firmware image has overlapping ranges",
+       [NVME_SC_NS_INSUFFICIENT_CAP]             = "Namespace Insufficient Capacity: Creating the namespace requires more free space than is currently available",
+       [NVME_SC_NS_ID_UNAVAILABLE]               = "Namespace Identifier Unavailable: The number of namespaces supported has been exceeded",
+       [NVME_SC_NS_ALREADY_ATTACHED]             = "Namespace Already Attached: The controller is already attached to the namespace specified",
+       [NVME_SC_NS_IS_PRIVATE]                   = "Namespace Is Private: The namespace is private and is already attached to one controller",
+       [NVME_SC_NS_NOT_ATTACHED]                 = "Namespace Not Attached: The request to detach the controller could not be completed because the controller is not attached to the namespace",
+       [NVME_SC_THIN_PROV_NOT_SUPP]              = "Thin Provisioning Not Supported: Thin provisioning is not supported by the controller",
+       [NVME_SC_CTRL_LIST_INVALID]               = "Controller List Invalid: The controller list provided contains invalid controller ids",
+       [NVME_SC_SELF_TEST_IN_PROGRESS]           = "Device Self-test In Progress: The controller or NVM subsystem already has a device self-test operation in process",
+       [NVME_SC_BP_WRITE_PROHIBITED]             = "Boot Partition Write Prohibited: The command tried to modify a locked Boot Partition",
+       [NVME_SC_INVALID_CTRL_ID]                 = "Invalid Controller Identifier: An invalid controller id was specified",
+       [NVME_SC_INVALID_SEC_CTRL_STATE]          = "Invalid Secondary Controller State: The requested secondary controller action is invalid based on the secondary and primary controllers current states",
+       [NVME_SC_INVALID_CTRL_RESOURCES]          = "Invalid Number of Controller Resources: The specified number of Flexible Resources is invalid",
+       [NVME_SC_INVALID_RESOURCE_ID]             = "Invalid Resource Identifier: At least one of the specified resource identifiers was invalid",
+       [NVME_SC_PMR_SAN_PROHIBITED]              = "Sanitize Prohibited While Persistent Memory Region is Enabled",
+       [NVME_SC_ANA_GROUP_ID_INVALID]            = "ANA Group Identifier Invalid: The specified ANA Group Identifier (ANAGRPID) is not supported in the submitted command",
+       [NVME_SC_ANA_ATTACH_FAILED]               = "ANA Attach Failed: The controller is not attached to the namespace as a result of an ANA condition",
+       [NVME_SC_INSUFFICIENT_CAP]                = "Insufficient Capacity: Requested operation requires more free space than is currently available",
+       [NVME_SC_NS_ATTACHMENT_LIMIT_EXCEEDED]    = "Namespace Attachment Limit Exceeded: Attaching the ns to a controller causes max number of ns attachments allowed to be exceeded",
+       [NVME_SC_PROHIBIT_CMD_EXEC_NOT_SUPPORTED] = "Prohibition of Command Execution Not Supported",
+       [NVME_SC_IOCS_NOT_SUPPORTED]              = "The I/O command set is not supported",
+       [NVME_SC_IOCS_NOT_ENABLED]                = "The I/O command set is not enabled",
+       [NVME_SC_IOCS_COMBINATION_REJECTED]       = "The I/O command set combination is rejected",
+       [NVME_SC_INVALID_IOCS]                    = "The I/O command set is invalid",
+       [NVME_SC_ID_UNAVAILABLE]                  = "Identifier Unavailable: The number of Endurance Groups or NVM Sets supported has been exceeded",
 };
 
 static const char * const nvm_status[] = {
-       [NVME_SC_BAD_ATTRIBUTES] = "Conflicting Attributes: The attributes specified in the command are conflicting",
-       [NVME_SC_INVALID_PI]     = "Invalid Protection Information: The command's Protection Information Field settings are invalid for the namespace's Protection Information format",
-       [NVME_SC_READ_ONLY]      = "Attempted Write to Read Only Range: The LBA range specified contains read-only blocks",
+       [NVME_SC_BAD_ATTRIBUTES]                 = "Conflicting Attributes: The attributes specified in the command are conflicting",
+       [NVME_SC_INVALID_PI]                     = "Invalid Protection Information: The command's Protection Information Field settings are invalid for the namespace's Protection Information format",
+       [NVME_SC_READ_ONLY]                      = "Attempted Write to Read Only Range: The LBA range specified contains read-only blocks",
+       [NVME_SC_CMD_SIZE_LIMIT_EXCEEDED]        = "Command Size Limit Exceeded",
+       [NVME_SC_ZNS_BOUNDARY_ERROR]             = "Zoned Boundary Error: Invalid Zone Boundary crossing",
+       [NVME_SC_ZNS_FULL]                       = "Zone Is Full: The accessed zone is in ZSF:Full state",
+       [NVME_SC_ZNS_READ_ONLY]                  = "Zone Is Read Only: The accessed zone is in ZSRO:Read Only state",
+       [NVME_SC_ZNS_OFFLINE]                    = "Zone Is Offline: The access zone is in ZSO:Offline state",
+       [NVME_SC_ZNS_INVALID_WRITE]              = "Zone Invalid Write: The write to zone was not at the write pointer offset",
+       [NVME_SC_ZNS_TOO_MANY_ACTIVE]            = "Too Many Active Zones: The controller does not allow additional active zones",
+       [NVME_SC_ZNS_TOO_MANY_OPENS]             = "Too Many Open Zones: The controller does not allow additional open zones",
+       [NVME_SC_ZNS_INVAL_TRANSITION]           = "Invalid Zone State Transition: The request is not a valid zone state transition",
 };
 
 static const char * const nvmf_status[] = {
@@ -255,14 +275,15 @@ static const char * const nvmf_status[] = {
 };
 
 static const char * const media_status[] = {
-       [NVME_SC_WRITE_FAULT]     = "Write Fault: The write data could not be committed to the media",
-       [NVME_SC_READ_ERROR]      = "Unrecovered Read Error: The read data could not be recovered from the media",
-       [NVME_SC_GUARD_CHECK]     = "End-to-end Guard Check Error: The command was aborted due to an end-to-end guard check failure",
-       [NVME_SC_APPTAG_CHECK]    = "End-to-end Application Tag Check Error: The command was aborted due to an end-to-end application tag check failure",
-       [NVME_SC_REFTAG_CHECK]    = "End-to-end Reference Tag Check Error: The command was aborted due to an end-to-end reference tag check failure",
-       [NVME_SC_COMPARE_FAILED]  = "Compare Failure: The command failed due to a miscompare during a Compare command",
-       [NVME_SC_ACCESS_DENIED]   = "Access Denied: Access to the namespace and/or LBA range is denied due to lack of access rights",
-       [NVME_SC_UNWRITTEN_BLOCK] = "Deallocated or Unwritten Logical Block: The command failed due to an attempt to read from or verify an LBA range containing a deallocated or unwritten logical block",
+       [NVME_SC_WRITE_FAULT]            = "Write Fault: The write data could not be committed to the media",
+       [NVME_SC_READ_ERROR]             = "Unrecovered Read Error: The read data could not be recovered from the media",
+       [NVME_SC_GUARD_CHECK]            = "End-to-end Guard Check Error: The command was aborted due to an end-to-end guard check failure",
+       [NVME_SC_APPTAG_CHECK]           = "End-to-end Application Tag Check Error: The command was aborted due to an end-to-end application tag check failure",
+       [NVME_SC_REFTAG_CHECK]           = "End-to-end Reference Tag Check Error: The command was aborted due to an end-to-end reference tag check failure",
+       [NVME_SC_COMPARE_FAILED]         = "Compare Failure: The command failed due to a miscompare during a Compare command",
+       [NVME_SC_ACCESS_DENIED]          = "Access Denied: Access to the namespace and/or LBA range is denied due to lack of access rights",
+       [NVME_SC_UNWRITTEN_BLOCK]        = "Deallocated or Unwritten Logical Block: The command failed due to an attempt to read from or verify an LBA range containing a deallocated or unwritten logical block",
+       [NVME_SC_STORAGE_TAG_CHECK]      = "End-to-End Storage Tag Check Error: The command was aborted due to an end-to-end storage tag check failure",
 };
 
 static const char * const path_status[] = {