diff options
Diffstat (limited to 'usr/src/cmd/nvmeadm/nvmeadm_print.c')
-rw-r--r-- | usr/src/cmd/nvmeadm/nvmeadm_print.c | 47 |
1 files changed, 15 insertions, 32 deletions
diff --git a/usr/src/cmd/nvmeadm/nvmeadm_print.c b/usr/src/cmd/nvmeadm/nvmeadm_print.c index 6a5da3d4e2..43c15925b2 100644 --- a/usr/src/cmd/nvmeadm/nvmeadm_print.c +++ b/usr/src/cmd/nvmeadm/nvmeadm_print.c @@ -10,10 +10,9 @@ */ /* - * Copyright 2016 Nexenta Systems, Inc. - * Copyright 2019 Western Digital Corporation * Copyright 2021 Oxide Computer Company * Copyright 2022 OmniOS Community Edition (OmniOSce) Association. + * Copyright 2022 Tintri by DDN, Inc. All rights reserved. */ /* @@ -1910,17 +1909,25 @@ nvme_print_health_log(nvme_health_log_t *hlog, nvme_identify_ctrl_t *idctl, * This function pretty-prints the firmware slot information. */ void -nvme_print_fwslot_log(nvme_fwslot_log_t *fwlog) +nvme_print_fwslot_log(nvme_fwslot_log_t *fwlog, nvme_identify_ctrl_t *idctl) { int i; + char str[NVME_FWVER_SZ + sizeof (" (read-only)")]; + nvme_print(0, "Firmware Slot Information", -1, NULL); nvme_print_uint64(2, "Active Firmware Slot", fwlog->fw_afi, NULL, NULL); if (fwlog->fw_next != 0) nvme_print_uint64(2, "Next Firmware Slot", fwlog->fw_next, NULL, NULL); - for (i = 0; i != ARRAYSIZE(fwlog->fw_frs); i++) { + + (void) snprintf(str, sizeof (str), "%.*s%s", + nvme_strlen(fwlog->fw_frs[0], sizeof (fwlog->fw_frs[0])), + fwlog->fw_frs[0], idctl->id_frmw.fw_readonly ? " (read-only)" : ""); + nvme_print_str(2, "Firmware Revision for Slot", 1, str, sizeof (str)); + + for (i = 1; i < idctl->id_frmw.fw_nslot; i++) { nvme_print_str(2, "Firmware Revision for Slot", i + 1, fwlog->fw_frs[i][0] == '\0' ? "<Unused>" : fwlog->fw_frs[i], sizeof (fwlog->fw_frs[i])); @@ -2243,21 +2250,12 @@ nvme_print_feat_progress(uint64_t res, void *b, size_t s, spm.b.spm_pbslc, NULL, NULL); } -static const char * -nvme_str_generic_error(int sc) +const char * +nvme_fw_error(int err, int sc) { - switch (sc) { - case NVME_CQE_SC_GEN_SUCCESS: - return ("Success"); - default: - return ("See message log (usually /var/adm/messages) " - "for details"); - } -} + if (sc == 0) + return (strerror(err)); -static const char * -nvme_str_specific_error(int sc) -{ switch (sc) { case NVME_CQE_SC_SPC_INV_FW_SLOT: return ("Invalid firmware slot"); @@ -2279,20 +2277,5 @@ nvme_str_specific_error(int sc) return ("See message log (usually /var/adm/messages) " "for details"); } -} - -const char * -nvme_str_error(int sct, int sc) -{ - switch (sct) { - case NVME_CQE_SCT_GENERIC: - return (nvme_str_generic_error(sc)); - case NVME_CQE_SCT_SPECIFIC: - return (nvme_str_specific_error(sc)); - - default: - return ("See message log (usually /var/adm/messages) " - "for details"); - } } |