static int get_health_log_page(struct dev *dev) { return spdk_nvme_ctrlr_cmd_get_log_page(dev->ctrlr, SPDK_NVME_LOG_HEALTH_INFORMATION, SPDK_NVME_GLOBAL_NS_TAG, dev->health_page, sizeof(*dev->health_page), get_log_page_completion, dev); }
static void print_latency_statistics(const char *op_name, enum spdk_nvme_intel_log_page log_page) { struct ctrlr_entry *ctrlr; printf("%s Latency Statistics:\n", op_name); printf("========================================================\n"); ctrlr = g_controllers; while (ctrlr) { if (spdk_nvme_ctrlr_is_log_page_supported(ctrlr->ctrlr, log_page)) { if (spdk_nvme_ctrlr_cmd_get_log_page(ctrlr->ctrlr, log_page, SPDK_NVME_GLOBAL_NS_TAG, ctrlr->latency_page, sizeof(struct spdk_nvme_intel_rw_latency_page), enable_latency_tracking_complete, NULL)) { printf("nvme_ctrlr_cmd_get_log_page() failed\n"); exit(1); } g_outstanding_commands++; } else { printf("Controller %s: %s latency statistics not supported\n", ctrlr->name, op_name); } ctrlr = ctrlr->next; } while (g_outstanding_commands) { ctrlr = g_controllers; while (ctrlr) { spdk_nvme_ctrlr_process_admin_completions(ctrlr->ctrlr); ctrlr = ctrlr->next; } } ctrlr = g_controllers; while (ctrlr) { if (spdk_nvme_ctrlr_is_log_page_supported(ctrlr->ctrlr, log_page)) { print_latency_page(ctrlr); } ctrlr = ctrlr->next; } printf("\n"); }