nvme: add nvme_opcode_str function for all nvme cmd types
authorAmit Engel <Amit.Engel@dell.com>
Mon, 12 Dec 2022 19:40:35 +0000 (21:40 +0200)
committerChristoph Hellwig <hch@lst.de>
Wed, 1 Feb 2023 13:22:00 +0000 (14:22 +0100)
nvme_opcode_str will handle io/admin/fabrics ops

This improves NVMe errors logging

Signed-off-by: Amit Engel <Amit.Engel@dell.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/constants.c
drivers/nvme/host/nvme.h

index e958d501558570a926bf205c73b5be9215b7a0f7..bc523ca0225486776eba989fab6ed758b4c569d0 100644 (file)
@@ -54,6 +54,14 @@ static const char * const nvme_admin_ops[] = {
        [nvme_admin_get_lba_status] = "Get LBA Status",
 };
 
+static const char * const nvme_fabrics_ops[] = {
+       [nvme_fabrics_type_property_set] = "Property Set",
+       [nvme_fabrics_type_property_get] = "Property Get",
+       [nvme_fabrics_type_connect] = "Connect",
+       [nvme_fabrics_type_auth_send] = "Authentication Send",
+       [nvme_fabrics_type_auth_receive] = "Authentication Receive",
+};
+
 static const char * const nvme_statuses[] = {
        [NVME_SC_SUCCESS] = "Success",
        [NVME_SC_INVALID_OPCODE] = "Invalid Command Opcode",
@@ -185,3 +193,11 @@ const unsigned char *nvme_get_admin_opcode_str(u8 opcode)
                return nvme_admin_ops[opcode];
        return "Unknown";
 }
+EXPORT_SYMBOL_GPL(nvme_get_admin_opcode_str);
+
+const unsigned char *nvme_get_fabrics_opcode_str(u8 opcode) {
+       if (opcode < ARRAY_SIZE(nvme_fabrics_ops) && nvme_fabrics_ops[opcode])
+               return nvme_fabrics_ops[opcode];
+       return "Unknown";
+}
+EXPORT_SYMBOL_GPL(nvme_get_fabrics_opcode_str);
index c7c45fdb3b48741074bd1cc371c7e395654c802a..bf46f122e9e1e476c7127186c356c3857c37c30a 100644 (file)
@@ -1087,6 +1087,7 @@ static inline bool nvme_multi_css(struct nvme_ctrl *ctrl)
 const unsigned char *nvme_get_error_status_str(u16 status);
 const unsigned char *nvme_get_opcode_str(u8 opcode);
 const unsigned char *nvme_get_admin_opcode_str(u8 opcode);
+const unsigned char *nvme_get_fabrics_opcode_str(u8 opcode);
 #else /* CONFIG_NVME_VERBOSE_ERRORS */
 static inline const unsigned char *nvme_get_error_status_str(u16 status)
 {
@@ -1100,6 +1101,18 @@ static inline const unsigned char *nvme_get_admin_opcode_str(u8 opcode)
 {
        return "Admin Cmd";
 }
+
+static inline const unsigned char *nvme_get_fabrics_opcode_str(u8 opcode)
+{
+       return "Fabrics Cmd";
+}
 #endif /* CONFIG_NVME_VERBOSE_ERRORS */
 
+static inline const unsigned char *nvme_opcode_str(int qid, u8 opcode, u8 fctype)
+{
+       if (opcode == nvme_fabrics_command)
+               return nvme_get_fabrics_opcode_str(fctype);
+       return qid ? nvme_get_opcode_str(opcode) :
+               nvme_get_admin_opcode_str(opcode);
+}
 #endif /* _NVME_H */