return do_admin_args_op(sanitize_nvm, dev, args);
}
+int nvme_cli_get_log(struct nvme_dev *dev, struct nvme_get_log_args *args)
+{
+ return do_admin_args_op(get_log, dev, args);
+}
+
+int nvme_cli_get_nsid_log(struct nvme_dev *dev, bool rae,
+ enum nvme_cmd_get_log_lid lid,
+ __u32 nsid, __u32 len, void *log)
+{
+ return do_admin_op(get_nsid_log, dev, rae, lid, nsid, len, log);
+}
+
+int nvme_cli_get_log_simple(struct nvme_dev *dev,
+ enum nvme_cmd_get_log_lid lid,
+ __u32 len, void *log)
+{
+ return do_admin_op(get_log_simple, dev, lid, len, log);
+}
+
+int nvme_cli_get_log_supported_log_pages(struct nvme_dev *dev, bool rae,
+ struct nvme_supported_log_pages *log)
+{
+ return do_admin_op(get_log_supported_log_pages, dev, rae, log);
+}
+
+int nvme_cli_get_log_error(struct nvme_dev *dev, unsigned int nr_entries,
+ bool rae, struct nvme_error_log_page *err_log)
+{
+ return do_admin_op(get_log_error, dev, nr_entries, rae, err_log);
+}
+
+int nvme_cli_get_log_smart(struct nvme_dev *dev, __u32 nsid, bool rae,
+ struct nvme_smart_log *smart_log)
+{
+ return do_admin_op(get_log_smart, dev, nsid, rae, smart_log);
+}
+
+int nvme_cli_get_log_fw_slot(struct nvme_dev *dev, bool rae,
+ struct nvme_firmware_slot *fw_log)
+{
+ return do_admin_op(get_log_fw_slot, dev, rae, fw_log);
+}
+
+int nvme_cli_get_log_changed_ns_list(struct nvme_dev *dev, bool rae,
+ struct nvme_ns_list *ns_log)
+{
+ return do_admin_op(get_log_changed_ns_list, dev, rae, ns_log);
+}
+
+int nvme_cli_get_log_cmd_effects(struct nvme_dev *dev, enum nvme_csi csi,
+ struct nvme_cmd_effects_log *effects_log)
+{
+ return do_admin_op(get_log_cmd_effects, dev, csi, effects_log);
+}
+
+int nvme_cli_get_log_device_self_test(struct nvme_dev *dev,
+ struct nvme_self_test_log *log)
+{
+ return do_admin_op(get_log_device_self_test, dev, log);
+}
+
+int nvme_cli_get_log_create_telemetry_host(struct nvme_dev *dev,
+ struct nvme_telemetry_log *log)
+{
+ return do_admin_op(get_log_create_telemetry_host, dev, log);
+}
+
+int nvme_cli_get_log_telemetry_host(struct nvme_dev *dev, __u64 offset,
+ __u32 len, void *log)
+{
+ return do_admin_op(get_log_telemetry_host, dev, offset, len, log);
+}
+
+int nvme_cli_get_log_telemetry_ctrl(struct nvme_dev *dev, bool rae,
+ __u64 offset, __u32 len, void *log)
+{
+ return do_admin_op(get_log_telemetry_ctrl, dev, rae, offset, len, log);
+}
+
+int nvme_cli_get_log_endurance_group(struct nvme_dev *dev, __u16 endgid,
+ struct nvme_endurance_group_log *log)
+{
+ return do_admin_op(get_log_endurance_group, dev, endgid, log);
+}
+
+int nvme_cli_get_log_predictable_lat_nvmset(struct nvme_dev *dev,
+ __u16 nvmsetid,
+ struct nvme_nvmset_predictable_lat_log *log)
+{
+ return do_admin_op(get_log_predictable_lat_nvmset, dev, nvmsetid, log);
+}
+
+int nvme_cli_get_log_predictable_lat_event(struct nvme_dev *dev, bool rae,
+ __u32 offset, __u32 len, void *log)
+{
+ return do_admin_op(get_log_predictable_lat_event, dev, rae, offset,
+ len, log);
+}
+
+int nvme_cli_get_log_ana(struct nvme_dev *dev,
+ enum nvme_log_ana_lsp lsp, bool rae,
+ __u64 offset, __u32 len, void *log)
+{
+ return do_admin_op(get_log_ana, dev, lsp, rae, offset, len, log);
+}
+
+int nvme_cli_get_log_ana_groups(struct nvme_dev *dev, bool rae, __u32 len,
+ struct nvme_ana_group_desc *log)
+{
+ return do_admin_op(get_log_ana_groups, dev, rae, len, log);
+}
+
+int nvme_cli_get_log_lba_status(struct nvme_dev *dev, bool rae,
+ __u64 offset, __u32 len, void *log)
+{
+ return do_admin_op(get_log_lba_status, dev, rae, offset, len, log);
+}
+
+int nvme_cli_get_log_endurance_grp_evt(struct nvme_dev *dev, bool rae,
+ __u32 offset, __u32 len, void *log)
+{
+ return do_admin_op(get_log_endurance_grp_evt, dev, rae, offset, len,
+ log);
+}
+
+int nvme_cli_get_log_fid_supported_effects(struct nvme_dev *dev, bool rae,
+ struct nvme_fid_supported_effects_log *log)
+{
+ return do_admin_op(get_log_fid_supported_effects, dev, rae, log);
+}
+
+int nvme_cli_get_log_mi_cmd_supported_effects(struct nvme_dev *dev, bool rae,
+ struct nvme_mi_cmd_supported_effects_log *log)
+{
+ return do_admin_op(get_log_mi_cmd_supported_effects, dev, rae, log);
+}
+
+int nvme_cli_get_log_boot_partition(struct nvme_dev *dev, bool rae, __u8 lsp,
+ __u32 len,
+ struct nvme_boot_partition *part)
+{
+ return do_admin_op(get_log_boot_partition, dev, rae, lsp, len, part);
+}
+
+int nvme_cli_get_log_discovery(struct nvme_dev *dev, bool rae,
+ __u32 offset, __u32 len, void *log)
+{
+ return do_admin_op(get_log_discovery, dev, rae, offset, len, log);
+}
+
+int nvme_cli_get_log_media_unit_stat(struct nvme_dev *dev, __u16 domid,
+ struct nvme_media_unit_stat_log *mus)
+{
+ return do_admin_op(get_log_media_unit_stat, dev, domid, mus);
+}
+
+int nvme_cli_get_log_support_cap_config_list(struct nvme_dev *dev,
+ __u16 domid,
+ struct nvme_supported_cap_config_list_log *cap)
+{
+ return do_admin_op(get_log_support_cap_config_list, dev, domid, cap);
+}
+
+int nvme_cli_get_log_reservation(struct nvme_dev *dev, bool rae,
+ struct nvme_resv_notification_log *log)
+{
+ return do_admin_op(get_log_reservation, dev, rae, log);
+}
+
+int nvme_cli_get_log_sanitize(struct nvme_dev *dev, bool rae,
+ struct nvme_sanitize_log_page *log)
+{
+ return do_admin_op(get_log_sanitize, dev, rae, log);
+}
+
+int nvme_cli_get_log_zns_changed_zones(struct nvme_dev *dev, __u32 nsid,
+ bool rae,
+ struct nvme_zns_changed_zone_log *log)
+{
+ return do_admin_op(get_log_zns_changed_zones, dev, nsid, rae, log);
+}
+
+int nvme_cli_get_log_persistent_event(struct nvme_dev *dev,
+ enum nvme_pevent_log_action action,
+ __u32 size, void *pevent_log)
+{
+ return do_admin_op(get_log_persistent_event, dev, action, size,
+ pevent_log);
+}
+
/* The MI & direct interfaces don't have an exactly-matching API for
* ns_mgmt_create, as we don't support a timeout for MI.
*/
int nvme_cli_get_features(struct nvme_dev *dev,
struct nvme_get_features_args *args);
+
+int nvme_cli_get_log(struct nvme_dev *dev, struct nvme_get_log_args *args);
+
+int nvme_cli_get_nsid_log(struct nvme_dev *dev, bool rae,
+ enum nvme_cmd_get_log_lid lid,
+ __u32 nsid, __u32 len, void *log);
+int nvme_cli_get_log_simple(struct nvme_dev *dev,
+ enum nvme_cmd_get_log_lid lid,
+ __u32 len, void *log);
+int nvme_cli_get_log_supported_log_pages(struct nvme_dev *dev, bool rae,
+ struct nvme_supported_log_pages *log);
+int nvme_cli_get_log_error(struct nvme_dev *dev, unsigned int nr_entries,
+ bool rae, struct nvme_error_log_page *err_log);
+int nvme_cli_get_log_smart(struct nvme_dev *dev, __u32 nsid, bool rae,
+ struct nvme_smart_log *smart_log);
+int nvme_cli_get_log_fw_slot(struct nvme_dev *dev, bool rae,
+ struct nvme_firmware_slot *fw_log);
+int nvme_cli_get_log_changed_ns_list(struct nvme_dev *dev, bool rae,
+ struct nvme_ns_list *ns_log);
+int nvme_cli_get_log_cmd_effects(struct nvme_dev *dev, enum nvme_csi csi,
+ struct nvme_cmd_effects_log *effects_log);
+int nvme_cli_get_log_device_self_test(struct nvme_dev *dev,
+ struct nvme_self_test_log *log);
+int nvme_cli_get_log_create_telemetry_host(struct nvme_dev *dev,
+ struct nvme_telemetry_log *log);
+int nvme_cli_get_log_telemetry_host(struct nvme_dev *dev, __u64 offset,
+ __u32 len, void *log);
+int nvme_cli_get_log_telemetry_ctrl(struct nvme_dev *dev, bool rae,
+ __u64 offset, __u32 len, void *log);
+int nvme_cli_get_log_endurance_group(struct nvme_dev *dev, __u16 endgid,
+ struct nvme_endurance_group_log *log);
+int nvme_cli_get_log_predictable_lat_nvmset(struct nvme_dev *dev,
+ __u16 nvmsetid,
+ struct nvme_nvmset_predictable_lat_log *log);
+int nvme_cli_get_log_predictable_lat_event(struct nvme_dev *dev, bool rae,
+ __u32 offset, __u32 len, void *log);
+int nvme_cli_get_log_ana(struct nvme_dev *dev,
+ enum nvme_log_ana_lsp lsp, bool rae,
+ __u64 offset, __u32 len, void *log);
+int nvme_cli_get_log_ana_groups(struct nvme_dev *dev, bool rae, __u32 len,
+ struct nvme_ana_group_desc *log);
+int nvme_cli_get_log_lba_status(struct nvme_dev *dev, bool rae,
+ __u64 offset, __u32 len, void *log);
+int nvme_cli_get_log_endurance_grp_evt(struct nvme_dev *dev, bool rae,
+ __u32 offset, __u32 len, void *log);
+int nvme_cli_get_log_fid_supported_effects(struct nvme_dev *dev, bool rae,
+ struct nvme_fid_supported_effects_log *log);
+int nvme_cli_get_log_mi_cmd_supported_effects(struct nvme_dev *dev, bool rae,
+ struct nvme_mi_cmd_supported_effects_log *log);
+int nvme_cli_get_log_boot_partition(struct nvme_dev *dev, bool rae, __u8 lsp,
+ __u32 len,
+ struct nvme_boot_partition *part);
+int nvme_cli_get_log_discovery(struct nvme_dev *dev, bool rae,
+ __u32 offset, __u32 len, void *log);
+int nvme_cli_get_log_media_unit_stat(struct nvme_dev *dev, __u16 domid,
+ struct nvme_media_unit_stat_log *mus);
+int nvme_cli_get_log_support_cap_config_list(struct nvme_dev *dev,
+ __u16 domid,
+ struct nvme_supported_cap_config_list_log *cap);
+int nvme_cli_get_log_reservation(struct nvme_dev *dev, bool rae,
+ struct nvme_resv_notification_log *log);
+int nvme_cli_get_log_sanitize(struct nvme_dev *dev, bool rae,
+ struct nvme_sanitize_log_page *log);
+int nvme_cli_get_log_zns_changed_zones(struct nvme_dev *dev, __u32 nsid,
+ bool rae,
+ struct nvme_zns_changed_zone_log *log);
+int nvme_cli_get_log_persistent_event(struct nvme_dev *dev,
+ enum nvme_pevent_log_action action,
+ __u32 size, void *pevent_log);
#endif /* _NVME_WRAP_H */
if (cfg.human_readable)
flags |= VERBOSE;
- err = nvme_get_log_smart(dev_fd(dev), cfg.namespace_id, false,
+ err = nvme_cli_get_log_smart(dev, cfg.namespace_id, true,
&smart_log);
if (!err)
nvme_show_smart_log(&smart_log, cfg.namespace_id,
lsp = cfg.groups ? NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY :
NVME_LOG_ANA_LSP_RGO_NAMESPACES;
- err = nvme_get_log_ana(dev_fd(dev), lsp, true, 0, ana_log_len,
- ana_log);
+ err = nvme_cli_get_log_ana(dev, lsp, true, 0, ana_log_len, ana_log);
if (!err) {
nvme_show_ana_log(ana_log, dev->name, flags, ana_log_len);
} else if (err > 0)
if (flags < 0)
goto close_dev;
- err = nvme_get_log_endurance_group(dev_fd(dev), cfg.group_id,
- &endurance_log);
+ err = nvme_cli_get_log_endurance_group(dev, cfg.group_id,
+ &endurance_log);
if (!err)
nvme_show_endurance_log(&endurance_log, cfg.group_id,
dev->name, flags);
return err;
}
-static int collect_effects_log(int fd, enum nvme_csi csi,
+static int collect_effects_log(struct nvme_dev *dev, enum nvme_csi csi,
struct list_head *list, int flags)
{
nvme_effects_log_node_t *node;
node->csi = csi;
- err = nvme_get_log_cmd_effects(fd, csi, &node->effects);
+ err = nvme_cli_get_log_cmd_effects(dev, csi, &node->effects);
if (err) {
free(node);
return err;
other_command_sets_supported = NVME_CAP_CSS(cap) & NVME_CAP_CSS_CSI;
if (nvme_command_set_supported)
- err = collect_effects_log(dev_fd(dev), NVME_CSI_NVM,
+ err = collect_effects_log(dev, NVME_CSI_NVM,
&log_pages, flags);
if (!err && other_command_sets_supported)
- err = collect_effects_log(dev_fd(dev), NVME_CSI_ZNS,
+ err = collect_effects_log(dev, NVME_CSI_ZNS,
&log_pages, flags);
} else {
- err = collect_effects_log(dev_fd(dev), cfg.csi, &log_pages,
- flags);
+ err = collect_effects_log(dev, cfg.csi, &log_pages, flags);
}
if (!err)
if (cfg.verbose)
flags |= VERBOSE;
- err = nvme_get_log_supported_log_pages(dev_fd(dev), false, &supports);
+ err = nvme_cli_get_log_supported_log_pages(dev, false, &supports);
if (!err)
nvme_show_supported_log(&supports, dev->name, flags);
else if (err > 0)
goto close_dev;
}
- err = nvme_get_log_error(dev_fd(dev), cfg.log_entries, false, err_log);
+ err = nvme_cli_get_log_error(dev, cfg.log_entries, false, err_log);
if (!err)
nvme_show_error_log(err_log, cfg.log_entries,
dev->name, flags);
if (cfg.raw_binary)
flags = BINARY;
- err = nvme_get_log_fw_slot(dev_fd(dev), false, &fw_log);
+ err = nvme_cli_get_log_fw_slot(dev, false, &fw_log);
if (!err)
nvme_show_fw_log(&fw_log, dev->name, flags);
else if (err > 0)
if (cfg.raw_binary)
flags = BINARY;
- err = nvme_get_log_changed_ns_list(dev_fd(dev), true,
- &changed_ns_list_log);
+ err = nvme_cli_get_log_changed_ns_list(dev, true,
+ &changed_ns_list_log);
if (!err)
nvme_show_changed_ns_list_log(&changed_ns_list_log,
dev->name, flags);
if (cfg.raw_binary)
flags = BINARY;
- err = nvme_get_log_predictable_lat_nvmset(dev_fd(dev), cfg.nvmset_id,
- &plpns_log);
+ err = nvme_cli_get_log_predictable_lat_nvmset(dev, cfg.nvmset_id,
+ &plpns_log);
if (!err)
nvme_show_predictable_latency_per_nvmset(&plpns_log,
cfg.nvmset_id, dev->name, flags);
goto close_dev;
}
- err = nvme_get_log_predictable_lat_event(dev_fd(dev), cfg.rae, 0,
- log_size, pea_log);
+ err = nvme_cli_get_log_predictable_lat_event(dev, cfg.rae, 0,
+ log_size, pea_log);
if (!err)
nvme_show_predictable_latency_event_agg_log(pea_log, cfg.log_entries,
log_size, dev->name, flags);
goto close_dev;
}
- err = nvme_get_log_persistent_event(dev_fd(dev), cfg.action,
- sizeof(*pevent), pevent);
+ err = nvme_cli_get_log_persistent_event(dev, cfg.action,
+ sizeof(*pevent), pevent);
if (err < 0) {
fprintf(stderr, "persistent event log: %s\n",
nvme_strerror(errno));
err = -ENOMEM;
goto free_pevent;
}
- err = nvme_get_log_persistent_event(dev_fd(dev), cfg.action,
- cfg.log_len, pevent_log_info);
+ err = nvme_cli_get_log_persistent_event(dev, cfg.action,
+ cfg.log_len, pevent_log_info);
if (!err) {
- err = nvme_get_log_persistent_event(dev_fd(dev), cfg.action,
- sizeof(*pevent), pevent);
+ err = nvme_cli_get_log_persistent_event(dev, cfg.action,
+ sizeof(*pevent),
+ pevent);
if (err < 0) {
fprintf(stderr, "persistent event log: %s\n",
nvme_strerror(errno));
goto close_dev;
}
- err = nvme_get_log_endurance_grp_evt(dev_fd(dev), cfg.rae, 0,
- log_size, endurance_log);
+ err = nvme_cli_get_log_endurance_grp_evt(dev, cfg.rae, 0, log_size,
+ endurance_log);
if (!err)
nvme_show_endurance_group_event_agg_log(endurance_log, cfg.log_entries,
log_size, dev->name, flags);
if (flags < 0)
goto close_dev;
- err = nvme_get_log_lba_status(dev_fd(dev), true, 0, sizeof(__u32),
- &lslplen);
+ err = nvme_cli_get_log_lba_status(dev, true, 0, sizeof(__u32),
+ &lslplen);
if (err < 0) {
fprintf(stderr, "lba status log page: %s\n",
nvme_strerror(errno));
goto close_dev;
}
- err = nvme_get_log_lba_status(dev_fd(dev), cfg.rae, 0, lslplen,
- lab_status);
+ err = nvme_cli_get_log_lba_status(dev, cfg.rae, 0, lslplen,
+ lab_status);
if (!err)
nvme_show_lba_status_log(lab_status, lslplen, dev->name, flags);
else if (err > 0)
if (flags < 0)
goto close_dev;
- err = nvme_get_log_reservation(dev_fd(dev), false, &resv);
+ err = nvme_cli_get_log_reservation(dev, false, &resv);
if (!err)
nvme_show_resv_notif_log(&resv, dev->name, flags);
else if (err > 0)
goto close_dev;
}
- err = nvme_get_log_boot_partition(dev_fd(dev), false, cfg.lsp,
- sizeof(boot), &boot);
+ err = nvme_cli_get_log_boot_partition(dev, false, cfg.lsp,
+ sizeof(boot), &boot);
if (err < 0) {
fprintf(stderr, "boot partition log: %s\n",
nvme_strerror(errno));
goto close_output;
}
- err = nvme_get_log_boot_partition(dev_fd(dev), false, cfg.lsp,
- sizeof(boot) + bpsz,
- (struct nvme_boot_partition *)bp_log);
+ err = nvme_cli_get_log_boot_partition(dev, false, cfg.lsp,
+ sizeof(boot) + bpsz,
+ (struct nvme_boot_partition *)bp_log);
if (!err)
nvme_show_boot_part_log(&bp_log, dev->name, flags,
sizeof(boot) + bpsz);
if (cfg.raw_binary)
flags = BINARY;
- err = nvme_get_log_media_unit_stat(dev_fd(dev), cfg.domainid, &mus);
+ err = nvme_cli_get_log_media_unit_stat(dev, cfg.domainid, &mus);
if (!err)
nvme_show_media_unit_stat_log(&mus, flags);
else if (err > 0)
if (cfg.raw_binary)
flags = BINARY;
- err = nvme_get_log_support_cap_config_list(dev_fd(dev), cfg.domainid,
- &cap_log);
+ err = nvme_cli_get_log_support_cap_config_list(dev, cfg.domainid,
+ &cap_log);
if (!err)
nvme_show_supported_cap_config_log(&cap_log, flags);
else if (err > 0)
struct nvme_get_log_args args = {
.args_size = sizeof(args),
- .fd = dev_fd(dev),
.lid = cfg.log_id,
.nsid = cfg.namespace_id,
.lpo = cfg.lpo,
.ot = cfg.ot,
.len = cfg.log_len,
.log = log,
- .timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
.result = NULL,
};
- err = nvme_get_log(&args);
+ err = nvme_cli_get_log(dev, &args);
if (!err) {
if (!cfg.raw_binary) {
printf("Device:%s log-id:%d namespace-id:%#x\n",
if (cfg.human_readable)
flags |= VERBOSE;
- err = nvme_get_log_sanitize(dev_fd(dev), cfg.rae, &sanitize_log);
+ err = nvme_cli_get_log_sanitize(dev, cfg.rae, &sanitize_log);
if (!err)
nvme_show_sanitize_log(&sanitize_log, dev->name, flags);
else if (err > 0)
if (cfg.human_readable)
flags |= VERBOSE;
- err = nvme_get_log_fid_supported_effects(dev_fd(dev), false,
- &fid_support_log);
+ err = nvme_cli_get_log_fid_supported_effects(dev, false,
+ &fid_support_log);
if (!err)
nvme_show_fid_support_effects_log(&fid_support_log,
dev->name, flags);
if (cfg.human_readable)
flags |= VERBOSE;
- err = nvme_get_log_mi_cmd_supported_effects(dev_fd(dev), false,
- &mi_cmd_support_log);
+ err = nvme_cli_get_log_mi_cmd_supported_effects(dev, false,
+ &mi_cmd_support_log);
if (!err)
nvme_show_mi_cmd_support_effects_log(&mi_cmd_support_log,
dev->name, flags);
if (cfg.verbose)
flags |= VERBOSE;
- err = nvme_get_log_device_self_test(dev_fd(dev), &log);
+ err = nvme_cli_get_log_device_self_test(dev, &log);
if (!err)
nvme_show_self_test_log(&log, cfg.dst_entries, 0,
dev->name, flags);