printf("\t(%f%%)\n", percent);
}
-static void show_sanitize_log_sstat(__u16 status)
+static const char *get_sanitize_log_sstat_status_str(__u16 status)
{
- const char * str;
+ const char *str;
switch (status & NVME_SANITIZE_LOG_STATUS_MASK) {
case NVME_SANITIZE_LOG_NEVER_SANITIZED:
str = "Unknown.";
}
+ return str;
+}
+
+static void show_sanitize_log_sstat(__u16 status)
+{
+ const char *str = get_sanitize_log_sstat_status_str(status);
+
printf("\t[2:0]\t%s\n", str);
str = "Number of completed passes if most recent operation was overwrite";
printf("\t[7:3]\t%s:\t%u\n", str, (status & NVME_SANITIZE_LOG_NUM_CMPLTED_PASS_MASK) >> 3);
json_free_object(root);
}
+void json_sanitize_log(struct nvme_sanitize_log_page *sanitize_log, const char *devname)
+{
+ struct json_object *root;
+ struct json_object *dev;
+ struct json_object *sstat;
+ const char *status_str;
+ char str[128];
+
+ root = json_create_object();
+ dev = json_create_object();
+ sstat = json_create_object();
+
+ json_object_add_value_int(dev, "sprog", le16_to_cpu(sanitize_log->progress));
+ json_object_add_value_int(sstat, "global_erased",
+ (le16_to_cpu(sanitize_log->status) & NVME_SANITIZE_LOG_GLOBAL_DATA_ERASED) >> 8);
+ json_object_add_value_int(sstat, "no_cmplted_passes",
+ (le16_to_cpu(sanitize_log->status) & NVME_SANITIZE_LOG_NUM_CMPLTED_PASS_MASK) >> 3);
+
+ status_str = get_sanitize_log_sstat_status_str(sanitize_log->status);
+ sprintf(str, "(%d) %s", sanitize_log->status & NVME_SANITIZE_LOG_STATUS_MASK, status_str);
+ json_object_add_value_string(sstat, "status", str);
+
+ json_object_add_value_object(dev, "sstat", sstat);
+ json_object_add_value_int(dev, "cdw10_info", le32_to_cpu(sanitize_log->cdw10_info));
+ json_object_add_value_int(dev, "time_over_write", le32_to_cpu(sanitize_log->est_ovrwrt_time));
+ json_object_add_value_int(dev, "time_block_erase", le32_to_cpu(sanitize_log->est_blk_erase_time));
+ json_object_add_value_int(dev, "time_crypto_erase", le32_to_cpu(sanitize_log->est_crypto_erase_time));
+
+ json_object_add_value_object(root, devname, dev);
+ json_print_object(root, NULL);
+ printf("\n");
+ json_free_object(root);
+}
+
void json_print_nvme_subsystem_list(struct subsys_list_item *slist, int n)
{
struct json_object *root;
void json_nvme_resv_report(struct nvme_reservation_status *status, int bytes, __u32 cdw11);
void json_error_log(struct nvme_error_log_page *err_log, int entries, const char *devname);
void json_smart_log(struct nvme_smart_log *smart, unsigned int nsid, const char *devname);
+void json_sanitize_log(struct nvme_sanitize_log_page *sanitize_log, const char *devname);
void json_fw_log(struct nvme_firmware_log_page *fw_log, const char *devname);
void json_print_list_items(struct list_item *items, unsigned amnt);
void json_nvme_id_ns_descs(void *data);