[PATCH V2 1/1] nvme: Add verbose error logging
Keith Busch
kbusch at kernel.org
Mon Dec 27 08:07:32 PST 2021
On Thu, Dec 23, 2021 at 01:57:26PM -0800, Alan Adamson wrote:
> +
> +static const char * const nvme_errors[] = {
> + "Success",
> + "Invalid Command Opcode",
> + "Invalid Field in Command",
> + "Command ID Conflict",
> + "Data Transfer Error",
> + "Commands Aborted due to Power Loss Notification",
> + "Internal Error",
> + "Command Abort Requested",
> + "Command Aborted due to SQ Deletion",
> + "Command Aborted due to Failed Fused Command",
> + "Command Aborted due to Missing Fused Command",
> + "Invalid Namespace or Format",
> + "Command Sequence Error",
> + "Invalid SGL Segment Descriptor",
> + "Invalid Number of SGL Descriptors",
> + "Data SGL Length Invalid",
> + "Metadata SGL Length Invalid",
> + "SGL Descriptor Type Invalid",
> + "Invalid Use of Controller Memory Buffer",
> + "PRP Offset Invalid",
> + "Atomic Write Unit Exceeded",
> + "Operation Denied",
> + "SGL Offset Invalid",
> + "Reserved",
> + "Host Identifier Inconsistent Format",
> + "Keep Alive Timeout Expired",
> + "Keep Alive Timeout Invalid",
> + "Command Aborted due to Preempt and Abort",
> + "Sanitize Failed",
> + "Sanitize In Progress",
> + "SGL Data Block Granularity Invalid",
> + "Command Not Supported for Queue in CMB",
> + "Namespace is Write Protected",
> + "Command Interrupted",
> + "Transient Transport Error",
> + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
Tracking these NULL's is going to be problematic and error prone.
I recommend indexing the strings as you define them. For example:
static const char * const nvme_errors[] = {
[NVME_SC_SUCCESS] = "Success",
[NVME_SC_INVALID_OPCODE] = "Invalid Command Opcode",
etc...
Then you don't need to bother tracking the undefined indexes or making
sure everything is in order.
More information about the Linux-nvme
mailing list