]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
doc: Regenerate all docs for v1.3 v1.3
authorDaniel Wagner <dwagner@suse.de>
Mon, 30 Jan 2023 13:09:52 +0000 (14:09 +0100)
committerDaniel Wagner <dwagner@suse.de>
Mon, 30 Jan 2023 13:09:52 +0000 (14:09 +0100)
Signed-off-by: Daniel Wagner <dwagner@suse.de>
763 files changed:
doc/conf.py [new file with mode: 0644]
doc/config-schema.json [new file with mode: 0644]
doc/index.rst [new file with mode: 0644]
doc/man/nvme_admin_opcode.2
doc/man/nvme_admin_passthru.2
doc/man/nvme_admin_passthru64.2
doc/man/nvme_ae_info_css_nvm.2
doc/man/nvme_ae_info_error.2
doc/man/nvme_ae_info_notice.2
doc/man/nvme_ae_info_smart.2
doc/man/nvme_ae_type.2
doc/man/nvme_aggregate_endurance_group_event.2
doc/man/nvme_aggregate_predictable_lat_event.2
doc/man/nvme_ana_group_desc.2
doc/man/nvme_ana_log.2
doc/man/nvme_ana_state.2
doc/man/nvme_apst_entry.2
doc/man/nvme_boot_partition.2
doc/man/nvme_capacity_config_desc.2
doc/man/nvme_capacity_mgmt.2
doc/man/nvme_change_ns_event.2
doc/man/nvme_channel_config_desc.2
doc/man/nvme_cmb_size.2
doc/man/nvme_cmd_effects.2
doc/man/nvme_cmd_effects_log.2
doc/man/nvme_cmd_format_mset.2
doc/man/nvme_cmd_format_pi.2
doc/man/nvme_cmd_format_pil.2
doc/man/nvme_cmd_format_ses.2
doc/man/nvme_cmd_get_log_lid.2
doc/man/nvme_cmd_get_log_telemetry_host_lsp.2
doc/man/nvme_compare.2
doc/man/nvme_connect_err.2
doc/man/nvme_constants.2
doc/man/nvme_copy.2
doc/man/nvme_copy_range.2
doc/man/nvme_copy_range_f1.2
doc/man/nvme_create_ctrl.2
doc/man/nvme_create_root.2
doc/man/nvme_csi.2
doc/man/nvme_ctrl_first_ns.2
doc/man/nvme_ctrl_first_path.2
doc/man/nvme_ctrl_for_each_ns.2
doc/man/nvme_ctrl_for_each_ns_safe.2
doc/man/nvme_ctrl_for_each_path.2
doc/man/nvme_ctrl_for_each_path_safe.2
doc/man/nvme_ctrl_get_address.2
doc/man/nvme_ctrl_get_config.2
doc/man/nvme_ctrl_get_dhchap_host_key.2
doc/man/nvme_ctrl_get_dhchap_key.2
doc/man/nvme_ctrl_get_fd.2
doc/man/nvme_ctrl_get_firmware.2
doc/man/nvme_ctrl_get_host_iface.2
doc/man/nvme_ctrl_get_host_traddr.2
doc/man/nvme_ctrl_get_model.2
doc/man/nvme_ctrl_get_name.2
doc/man/nvme_ctrl_get_numa_node.2
doc/man/nvme_ctrl_get_queue_count.2
doc/man/nvme_ctrl_get_serial.2
doc/man/nvme_ctrl_get_sqsize.2
doc/man/nvme_ctrl_get_state.2
doc/man/nvme_ctrl_get_subsysnqn.2
doc/man/nvme_ctrl_get_subsystem.2
doc/man/nvme_ctrl_get_sysfs_dir.2
doc/man/nvme_ctrl_get_traddr.2
doc/man/nvme_ctrl_get_transport.2
doc/man/nvme_ctrl_get_trsvcid.2
doc/man/nvme_ctrl_identify.2
doc/man/nvme_ctrl_is_discovered.2
doc/man/nvme_ctrl_is_discovery_ctrl.2
doc/man/nvme_ctrl_is_persistent.2
doc/man/nvme_ctrl_is_unique_discovery_ctrl.2 [new file with mode: 0644]
doc/man/nvme_ctrl_list.2
doc/man/nvme_ctrl_metadata_type.2
doc/man/nvme_ctrl_next_ns.2
doc/man/nvme_ctrl_next_path.2
doc/man/nvme_ctrl_reset.2
doc/man/nvme_ctrl_set_dhchap_host_key.2
doc/man/nvme_ctrl_set_dhchap_key.2
doc/man/nvme_ctrl_set_discovered.2
doc/man/nvme_ctrl_set_discovery_ctrl.2
doc/man/nvme_ctrl_set_persistent.2
doc/man/nvme_ctrl_set_unique_discovery_ctrl.2 [new file with mode: 0644]
doc/man/nvme_ctrls_filter.2
doc/man/nvme_data_tfr.2
doc/man/nvme_default_host.2
doc/man/nvme_dev_self_test.2
doc/man/nvme_directive_dtype.2
doc/man/nvme_directive_receive_doper.2
doc/man/nvme_directive_recv.2
doc/man/nvme_directive_recv_identify_parameters.2
doc/man/nvme_directive_recv_stream_allocate.2
doc/man/nvme_directive_recv_stream_parameters.2
doc/man/nvme_directive_recv_stream_status.2
doc/man/nvme_directive_send.2
doc/man/nvme_directive_send_doper.2
doc/man/nvme_directive_send_id_endir.2
doc/man/nvme_directive_send_identify_endir.2
doc/man/nvme_directive_send_stream_release_identifier.2
doc/man/nvme_directive_send_stream_release_resource.2
doc/man/nvme_directive_types.2
doc/man/nvme_disconnect_ctrl.2
doc/man/nvme_dsm.2
doc/man/nvme_dsm_attributes.2
doc/man/nvme_dsm_range.2
doc/man/nvme_dst_stc.2
doc/man/nvme_dump_config.2
doc/man/nvme_dump_tree.2
doc/man/nvme_eg_critical_warning_flags.2
doc/man/nvme_eg_event_aggregate_log.2
doc/man/nvme_end_grp_chan_desc.2
doc/man/nvme_end_grp_config_desc.2
doc/man/nvme_endurance_group_log.2
doc/man/nvme_errno_to_string.2
doc/man/nvme_error_log_page.2
doc/man/nvme_fabrics_config.2
doc/man/nvme_fctype.2
doc/man/nvme_fdp_config_desc.2 [new file with mode: 0644]
doc/man/nvme_fdp_config_fdpa.2 [new file with mode: 0644]
doc/man/nvme_fdp_config_log.2 [new file with mode: 0644]
doc/man/nvme_fdp_event.2 [new file with mode: 0644]
doc/man/nvme_fdp_event_flags.2 [new file with mode: 0644]
doc/man/nvme_fdp_event_realloc.2 [new file with mode: 0644]
doc/man/nvme_fdp_event_realloc_flags.2 [new file with mode: 0644]
doc/man/nvme_fdp_event_type.2 [new file with mode: 0644]
doc/man/nvme_fdp_events_log.2 [new file with mode: 0644]
doc/man/nvme_fdp_reclaim_unit_handle_status.2 [new file with mode: 0644]
doc/man/nvme_fdp_reclaim_unit_handle_update.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruh_desc.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruh_status.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruh_status_desc.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruh_type.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruha.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruhu_desc.2 [new file with mode: 0644]
doc/man/nvme_fdp_ruhu_log.2 [new file with mode: 0644]
doc/man/nvme_fdp_stats_log.2 [new file with mode: 0644]
doc/man/nvme_fdp_supported_event_attributes.2 [new file with mode: 0644]
doc/man/nvme_fdp_supported_event_desc.2 [new file with mode: 0644]
doc/man/nvme_feat.2
doc/man/nvme_feat_auto_pst.2
doc/man/nvme_feat_fdp_events_cdw11.2 [new file with mode: 0644]
doc/man/nvme_feat_host_behavior.2
doc/man/nvme_feat_nswpcfg_state.2
doc/man/nvme_feat_plm_window_select.2
doc/man/nvme_feat_resv_notify_flags.2
doc/man/nvme_feat_tmpthresh_thsel.2
doc/man/nvme_features_async_event_config_flags.2
doc/man/nvme_features_id.2
doc/man/nvme_fid_supported_effects.2
doc/man/nvme_fid_supported_effects_log.2
doc/man/nvme_firmware_slot.2
doc/man/nvme_first_host.2
doc/man/nvme_first_subsystem.2
doc/man/nvme_flush.2
doc/man/nvme_for_each_host.2
doc/man/nvme_for_each_host_safe.2
doc/man/nvme_for_each_subsystem.2
doc/man/nvme_for_each_subsystem_safe.2
doc/man/nvme_format_nvm.2
doc/man/nvme_format_nvm_compln_event.2
doc/man/nvme_format_nvm_start_event.2
doc/man/nvme_free_ctrl.2
doc/man/nvme_free_host.2
doc/man/nvme_free_ns.2
doc/man/nvme_free_subsystem.2
doc/man/nvme_free_tree.2
doc/man/nvme_fw_commit.2
doc/man/nvme_fw_commit_ca.2
doc/man/nvme_fw_commit_event.2
doc/man/nvme_fw_download.2
doc/man/nvme_fw_download_seq.2
doc/man/nvme_gen_dhchap_key.2
doc/man/nvme_get_ana_log_len.2
doc/man/nvme_get_attr.2
doc/man/nvme_get_ctrl_attr.2
doc/man/nvme_get_ctrl_telemetry.2
doc/man/nvme_get_directive_receive_length.2
doc/man/nvme_get_discovery_args.2
doc/man/nvme_get_feature_length.2
doc/man/nvme_get_feature_length2.2
doc/man/nvme_get_features.2
doc/man/nvme_get_features_arbitration.2
doc/man/nvme_get_features_async_event.2
doc/man/nvme_get_features_auto_pst.2
doc/man/nvme_get_features_data.2
doc/man/nvme_get_features_endurance_event_cfg.2
doc/man/nvme_get_features_err_recovery.2
doc/man/nvme_get_features_hctm.2
doc/man/nvme_get_features_host_behavior.2
doc/man/nvme_get_features_host_id.2
doc/man/nvme_get_features_host_mem_buf.2
doc/man/nvme_get_features_iocs_profile.2
doc/man/nvme_get_features_irq_coalesce.2
doc/man/nvme_get_features_irq_config.2
doc/man/nvme_get_features_kato.2
doc/man/nvme_get_features_lba_range.2
doc/man/nvme_get_features_lba_sts_interval.2
doc/man/nvme_get_features_nopsc.2
doc/man/nvme_get_features_num_queues.2
doc/man/nvme_get_features_plm_config.2
doc/man/nvme_get_features_plm_window.2
doc/man/nvme_get_features_power_mgmt.2
doc/man/nvme_get_features_resv_mask.2
doc/man/nvme_get_features_resv_persist.2
doc/man/nvme_get_features_rrl.2
doc/man/nvme_get_features_sanitize.2
doc/man/nvme_get_features_sel.2
doc/man/nvme_get_features_simple.2
doc/man/nvme_get_features_sw_progress.2
doc/man/nvme_get_features_temp_thresh.2
doc/man/nvme_get_features_timestamp.2
doc/man/nvme_get_features_volatile_wc.2
doc/man/nvme_get_features_write_atomic.2
doc/man/nvme_get_features_write_protect.2
doc/man/nvme_get_host_telemetry.2
doc/man/nvme_get_lba_status.2
doc/man/nvme_get_lba_status_log.2
doc/man/nvme_get_log.2
doc/man/nvme_get_log_ana.2
doc/man/nvme_get_log_ana_groups.2
doc/man/nvme_get_log_boot_partition.2
doc/man/nvme_get_log_changed_ns_list.2
doc/man/nvme_get_log_cmd_effects.2
doc/man/nvme_get_log_create_telemetry_host.2
doc/man/nvme_get_log_device_self_test.2
doc/man/nvme_get_log_discovery.2
doc/man/nvme_get_log_endurance_group.2
doc/man/nvme_get_log_endurance_grp_evt.2
doc/man/nvme_get_log_error.2
doc/man/nvme_get_log_fdp_configurations.2 [new file with mode: 0644]
doc/man/nvme_get_log_fdp_events.2 [new file with mode: 0644]
doc/man/nvme_get_log_fdp_stats.2 [new file with mode: 0644]
doc/man/nvme_get_log_fid_supported_effects.2
doc/man/nvme_get_log_fw_slot.2
doc/man/nvme_get_log_lba_status.2
doc/man/nvme_get_log_media_unit_stat.2
doc/man/nvme_get_log_mi_cmd_supported_effects.2
doc/man/nvme_get_log_page.2
doc/man/nvme_get_log_persistent_event.2
doc/man/nvme_get_log_predictable_lat_event.2
doc/man/nvme_get_log_predictable_lat_nvmset.2
doc/man/nvme_get_log_reclaim_unit_handle_usage.2 [new file with mode: 0644]
doc/man/nvme_get_log_reservation.2
doc/man/nvme_get_log_sanitize.2
doc/man/nvme_get_log_smart.2
doc/man/nvme_get_log_support_cap_config_list.2
doc/man/nvme_get_log_supported_log_pages.2
doc/man/nvme_get_log_telemetry_ctrl.2
doc/man/nvme_get_log_telemetry_host.2
doc/man/nvme_get_log_zns_changed_zones.2
doc/man/nvme_get_logical_block_size.2
doc/man/nvme_get_new_host_telemetry.2
doc/man/nvme_get_ns_attr.2
doc/man/nvme_get_nsid.2
doc/man/nvme_get_path_attr.2
doc/man/nvme_get_property.2
doc/man/nvme_get_subsys_attr.2
doc/man/nvme_hmac_alg.2
doc/man/nvme_host_behavior_support.2
doc/man/nvme_host_get_dhchap_key.2
doc/man/nvme_host_get_hostid.2
doc/man/nvme_host_get_hostnqn.2
doc/man/nvme_host_get_hostsymname.2
doc/man/nvme_host_get_root.2
doc/man/nvme_host_is_pdc_enabled.2 [new file with mode: 0644]
doc/man/nvme_host_mem_buf_attrs.2
doc/man/nvme_host_metadata.2
doc/man/nvme_host_set_dhchap_key.2
doc/man/nvme_host_set_hostsymname.2
doc/man/nvme_host_set_pdc_enabled.2 [new file with mode: 0644]
doc/man/nvme_id_ctrl.2
doc/man/nvme_id_ctrl_anacap.2
doc/man/nvme_id_ctrl_apsta.2
doc/man/nvme_id_ctrl_avscc.2
doc/man/nvme_id_ctrl_cmic.2
doc/man/nvme_id_ctrl_cntrltype.2
doc/man/nvme_id_ctrl_cqes.2
doc/man/nvme_id_ctrl_ctratt.2
doc/man/nvme_id_ctrl_dctype.2
doc/man/nvme_id_ctrl_dsto.2
doc/man/nvme_id_ctrl_fcatt.2
doc/man/nvme_id_ctrl_fna.2
doc/man/nvme_id_ctrl_frmw.2
doc/man/nvme_id_ctrl_fuses.2
doc/man/nvme_id_ctrl_hctm.2
doc/man/nvme_id_ctrl_lpa.2
doc/man/nvme_id_ctrl_mec.2
doc/man/nvme_id_ctrl_nvm.2
doc/man/nvme_id_ctrl_nvmsr.2
doc/man/nvme_id_ctrl_nvscc.2
doc/man/nvme_id_ctrl_nwpc.2
doc/man/nvme_id_ctrl_oacs.2
doc/man/nvme_id_ctrl_oaes.2
doc/man/nvme_id_ctrl_ofcs.2
doc/man/nvme_id_ctrl_oncs.2
doc/man/nvme_id_ctrl_rpmbs.2
doc/man/nvme_id_ctrl_sanicap.2
doc/man/nvme_id_ctrl_sgls.2
doc/man/nvme_id_ctrl_sqes.2
doc/man/nvme_id_ctrl_vwc.2
doc/man/nvme_id_ctrl_vwci.2
doc/man/nvme_id_directives.2
doc/man/nvme_id_domain_attr.2
doc/man/nvme_id_domain_list.2
doc/man/nvme_id_endurance_group_list.2
doc/man/nvme_id_independent_id_ns.2
doc/man/nvme_id_iocs.2
doc/man/nvme_id_ns.2
doc/man/nvme_id_ns_attr.2
doc/man/nvme_id_ns_dlfeat.2
doc/man/nvme_id_ns_dpc.2
doc/man/nvme_id_ns_dps.2
doc/man/nvme_id_ns_flbas.2
doc/man/nvme_id_ns_granularity_desc.2
doc/man/nvme_id_ns_granularity_list.2
doc/man/nvme_id_ns_mc.2
doc/man/nvme_id_ns_nmic.2
doc/man/nvme_id_ns_rescap.2
doc/man/nvme_id_nsfeat.2
doc/man/nvme_id_nvmset_list.2
doc/man/nvme_id_psd.2
doc/man/nvme_id_uuid.2
doc/man/nvme_id_uuid_list.2
doc/man/nvme_id_uuid_list_entry.2
doc/man/nvme_identify.2
doc/man/nvme_identify_active_ns_list.2
doc/man/nvme_identify_active_ns_list_csi.2
doc/man/nvme_identify_allocated_ns.2
doc/man/nvme_identify_allocated_ns_list.2
doc/man/nvme_identify_allocated_ns_list_csi.2
doc/man/nvme_identify_cns.2
doc/man/nvme_identify_ctrl.2
doc/man/nvme_identify_ctrl_csi.2
doc/man/nvme_identify_ctrl_list.2
doc/man/nvme_identify_domain_list.2
doc/man/nvme_identify_endurance_group_list.2
doc/man/nvme_identify_independent_identify_ns.2
doc/man/nvme_identify_iocs.2
doc/man/nvme_identify_iocs_ns_csi_user_data_format.2
doc/man/nvme_identify_ns.2
doc/man/nvme_identify_ns_csi.2
doc/man/nvme_identify_ns_csi_user_data_format.2
doc/man/nvme_identify_ns_descs.2
doc/man/nvme_identify_ns_granularity.2
doc/man/nvme_identify_nsid_ctrl_list.2
doc/man/nvme_identify_nvmset_list.2
doc/man/nvme_identify_primary_ctrl.2
doc/man/nvme_identify_secondary_ctrl_list.2
doc/man/nvme_identify_uuid.2
doc/man/nvme_init_copy_range.2
doc/man/nvme_init_copy_range_f1.2
doc/man/nvme_init_ctrl.2
doc/man/nvme_init_ctrl_list.2
doc/man/nvme_init_dsm_range.2
doc/man/nvme_init_logging.2
doc/man/nvme_io.2
doc/man/nvme_io_control_flags.2
doc/man/nvme_io_dsm_flags.2
doc/man/nvme_io_mgmt_recv.2 [new file with mode: 0644]
doc/man/nvme_io_mgmt_recv_mo.2 [new file with mode: 0644]
doc/man/nvme_io_mgmt_send.2 [new file with mode: 0644]
doc/man/nvme_io_mgmt_send_mo.2 [new file with mode: 0644]
doc/man/nvme_io_opcode.2
doc/man/nvme_io_passthru.2
doc/man/nvme_io_passthru64.2
doc/man/nvme_is_64bit_reg.2
doc/man/nvme_lba_range_type.2
doc/man/nvme_lba_range_type_entry.2
doc/man/nvme_lba_rd.2
doc/man/nvme_lba_status.2
doc/man/nvme_lba_status_atype.2
doc/man/nvme_lba_status_desc.2
doc/man/nvme_lba_status_log.2
doc/man/nvme_lbaf.2
doc/man/nvme_lbaf_rp.2
doc/man/nvme_lbart.2
doc/man/nvme_lbas_ns_element.2
doc/man/nvme_lockdown.2
doc/man/nvme_log_ana_lsp.2
doc/man/nvme_lookup_ctrl.2
doc/man/nvme_lookup_host.2
doc/man/nvme_lookup_subsystem.2
doc/man/nvme_media_unit_config_desc.2
doc/man/nvme_media_unit_stat_desc.2
doc/man/nvme_media_unit_stat_log.2
doc/man/nvme_metadata_element_desc.2
doc/man/nvme_mi_admin_admin_passthru.2 [new file with mode: 0644]
doc/man/nvme_mi_admin_format_nvm.2
doc/man/nvme_mi_admin_fw_commit.2
doc/man/nvme_mi_admin_fw_download.2
doc/man/nvme_mi_admin_get_features_data.2
doc/man/nvme_mi_admin_get_log.2
doc/man/nvme_mi_admin_get_log_ana.2
doc/man/nvme_mi_admin_get_log_ana_groups.2
doc/man/nvme_mi_admin_get_log_boot_partition.2
doc/man/nvme_mi_admin_get_log_changed_ns_list.2
doc/man/nvme_mi_admin_get_log_cmd_effects.2
doc/man/nvme_mi_admin_get_log_create_telemetry_host.2
doc/man/nvme_mi_admin_get_log_device_self_test.2
doc/man/nvme_mi_admin_get_log_discovery.2
doc/man/nvme_mi_admin_get_log_endurance_group.2
doc/man/nvme_mi_admin_get_log_endurance_grp_evt.2
doc/man/nvme_mi_admin_get_log_error.2
doc/man/nvme_mi_admin_get_log_fid_supported_effects.2
doc/man/nvme_mi_admin_get_log_fw_slot.2
doc/man/nvme_mi_admin_get_log_lba_status.2
doc/man/nvme_mi_admin_get_log_media_unit_stat.2
doc/man/nvme_mi_admin_get_log_mi_cmd_supported_effects.2
doc/man/nvme_mi_admin_get_log_persistent_event.2
doc/man/nvme_mi_admin_get_log_predictable_lat_event.2
doc/man/nvme_mi_admin_get_log_predictable_lat_nvmset.2
doc/man/nvme_mi_admin_get_log_reservation.2
doc/man/nvme_mi_admin_get_log_sanitize.2
doc/man/nvme_mi_admin_get_log_simple.2
doc/man/nvme_mi_admin_get_log_smart.2
doc/man/nvme_mi_admin_get_log_support_cap_config_list.2
doc/man/nvme_mi_admin_get_log_supported_log_pages.2
doc/man/nvme_mi_admin_get_log_telemetry_ctrl.2
doc/man/nvme_mi_admin_get_log_telemetry_host.2
doc/man/nvme_mi_admin_get_log_zns_changed_zones.2
doc/man/nvme_mi_admin_get_nsid_log.2
doc/man/nvme_mi_admin_identify.2
doc/man/nvme_mi_admin_identify_active_ns_list.2
doc/man/nvme_mi_admin_identify_allocated_ns.2
doc/man/nvme_mi_admin_identify_allocated_ns_list.2
doc/man/nvme_mi_admin_identify_cns_nsid.2
doc/man/nvme_mi_admin_identify_ctrl.2
doc/man/nvme_mi_admin_identify_ctrl_list.2
doc/man/nvme_mi_admin_identify_ns.2
doc/man/nvme_mi_admin_identify_ns_descs.2
doc/man/nvme_mi_admin_identify_nsid_ctrl_list.2
doc/man/nvme_mi_admin_identify_partial.2
doc/man/nvme_mi_admin_identify_primary_ctrl.2
doc/man/nvme_mi_admin_identify_secondary_ctrl_list.2
doc/man/nvme_mi_admin_ns_attach.2
doc/man/nvme_mi_admin_ns_attach_ctrls.2
doc/man/nvme_mi_admin_ns_detach_ctrls.2
doc/man/nvme_mi_admin_req_hdr.2
doc/man/nvme_mi_admin_resp_hdr.2
doc/man/nvme_mi_admin_sanitize_nvm.2
doc/man/nvme_mi_admin_security_recv.2
doc/man/nvme_mi_admin_security_send.2
doc/man/nvme_mi_admin_xfer.2
doc/man/nvme_mi_ccs.2
doc/man/nvme_mi_close.2
doc/man/nvme_mi_close_ctrl.2
doc/man/nvme_mi_cmd_supported_effects.2
doc/man/nvme_mi_cmd_supported_effects_log.2
doc/man/nvme_mi_config_id.2
doc/man/nvme_mi_config_smbus_freq.2
doc/man/nvme_mi_create_root.2
doc/man/nvme_mi_csts.2
doc/man/nvme_mi_ctrl_health_status.2
doc/man/nvme_mi_cwarn.2
doc/man/nvme_mi_dtyp.2
doc/man/nvme_mi_elem.2
doc/man/nvme_mi_free_root.2
doc/man/nvme_mi_init_ctrl.2
doc/man/nvme_mi_message_type.2
doc/man/nvme_mi_mi_opcode.2
doc/man/nvme_mi_mi_read_mi_data_ctrl.2
doc/man/nvme_mi_mi_read_mi_data_ctrl_list.2
doc/man/nvme_mi_mi_read_mi_data_port.2
doc/man/nvme_mi_mi_read_mi_data_subsys.2
doc/man/nvme_mi_mi_req_hdr.2
doc/man/nvme_mi_mi_resp_hdr.2
doc/man/nvme_mi_mi_subsystem_health_status_poll.2
doc/man/nvme_mi_msg_hdr.2
doc/man/nvme_mi_msg_resp.2
doc/man/nvme_mi_nvm_ss_health_status.2
doc/man/nvme_mi_open_mctp.2
doc/man/nvme_mi_osc.2
doc/man/nvme_mi_port_pcie.2
doc/man/nvme_mi_port_smb.2
doc/man/nvme_mi_read_ctrl_info.2
doc/man/nvme_mi_read_nvm_ss_info.2
doc/man/nvme_mi_read_port_info.2
doc/man/nvme_mi_read_sc_list.2
doc/man/nvme_mi_resp_status.2
doc/man/nvme_mi_set_probe_enabled.2 [new file with mode: 0644]
doc/man/nvme_mi_status_to_string.2
doc/man/nvme_mi_vpd_hdr.2
doc/man/nvme_mi_vpd_mr_common.2
doc/man/nvme_mi_vpd_mra.2
doc/man/nvme_mi_vpd_ppmra.2
doc/man/nvme_mi_vpd_telem.2
doc/man/nvme_mi_vpd_tra.2
doc/man/nvme_namespace_attach_ctrls.2
doc/man/nvme_namespace_detach_ctrls.2
doc/man/nvme_namespace_filter.2
doc/man/nvme_namespace_first_path.2
doc/man/nvme_namespace_for_each_path.2
doc/man/nvme_namespace_for_each_path_safe.2
doc/man/nvme_namespace_next_path.2
doc/man/nvme_nd_ns_fpi.2
doc/man/nvme_next_host.2
doc/man/nvme_next_subsystem.2
doc/man/nvme_ns_attach.2
doc/man/nvme_ns_attach_ctrls.2
doc/man/nvme_ns_attach_sel.2
doc/man/nvme_ns_compare.2
doc/man/nvme_ns_detach_ctrls.2
doc/man/nvme_ns_flush.2
doc/man/nvme_ns_get_csi.2
doc/man/nvme_ns_get_ctrl.2
doc/man/nvme_ns_get_eui64.2
doc/man/nvme_ns_get_fd.2
doc/man/nvme_ns_get_firmware.2
doc/man/nvme_ns_get_generic_name.2
doc/man/nvme_ns_get_lba_count.2
doc/man/nvme_ns_get_lba_size.2
doc/man/nvme_ns_get_lba_util.2
doc/man/nvme_ns_get_meta_size.2
doc/man/nvme_ns_get_model.2
doc/man/nvme_ns_get_name.2
doc/man/nvme_ns_get_nguid.2
doc/man/nvme_ns_get_nsid.2
doc/man/nvme_ns_get_serial.2
doc/man/nvme_ns_get_subsystem.2
doc/man/nvme_ns_get_sysfs_dir.2
doc/man/nvme_ns_get_uuid.2
doc/man/nvme_ns_id_desc.2
doc/man/nvme_ns_id_desc_nidt.2
doc/man/nvme_ns_identify.2
doc/man/nvme_ns_identify_descs.2
doc/man/nvme_ns_list.2
doc/man/nvme_ns_metadata_type.2
doc/man/nvme_ns_mgmt.2
doc/man/nvme_ns_mgmt_create.2
doc/man/nvme_ns_mgmt_delete.2
doc/man/nvme_ns_mgmt_sel.2
doc/man/nvme_ns_read.2
doc/man/nvme_ns_rescan.2
doc/man/nvme_ns_verify.2
doc/man/nvme_ns_write.2
doc/man/nvme_ns_write_protect_cfg.2
doc/man/nvme_ns_write_uncorrectable.2
doc/man/nvme_ns_write_zeros.2
doc/man/nvme_nss_hw_err_event.2
doc/man/nvme_nvm_id_ns.2
doc/man/nvme_nvm_id_ns_elbaf.2
doc/man/nvme_nvm_identify_ctrl.2
doc/man/nvme_nvmeset_pl_status.2
doc/man/nvme_nvmset_attr.2
doc/man/nvme_nvmset_pl_events.2
doc/man/nvme_nvmset_predictable_lat_log.2
doc/man/nvme_open.2
doc/man/nvme_passthru_cmd.2
doc/man/nvme_passthru_cmd64.2
doc/man/nvme_path_get_ana_state.2
doc/man/nvme_path_get_ctrl.2
doc/man/nvme_path_get_name.2
doc/man/nvme_path_get_ns.2
doc/man/nvme_path_get_sysfs_dir.2
doc/man/nvme_paths_filter.2
doc/man/nvme_persistent_event_entry.2
doc/man/nvme_persistent_event_log.2
doc/man/nvme_persistent_event_types.2
doc/man/nvme_pevent_log_action.2
doc/man/nvme_plm_config.2
doc/man/nvme_pmr_size.2
doc/man/nvme_pmr_throughput.2
doc/man/nvme_power_on_reset_info_list.2
doc/man/nvme_primary_ctrl_cap.2
doc/man/nvme_psd_flags.2
doc/man/nvme_psd_power_scale.2
doc/man/nvme_psd_ps.2
doc/man/nvme_psd_workload.2
doc/man/nvme_read.2
doc/man/nvme_read_config.2
doc/man/nvme_refresh_topology.2
doc/man/nvme_register_offsets.2
doc/man/nvme_registered_ctrl.2
doc/man/nvme_registered_ctrl_ext.2
doc/man/nvme_rescan_ctrl.2
doc/man/nvme_resv_acquire.2
doc/man/nvme_resv_cptpl.2
doc/man/nvme_resv_notification_log.2
doc/man/nvme_resv_notify_rnlpt.2
doc/man/nvme_resv_racqa.2
doc/man/nvme_resv_register.2
doc/man/nvme_resv_release.2
doc/man/nvme_resv_report.2
doc/man/nvme_resv_rrega.2
doc/man/nvme_resv_rrela.2
doc/man/nvme_resv_rtype.2
doc/man/nvme_resv_status.2
doc/man/nvme_sanitize_compln_event.2
doc/man/nvme_sanitize_log_page.2
doc/man/nvme_sanitize_nvm.2
doc/man/nvme_sanitize_sanact.2
doc/man/nvme_sanitize_sstat.2
doc/man/nvme_sanitize_start_event.2
doc/man/nvme_scan.2
doc/man/nvme_scan_ctrl.2
doc/man/nvme_scan_ctrl_namespace_paths.2
doc/man/nvme_scan_ctrl_namespaces.2
doc/man/nvme_scan_ctrls.2
doc/man/nvme_scan_namespace.2
doc/man/nvme_scan_subsystem_namespaces.2
doc/man/nvme_scan_subsystems.2
doc/man/nvme_scan_topology.2
doc/man/nvme_secondary_ctrl.2
doc/man/nvme_secondary_ctrl_list.2
doc/man/nvme_security_receive.2
doc/man/nvme_security_send.2
doc/man/nvme_self_test_log.2
doc/man/nvme_set_feature_event.2
doc/man/nvme_set_features.2
doc/man/nvme_set_features_arbitration.2
doc/man/nvme_set_features_async_event.2
doc/man/nvme_set_features_auto_pst.2
doc/man/nvme_set_features_data.2
doc/man/nvme_set_features_endurance_evt_cfg.2
doc/man/nvme_set_features_err_recovery.2
doc/man/nvme_set_features_hctm.2
doc/man/nvme_set_features_host_behavior.2
doc/man/nvme_set_features_host_id.2
doc/man/nvme_set_features_irq_coalesce.2
doc/man/nvme_set_features_irq_config.2
doc/man/nvme_set_features_lba_range.2
doc/man/nvme_set_features_lba_sts_interval.2
doc/man/nvme_set_features_nopsc.2
doc/man/nvme_set_features_plm_config.2
doc/man/nvme_set_features_plm_window.2
doc/man/nvme_set_features_power_mgmt.2
doc/man/nvme_set_features_resv_mask.2
doc/man/nvme_set_features_resv_persist.2
doc/man/nvme_set_features_rrl.2
doc/man/nvme_set_features_sanitize.2
doc/man/nvme_set_features_simple.2
doc/man/nvme_set_features_sw_progress.2
doc/man/nvme_set_features_temp_thresh.2
doc/man/nvme_set_features_timestamp.2
doc/man/nvme_set_features_volatile_wc.2
doc/man/nvme_set_features_write_atomic.2
doc/man/nvme_set_features_write_protect.2
doc/man/nvme_set_property.2
doc/man/nvme_smart_crit.2
doc/man/nvme_smart_egcw.2
doc/man/nvme_smart_log.2
doc/man/nvme_st_code.2
doc/man/nvme_st_curr_op.2
doc/man/nvme_st_result.2
doc/man/nvme_st_valid_diag_info.2
doc/man/nvme_status_code.2
doc/man/nvme_status_code_type.2
doc/man/nvme_status_equals.2
doc/man/nvme_status_field.2
doc/man/nvme_status_get_type.2
doc/man/nvme_status_get_value.2
doc/man/nvme_status_result.2
doc/man/nvme_status_to_errno.2
doc/man/nvme_status_to_string.2
doc/man/nvme_status_type.2
doc/man/nvme_streams_directive_params.2
doc/man/nvme_streams_directive_status.2
doc/man/nvme_submit_admin_passthru.2
doc/man/nvme_submit_admin_passthru64.2
doc/man/nvme_submit_io_passthru.2
doc/man/nvme_submit_io_passthru64.2
doc/man/nvme_subsys_filter.2
doc/man/nvme_subsys_type.2
doc/man/nvme_subsystem_first_ctrl.2
doc/man/nvme_subsystem_first_ns.2
doc/man/nvme_subsystem_for_each_ctrl.2
doc/man/nvme_subsystem_for_each_ctrl_safe.2
doc/man/nvme_subsystem_for_each_ns.2
doc/man/nvme_subsystem_for_each_ns_safe.2
doc/man/nvme_subsystem_get_host.2
doc/man/nvme_subsystem_get_name.2
doc/man/nvme_subsystem_get_nqn.2
doc/man/nvme_subsystem_get_sysfs_dir.2
doc/man/nvme_subsystem_get_type.2
doc/man/nvme_subsystem_lookup_namespace.2
doc/man/nvme_subsystem_next_ctrl.2
doc/man/nvme_subsystem_next_ns.2
doc/man/nvme_subsystem_reset.2
doc/man/nvme_supported_cap_config_list_log.2
doc/man/nvme_supported_log_pages.2
doc/man/nvme_telemetry_da.2
doc/man/nvme_telemetry_log.2
doc/man/nvme_thermal_exc_event.2
doc/man/nvme_time_stamp_change_event.2
doc/man/nvme_timestamp.2
doc/man/nvme_unlink_ctrl.2
doc/man/nvme_update_config.2
doc/man/nvme_uring_cmd.2
doc/man/nvme_verify.2
doc/man/nvme_version.2
doc/man/nvme_virt_mgmt_act.2
doc/man/nvme_virt_mgmt_rt.2
doc/man/nvme_virtual_mgmt.2
doc/man/nvme_write.2
doc/man/nvme_write_uncorrectable.2
doc/man/nvme_write_zeros.2
doc/man/nvme_zns_append.2
doc/man/nvme_zns_changed_zone_log.2
doc/man/nvme_zns_desc.2
doc/man/nvme_zns_id_ctrl.2
doc/man/nvme_zns_id_ns.2
doc/man/nvme_zns_identify_ctrl.2
doc/man/nvme_zns_identify_ns.2
doc/man/nvme_zns_lbafe.2
doc/man/nvme_zns_mgmt_recv.2
doc/man/nvme_zns_mgmt_send.2
doc/man/nvme_zns_recv_action.2
doc/man/nvme_zns_report_options.2
doc/man/nvme_zns_report_zones.2
doc/man/nvme_zns_send_action.2
doc/man/nvme_zns_za.2
doc/man/nvme_zns_zs.2
doc/man/nvme_zns_zt.2
doc/man/nvme_zone_report.2
doc/man/nvmf_add_ctrl.2
doc/man/nvmf_addr_family.2
doc/man/nvmf_adrfam_str.2
doc/man/nvmf_cms_str.2
doc/man/nvmf_connect_data.2
doc/man/nvmf_connect_disc_entry.2
doc/man/nvmf_default_config.2
doc/man/nvmf_dim_data.2
doc/man/nvmf_dim_entfmt.2
doc/man/nvmf_dim_etype.2
doc/man/nvmf_dim_tas.2
doc/man/nvmf_disc_eflags.2
doc/man/nvmf_disc_log_entry.2
doc/man/nvmf_discovery_log.2
doc/man/nvmf_eflags_str.2
doc/man/nvmf_exat_len.2
doc/man/nvmf_exattype.2
doc/man/nvmf_ext_attr.2
doc/man/nvmf_ext_die.2
doc/man/nvmf_get_discovery_log.2
doc/man/nvmf_get_discovery_wargs.2
doc/man/nvmf_hostid_from_file.2
doc/man/nvmf_hostnqn_from_file.2
doc/man/nvmf_hostnqn_generate.2
doc/man/nvmf_log_discovery_lid_support.2
doc/man/nvmf_log_discovery_lsp.2
doc/man/nvmf_prtype_str.2
doc/man/nvmf_qptype_str.2
doc/man/nvmf_rdma_cms.2
doc/man/nvmf_rdma_prtype.2
doc/man/nvmf_rdma_qptype.2
doc/man/nvmf_register_ctrl.2
doc/man/nvmf_sectype_str.2
doc/man/nvmf_subtype_str.2
doc/man/nvmf_tcp_sectype.2
doc/man/nvmf_treq.2
doc/man/nvmf_treq_str.2
doc/man/nvmf_trtype.2
doc/man/nvmf_trtype_str.2
doc/man/nvmf_update_config.2
doc/rst/fabrics.rst [new file with mode: 0644]
doc/rst/filters.rst [new file with mode: 0644]
doc/rst/ioctl.rst [new file with mode: 0644]
doc/rst/linux.rst [new file with mode: 0644]
doc/rst/log.rst [new file with mode: 0644]
doc/rst/mi.rst [new file with mode: 0644]
doc/rst/tree.rst [new file with mode: 0644]
doc/rst/types.rst [new file with mode: 0644]
doc/rst/util.rst [new file with mode: 0644]

diff --git a/doc/conf.py b/doc/conf.py
new file mode 100644 (file)
index 0000000..d641bee
--- /dev/null
@@ -0,0 +1,32 @@
+# Configuration file for the Sphinx documentation builder.
+#
+# This file only contains a selection of the most common options. For a full
+# list see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+
+# -- Project information -----------------------------------------------------
+
+project = 'libnvme'
+copyright = '2020, Keith Busch'
+author = 'Keith Busch <kbusch@kernel.org>'
+master_doc = 'index'
+
+release = '1.3'
+
+
+# -- General configuration ---------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = ['html', 'man', 'Thumbs.db', '.DS_Store']
diff --git a/doc/config-schema.json b/doc/config-schema.json
new file mode 100644 (file)
index 0000000..bde3d91
--- /dev/null
@@ -0,0 +1,172 @@
+{
+    "$schema": "https://json-schema.org/draft/2020-12/schema",
+    "$id": "https://github.com/linux-nvme/libnvme/doc/config-schema.json",
+    "title": "config.json",
+    "description": "libnvme JSON configuration",
+    "type": "object",
+    "properties": {
+       "hosts": {
+           "description": "Array of NVMe Host properties",
+           "type": "array",
+           "items": { "$ref": "#/$defs/host" }
+       }
+    },
+    "$defs": {
+       "host": {
+           "description": "NVMe Host properties",
+           "type": "object",
+           "properties": {
+               "hostnqn": {
+                   "description": "NVMe host NQN",
+                   "type": "string",
+                   "maxLength": 223
+               },
+               "hostid": {
+                   "description": "NVMe host ID",
+                   "type": "string"
+               },
+               "dhchap_key": {
+                   "description": "Host DH-HMAC-CHAP key",
+                   "type": "string"
+               },
+               "hostsymname": {
+                   "description": "NVMe host symbolic name",
+                   "type": "string"
+               },
+               "persistent_discovery_ctrl": {
+                       "description": "Enable/disable Persistent Discovery Controller",
+                       "type": "boolean"
+               },
+               "required": [ "hostnqn" ],
+               "subsystems": {
+                   "description": "Array of NVMe subsystem properties",
+                   "type": "array",
+                   "items": { "$ref": "#/$defs/subsystem" }
+               }
+           }
+       },
+       "subsystem": {
+           "description": "NVMe subsystem properties",
+           "type": "object",
+           "properties": {
+               "nqn": {
+                   "description": "Subsystem NQN",
+                   "type": "string",
+                   "maxLength": 223
+               },
+               "ports": {
+                   "description": "Array of NVMe subsystem ports",
+                   "type": "array",
+                   "items": { "$ref": "#/$defs/port" }
+               },
+               "required": [ "nqn" ]
+           }
+       },
+       "port": {
+           "description": "NVMe subsystem port",
+           "type": "object",
+           "properties": {
+               "transport": {
+                   "description": "Transport type",
+                   "type": "string"
+               },
+               "traddr": {
+                   "description": "Transport address",
+                   "type": "string"
+               },
+               "host_traddr": {
+                   "description": "Host transport address",
+                   "type": "string"
+               },
+               "host_iface": {
+                   "description": "Host interface name",
+                   "type": "string"
+               },
+               "trsvcid": {
+                   "description": "Transport service identifier",
+                   "type": "string"
+               },
+               "dhchap_key": {
+                   "description": "Host DH-HMAC-CHAP key",
+                   "type": "string"
+               },
+               "dhchap_ctrl_key": {
+                   "description": "Controller DH-HMAC-CHAP key",
+                   "type": "string"
+               },
+               "nr_io_queues": {
+                   "description": "Number of I/O queues",
+                   "type": "integer"
+               },
+               "nr_write_queues": {
+                   "description": "Number of write queues",
+                   "type": "integer"
+               },
+               "nr_poll_queues": {
+                   "description": "Number of poll queues",
+                   "type": "integer"
+               },
+               "queue_size": {
+                   "description": "Queue size",
+                   "type": "integer"
+               },
+               "keep_alive_tmo": {
+                   "description": "Keep-Alive timeout (in seconds)",
+                   "type": "integer"
+               },
+               "reconnect_delay": {
+                   "description": "Reconnect delay (in seconds)",
+                   "type": "integer"
+               },
+               "ctrl_loss_tmo": {
+                   "description": "Controller loss timeout (in seconds)",
+                   "type": "integer"
+               },
+               "fast_io_fail_tmo": {
+                   "description": "Fast I/O Fail timeout (in seconds)",
+                   "type": "integer",
+                   "default": 600
+               },
+               "tos": {
+                   "description": "Type of service",
+                   "type": "integer",
+                   "default": -1
+               },
+               "duplicate_connect": {
+                   "description": "Allow duplicate connections",
+                   "type": "boolean",
+                   "default": false
+               },
+               "disable_sqflow": {
+                   "description": "Explicitly disable SQ flow control",
+                   "type": "boolean",
+                   "default": false
+               },
+               "hdr_digest": {
+                   "description": "Enable header digest",
+                   "type": "boolean",
+                   "default": false
+               },
+               "data_digest": {
+                   "description": "Enable data digest",
+                   "type": "boolean",
+                   "default": false
+               },
+               "tls": {
+                   "description": "Enable TLS encryption",
+                   "type": "boolean",
+                   "default": false
+               },
+               "persistent": {
+                   "description": "Create persistent discovery connection",
+                   "type": "boolean"
+               },
+               "discovery": {
+                   "description": "Connect to a discovery controller",
+                   "type": "boolean"
+               }
+           },
+           "required": [ "transport" ]
+       }
+    }
+}
diff --git a/doc/index.rst b/doc/index.rst
new file mode 100644 (file)
index 0000000..54c2415
--- /dev/null
@@ -0,0 +1,23 @@
+Welcome to libnvme's documentation!
+===================================
+
+This is the libnvme development C library. libnvme provides type definitions for
+NVMe specification structures, enumerations, and bit fields,
+helper functions to construct, dispatch, and decode commands and payloads,
+and utilities to connect, scan, and manage nvme devices on a Linux system.
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   installation.rst
+   quickstart.rst
+   mi.rst
+   api.rst
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
index be7d1c344cd9dff1f90c61622329936e646fd305..26dfe5fe320fcb2f447b1e5383e597e7e66ad972 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_admin_opcode" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_admin_opcode" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_admin_opcode \- Known NVMe admin opcodes
 .SH SYNOPSIS
index acf2a63ef0f05a2bd5057bff742cc76e4412168d..eebc5f12e08f0a4e8f929112c6448af65ef270fc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_admin_passthru" 9 "nvme_admin_passthru" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_admin_passthru" 9 "nvme_admin_passthru" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_admin_passthru \- Submit an nvme passthrough command
 .SH SYNOPSIS
index 806251e47d9af79631db30f05f4710f51af75b2c..50a2091e1101f963e611cdcfcb8a6b5476ceb38d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_admin_passthru64" 9 "nvme_admin_passthru64" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_admin_passthru64" 9 "nvme_admin_passthru64" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_admin_passthru64 \- Submit a 64-bit nvme passthrough command
 .SH SYNOPSIS
index 4090339672f734a03d56bb1bff5121ce200e1230..08db970ebde1c99a280ad9c49f7f90c03331dc44 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ae_info_css_nvm" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ae_info_css_nvm" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ae_info_css_nvm \- Asynchronous Event Information - I/O Command Specific Status
 .SH SYNOPSIS
index 4b8deeb274d73be1e3d354ed5860a8ae7186cfa6..dc7e35a4ecb1463a6a0a802e89f292d325ce8813 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ae_info_error" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ae_info_error" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ae_info_error \- Asynchronous Event Information - Error Status
 .SH SYNOPSIS
index 5ccb5ed28ee8b6571e9cea5c1053f0033c59767e..ed4b17627b25ad3e153edd3a13a76094f31f1c42 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ae_info_notice" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ae_info_notice" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ae_info_notice \- Asynchronous Event Information - Notice
 .SH SYNOPSIS
index 964a7bb27806d2e486af64176844a40b6727aa21..edbab31ac86caa9e1ee78ea2e4955f5fa9df6c3c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ae_info_smart" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ae_info_smart" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ae_info_smart \- Asynchronous Event Information - SMART / Health Status
 .SH SYNOPSIS
index 478522e73f18f4dddb9ba706409d80833668505d..e0e99a229b5880b8cf4a2c5dcb0cb309a6caf039 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ae_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ae_type" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ae_type \- Asynchronous Event Type
 .SH SYNOPSIS
index 8e104f4ffccd9ee36ab42dca29270e1525af1ad0..d52d339a60fd4db2bb5f5daad85922653851ad9c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_aggregate_endurance_group_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_aggregate_endurance_group_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_aggregate_endurance_group_event \- Endurance Group Event Aggregate
 .SH SYNOPSIS
index 871cf1c6845a1534ca8289ab17c5ae81351a6b40..a673c7c9fcc95b10078637b149803f9e05836be1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_aggregate_predictable_lat_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_aggregate_predictable_lat_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_aggregate_predictable_lat_event \- Predictable Latency Event Aggregate Log Page
 .SH SYNOPSIS
index 02056c55ab73fcbb386cd5de7b624d9c9c950bf8..67e025f713e74b32547fc256eb14314719d0217b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_ana_group_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_ana_group_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_ana_group_desc \- ANA Group Descriptor
 .SH SYNOPSIS
index 1a09d3155e75602fa1b5e25a5618f134a7360803..3bb09e1c1a32d8cded76a57cc39cf5914d40d276 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_ana_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_ana_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_ana_log \- Asymmetric Namespace Access Log
 .SH SYNOPSIS
index a177adeae0711e3c4cfdf82a8cd92674bd426bcc..a1a6e2c1dfe2016186833b0eaddd1b06b76e376b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ana_state" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ana_state" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ana_state \- ANA Group Descriptor - Asymmetric Namespace Access State
 .SH SYNOPSIS
index 13b2077ae3c7759e6b680f82efcb5c6137f7d5ec..6df81f524ec8c0699538c65d1f12f07043bd1340 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_apst_entry" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_apst_entry" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_apst_entry \- Autonomous Power State Transition
 .SH SYNOPSIS
index 0005b9959128f392ed3b10b33aaa2451e9eb3504..20539dd38c9b83dd019e34945bc14b4f99ee1fcc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_boot_partition" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_boot_partition" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_boot_partition \- Boot Partition Log
 .SH SYNOPSIS
index f3bd068cc4ef6994df5b1f8ee02d0d7d166d2b5d..911ae67a8e2e18186cdf94c6b4a12e80e4077c91 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_capacity_config_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_capacity_config_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_capacity_config_desc \- Capacity Configuration structure definitions
 .SH SYNOPSIS
index 8dba4a1b47310d1f11fe07e5bf31dd6b3d49a3aa..6ab8d90f70f7f1d76e605646c4ca81ea7645a12c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_capacity_mgmt" 9 "nvme_capacity_mgmt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_capacity_mgmt" 9 "nvme_capacity_mgmt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_capacity_mgmt \- Capacity management command
 .SH SYNOPSIS
index 78920834a16caba719250822fd3e6a1ab364d73a..56618221c2e4677932946abea896e9f5cb7699d8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_change_ns_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_change_ns_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_change_ns_event \- Change Namespace Event Data
 .SH SYNOPSIS
index 3948070c2520cb95ba30f073b87fe9aa3b99c31d..59110f7ec4526aee2383e01ce5638778c1cbefa4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_channel_config_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_channel_config_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_channel_config_desc \- Channel Configuration Descriptor
 .SH SYNOPSIS
index 2166cba901893d25191b2774335306611a04f2ac..86e6417d13e539f5027c84ef2943776c9361949b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_cmb_size" 9 "nvme_cmb_size" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_cmb_size" 9 "nvme_cmb_size" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_cmb_size \- Calculate size of the controller memory buffer
 .SH SYNOPSIS
index 7600ea37b477ff0264b5f4e0e894d7de600b8a71..1e059864c3b36ca97287ad990003a4d9252572da 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_effects" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_effects" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_effects \- Commands Supported and Effects
 .SH SYNOPSIS
index 83e0a85f856b28c2b3d6a1fc3baa03d6a4f9c022..453098c0f7a85ba793e5d03feee3b6acffbe69e5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_cmd_effects_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_cmd_effects_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_cmd_effects_log \- Commands Supported and Effects Log
 .SH SYNOPSIS
index d1cb0eb9fa4e87e76943d3f9ff9f80b0498c298f..bd8f952e54bde7297d54f4112fc28e3b7d9192a4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_format_mset" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_format_mset" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_format_mset \- Format NVM - Metadata Settings
 .SH SYNOPSIS
index 87ca2f4d996acd5cdcc7444eb12f23f4d85523d2..d5fb1da0190445e959be6aa17119336e809c3fc7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_format_pi" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_format_pi" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_format_pi \- Format NVM - Protection Information
 .SH SYNOPSIS
index d21373f2411646d5f6faf8699085243ed696b8c6..17d35532fd28d4924f10bb7a328051f7c7c82863 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_format_pil" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_format_pil" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_format_pil \- Format NVM - Protection Information Location
 .SH SYNOPSIS
index 257c7a5fe2272b0d53e5e7c76a88c3598063fabc..637413803f6b52f4d37f78d7cf49faf8b150ff81 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_format_ses" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_format_ses" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_format_ses \- Format NVM - Secure Erase Settings
 .SH SYNOPSIS
index 31ee57c2205a5bb615a363b44ed7237bb41e874b..130d0ab95aa4c38e68761972b1b3ac63399c9152 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_get_log_lid" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_get_log_lid" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_get_log_lid \- Get Log Page -Log Page Identifiers
 .SH SYNOPSIS
@@ -88,6 +88,22 @@ enum nvme_cmd_get_log_lid {
 , 
 .br
 .br
+.BI "    NVME_LOG_LID_FDP_CONFIGS"
+, 
+.br
+.br
+.BI "    NVME_LOG_LID_FDP_RUH_USAGE"
+, 
+.br
+.br
+.BI "    NVME_LOG_LID_FDP_STATS"
+, 
+.br
+.br
+.BI "    NVME_LOG_LID_FDP_EVENTS"
+, 
+.br
+.br
 .BI "    NVME_LOG_LID_DISCOVER"
 , 
 .br
@@ -146,6 +162,14 @@ Feature Identifiers Supported and Effects
 NVMe-MI Commands Supported and Effects
 .IP "NVME_LOG_LID_BOOT_PARTITION" 12
 Boot Partition
+.IP "NVME_LOG_LID_FDP_CONFIGS" 12
+FDP Configurations
+.IP "NVME_LOG_LID_FDP_RUH_USAGE" 12
+Reclaim Unit Handle Usage
+.IP "NVME_LOG_LID_FDP_STATS" 12
+FDP Statistics
+.IP "NVME_LOG_LID_FDP_EVENTS" 12
+FDP Events
 .IP "NVME_LOG_LID_DISCOVER" 12
 Discovery
 .IP "NVME_LOG_LID_RESERVATION" 12
index 7ba3d49b6152bcdc71875adec9439cf347beb1f5..0031542a62ccd6db7272fa9839e6593e57ec6b3c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_cmd_get_log_telemetry_host_lsp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_cmd_get_log_telemetry_host_lsp" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_cmd_get_log_telemetry_host_lsp \- Telemetry Host-Initiated log specific field
 .SH SYNOPSIS
index 961d5847f0163cf54efbeb6a3f5084091984c0a0..9db7b98e2c71a3d6f910a78c3a05129e690513d1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_compare" 9 "nvme_compare" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_compare" 9 "nvme_compare" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_compare \- Submit an nvme user compare command
 .SH SYNOPSIS
index 0b5e4bc97241c48c956c67af23f3353f63b76c8c..071869c482152e7f0b99ea2dc0bb5c8d90b6f961 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_connect_err" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_connect_err" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_connect_err \- nvme connect error codes
 .SH SYNOPSIS
@@ -69,6 +69,10 @@ enum nvme_connect_err {
 .br
 .br
 .BI "    ENVME_CONNECT_OPNOTSUPP"
+, 
+.br
+.br
+.BI "    ENVME_CONNECT_CONNREFUSED"
 
 };
 .SH Constants
@@ -106,3 +110,5 @@ hostnqn already in use
 invalid interface
 .IP "ENVME_CONNECT_OPNOTSUPP" 12
 not supported
+.IP "ENVME_CONNECT_CONNREFUSED" 12
+connection refused
index a79031c8006924fc01ecbe3a55ee00b4e6bd256c..e16aec49375c6d05d1056f69b7073220e1576c8b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_constants" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_constants" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_constants \- A place to stash various constant nvme values
 .SH SYNOPSIS
index 71489d21d24cdaf5e431b029c55050c036a50ece..5c68de350cedd59d61c4e2e716d62bf080de1397 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_copy" 9 "nvme_copy" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_copy" 9 "nvme_copy" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_copy \- Copy command
 .SH SYNOPSIS
index fb82d8d73d25bdae1001e6107156af2fda1c8068..473a8a898e44c521a9055992d588c04a441e4c78 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_copy_range" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_copy_range" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_copy_range \- Copy - Source Range Entries Descriptor Format
 .SH SYNOPSIS
index f83ef09d2d360f71df80e3de202b4c9d38d711a4..8bd343089e37b86bbcc959730859c084e67181cd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_copy_range_f1" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_copy_range_f1" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_copy_range_f1 \- Copy - Source Range Entries Descriptor Format 1h
 .SH SYNOPSIS
index 325cb84eddc63e96429fca36633748cdc8dabf00..1f2d1c954c92272d775271cd7e4bb0bafcebee34 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_create_ctrl" 9 "nvme_create_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_create_ctrl" 9 "nvme_create_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_create_ctrl \- Allocate an unconnected NVMe controller
 .SH SYNOPSIS
index 924d7e29c550eebefb892fdb3713e6cf0fbad0f8..82337eecec5df4e7f21a9782096e54efd723884a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_create_root" 9 "nvme_create_root" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_create_root" 9 "nvme_create_root" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_create_root \- Initialize root object
 .SH SYNOPSIS
index c2496dc177b45f4374543298317e7f4319bec35b..f879e8387ad57bd4f08e82c22cf150ff58a9ca0c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_csi" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_csi" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_csi \- Defined command set indicators
 .SH SYNOPSIS
index 8e8e4dfdd64a9d9e517cf0bed66e39d829ae9cfe..6318f2ea207899d7b0b1993c37292cc67b1a7345 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_first_ns" 9 "nvme_ctrl_first_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_first_ns" 9 "nvme_ctrl_first_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_first_ns \- Start namespace iterator
 .SH SYNOPSIS
index 0247898df9436e0692644a0ce8027bc78b4e33f1..2c4fdf38b701a8e2930db28c3b5f5634f18411e4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_first_path" 9 "nvme_ctrl_first_path" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_first_path" 9 "nvme_ctrl_first_path" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_first_path \- Start path iterator
 .SH SYNOPSIS
index d08adeb24e2de422705b50b508c4480e55c0f2ac..7527215c843c79ed14d2caee31f24d7352f5c2af 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_for_each_ns" 9 "nvme_ctrl_for_each_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_for_each_ns" 9 "nvme_ctrl_for_each_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_for_each_ns \- Traverse namespaces
 .SH SYNOPSIS
index 87862b0db16d9a28921e9b22e582e331fe91d9e5..69ad28782b166e786888f2a3f86b45ffa2e025b2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_for_each_ns_safe" 9 "nvme_ctrl_for_each_ns_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_for_each_ns_safe" 9 "nvme_ctrl_for_each_ns_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_for_each_ns_safe \- Traverse namespaces
 .SH SYNOPSIS
index 6d6d33f4728f8665377378ac9953b3f70b4cc3e7..bbbfc99b44f8e51ec65cfd3829a739ba596421ea 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_for_each_path" 9 "nvme_ctrl_for_each_path" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_for_each_path" 9 "nvme_ctrl_for_each_path" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_for_each_path \- Traverse paths
 .SH SYNOPSIS
index b2f8be4bc898b272e221c08f19312fe28f3a5284..effebd03714d79989e161dd9857a544c29613fee 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_for_each_path_safe" 9 "nvme_ctrl_for_each_path_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_for_each_path_safe" 9 "nvme_ctrl_for_each_path_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_for_each_path_safe \- Traverse paths
 .SH SYNOPSIS
index f9686c182807dd6272e04e4407ccb27368423701..e4341ea9258af6d82ed66b3c155593eb7139f2d2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_address" 9 "nvme_ctrl_get_address" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_address" 9 "nvme_ctrl_get_address" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_address \- Address string of a controller
 .SH SYNOPSIS
index 47269e528705036b989d2c4ca5173c5ca5aaa037..a9a9729a2d5d61d7fee8705b76fa75bf71bee81f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_config" 9 "nvme_ctrl_get_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_config" 9 "nvme_ctrl_get_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_config \- Fabrics configuration of a controller
 .SH SYNOPSIS
index 174aa971587336db44d1e6432c11d9e4c30279bb..bb0bee4f2bf08e591c4f90fedab789f1e43da9a7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_dhchap_host_key" 9 "nvme_ctrl_get_dhchap_host_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_dhchap_host_key" 9 "nvme_ctrl_get_dhchap_host_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_dhchap_host_key \- Return host key
 .SH SYNOPSIS
index a3efd363a045df15c7c2cf4014452714eb14104b..f60f0a22d6ce9c30b83257afd74f59bce3046fb3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_dhchap_key" 9 "nvme_ctrl_get_dhchap_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_dhchap_key" 9 "nvme_ctrl_get_dhchap_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_dhchap_key \- Return controller key
 .SH SYNOPSIS
index daf746b9a09e29fef4d0b9bb7447ba3e0d059317..abaf6ef1bd74fba3f48d0642b273211a9c55d320 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_fd" 9 "nvme_ctrl_get_fd" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_fd" 9 "nvme_ctrl_get_fd" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_fd \- Get associated file descriptor
 .SH SYNOPSIS
index 3e3766cc7107d4809922588819ba8d258a026251..4818b25b16cb20f98030ef56f9587b3ad584db85 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_firmware" 9 "nvme_ctrl_get_firmware" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_firmware" 9 "nvme_ctrl_get_firmware" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_firmware \- Firmware string of a controller
 .SH SYNOPSIS
index 2e98010c7c9eee2f1e1abdedd560b5b36c6481d4..0c058ff09ea1651d6565954e045d205dd068c396 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_host_iface" 9 "nvme_ctrl_get_host_iface" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_host_iface" 9 "nvme_ctrl_get_host_iface" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_host_iface \- Host interface name of a controller
 .SH SYNOPSIS
index 61022697529055ae769c5d38f96be3ba03980940..fabe75aa89c3bf0e41ac586cd51f607a4c143748 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_host_traddr" 9 "nvme_ctrl_get_host_traddr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_host_traddr" 9 "nvme_ctrl_get_host_traddr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_host_traddr \- Host transport address of a controller
 .SH SYNOPSIS
index 3471eb9b3eab84540f9cbfdea1fde0c9c1bb5619..0d780a29a311b2dc2da4a2bfae15d1a17ed65e75 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_model" 9 "nvme_ctrl_get_model" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_model" 9 "nvme_ctrl_get_model" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_model \- Model of a controller
 .SH SYNOPSIS
index 0c9c5bd507584c23df278a619d13421e83ccd816..29276c93c53079e4c882a4d316888c60271e9f03 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_name" 9 "nvme_ctrl_get_name" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_name" 9 "nvme_ctrl_get_name" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_name \- sysfs name of a controller
 .SH SYNOPSIS
index 6be8e992ab61e922698c16a7b24cd23f4ad4ad72..68365ca650b18d8126a060e3e8a8cc974c53ef27 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_numa_node" 9 "nvme_ctrl_get_numa_node" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_numa_node" 9 "nvme_ctrl_get_numa_node" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_numa_node \- NUMA node of a controller
 .SH SYNOPSIS
index 8852d849fc0e0e42fdb1fa44bf76134dd4198af9..a996dd08170fb71cfda694fe695f4563bba25ab9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_queue_count" 9 "nvme_ctrl_get_queue_count" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_queue_count" 9 "nvme_ctrl_get_queue_count" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_queue_count \- Queue count of a controller
 .SH SYNOPSIS
index 0af26f4f61672511557b707c15d59d919b7f0c55..867d23c27fc00159a2b583188d607b7f69c581d8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_serial" 9 "nvme_ctrl_get_serial" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_serial" 9 "nvme_ctrl_get_serial" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_serial \- Serial number of a controller
 .SH SYNOPSIS
index 2ff350d37044bc370da94dd181b2ff6ffd297566..0a56ac6516dd8007634335e04086417f17e994a8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_sqsize" 9 "nvme_ctrl_get_sqsize" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_sqsize" 9 "nvme_ctrl_get_sqsize" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_sqsize \- SQ size of a controller
 .SH SYNOPSIS
index d7877585b2f4b9898d056f72dac3129cc939c8bc..3ea67c445e696f3aec1c16278b24878e624fc779 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_state" 9 "nvme_ctrl_get_state" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_state" 9 "nvme_ctrl_get_state" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_state \- Running state of an controller
 .SH SYNOPSIS
index 3b14394bfa31597fef512a30f0ae5e3395009b56..f940c43a29441fdeb4378f31cadf6f8c49a177a8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_subsysnqn" 9 "nvme_ctrl_get_subsysnqn" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_subsysnqn" 9 "nvme_ctrl_get_subsysnqn" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_subsysnqn \- Subsystem NQN of a controller
 .SH SYNOPSIS
index 0c0f7ca67c164c4cdb163eb22ab4b69996b9ec37..c514e54a699093b01671d54daff7588749e83c61 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_subsystem" 9 "nvme_ctrl_get_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_subsystem" 9 "nvme_ctrl_get_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_subsystem \- Parent subsystem of a controller
 .SH SYNOPSIS
index 247aada08633a42811a225b3eb503bca76fda242..3e87bf0e8a1df4f8471a9da61ba2dc70669dbbcd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_sysfs_dir" 9 "nvme_ctrl_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_sysfs_dir" 9 "nvme_ctrl_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_sysfs_dir \- sysfs directory of a controller
 .SH SYNOPSIS
index ce9c9616337338a4134d0a11fba0a0befa9d06a4..e0a5bdaf19e43fefd8ba28edf973710c1a2a716c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_traddr" 9 "nvme_ctrl_get_traddr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_traddr" 9 "nvme_ctrl_get_traddr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_traddr \- Transport address of a controller
 .SH SYNOPSIS
index d0b2fb60422408bfb4aac6fc22649952b9d0e2df..5404de888b46affe81fb16e9abc04afd543a5cd2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_transport" 9 "nvme_ctrl_get_transport" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_transport" 9 "nvme_ctrl_get_transport" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_transport \- Transport type of a controller
 .SH SYNOPSIS
index b1e6b5a6f9501ae7b235e75dd8ed8b554129ef43..f1ffc0fbad60bed655acf4802ec2b7cc87ec93cb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_get_trsvcid" 9 "nvme_ctrl_get_trsvcid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_get_trsvcid" 9 "nvme_ctrl_get_trsvcid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_get_trsvcid \- Transport service identifier of a controller
 .SH SYNOPSIS
index ce17f5c7b8c0d281dd0b053efcc85e13e166ccb8..d2e37ebba0d46163b8c0d8171d99f76c09af9d63 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_identify" 9 "nvme_ctrl_identify" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_identify" 9 "nvme_ctrl_identify" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_identify \- Issues an 'identify controller' command
 .SH SYNOPSIS
index d6dd6d5978863d6486da5e08dad8ea3108764618..ba5697782126af1348b4b04b4b8dbca4da8214ca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_is_discovered" 9 "nvme_ctrl_is_discovered" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_is_discovered" 9 "nvme_ctrl_is_discovered" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_is_discovered \- Returns the value of the 'discovered' flag
 .SH SYNOPSIS
index 6ad4d00ae21943532c8e78aea8679d83fb4a24bc..3681b6cfd202306551f76ec838844fa18b4ef167 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_is_discovery_ctrl" 9 "nvme_ctrl_is_discovery_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_is_discovery_ctrl" 9 "nvme_ctrl_is_discovery_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_is_discovery_ctrl \- Check the 'discovery_ctrl' flag
 .SH SYNOPSIS
index 37ca92c005e64965285578b61c1fce9e319c6362..46f2bf25fc9c009dd5ee0417c3527d0f94339aa6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_is_persistent" 9 "nvme_ctrl_is_persistent" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_is_persistent" 9 "nvme_ctrl_is_persistent" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_is_persistent \- Returns the value of the 'persistent' flag
 .SH SYNOPSIS
diff --git a/doc/man/nvme_ctrl_is_unique_discovery_ctrl.2 b/doc/man/nvme_ctrl_is_unique_discovery_ctrl.2
new file mode 100644 (file)
index 0000000..a7ca604
--- /dev/null
@@ -0,0 +1,11 @@
+.TH "nvme_ctrl_is_unique_discovery_ctrl" 9 "nvme_ctrl_is_unique_discovery_ctrl" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_ctrl_is_unique_discovery_ctrl \- Check the 'unique_discovery_ctrl' flag
+.SH SYNOPSIS
+.B "bool" nvme_ctrl_is_unique_discovery_ctrl
+.BI "(nvme_ctrl_t c "  ");"
+.SH ARGUMENTS
+.IP "c" 12
+Controller to be checked
+.SH "RETURN"
+Value of the 'unique_discovery_ctrl' flag
index dabdc0ceba4d91fbf48ae945b0947b619d29dd95..2469dadca58061a286a37d824ab9c78b6ac04073 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_ctrl_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_ctrl_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_ctrl_list \- Controller List
 .SH SYNOPSIS
index 24caeeebb3350ec736817dbd3fbcd66a1be14a54..8ae70d3fd0608aa7fae8db1e7e049b3e438e23a9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ctrl_metadata_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ctrl_metadata_type" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ctrl_metadata_type \- Controller Metadata Element Types
 .SH SYNOPSIS
index 7e98adde1526d5246ac911993ea18027eab86a15..bb6163abbfbdbcf0aa360a84f3c549d239459e2b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_next_ns" 9 "nvme_ctrl_next_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_next_ns" 9 "nvme_ctrl_next_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_next_ns \- Next namespace iterator
 .SH SYNOPSIS
index 208196518bb22eb37f4ea9b2c6680cd8e8d5ebdc..b3e323ec379d79b34a9d723da66222ca2503dcee 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_next_path" 9 "nvme_ctrl_next_path" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_next_path" 9 "nvme_ctrl_next_path" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_next_path \- Next path iterator
 .SH SYNOPSIS
index 55f084ac694e6651ce3c03e0a045803427a5061f..9d8e129b152324f30e7a8d823a31dcc1814d12e5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_reset" 9 "nvme_ctrl_reset" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_reset" 9 "nvme_ctrl_reset" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_reset \- Initiate a controller reset
 .SH SYNOPSIS
index 036c29e3ba067e4ed1cf8912f72ef1e915924108..d1c82b028769f84b264388277f227cd1e2d09c95 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_set_dhchap_host_key" 9 "nvme_ctrl_set_dhchap_host_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_set_dhchap_host_key" 9 "nvme_ctrl_set_dhchap_host_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_set_dhchap_host_key \- Set host key
 .SH SYNOPSIS
index bcaaf868804113b2133500f3eff6c36e9bdbe3e4..23a61a87df84fbdda1f14d4b81c3fe6a3cecfe9b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_set_dhchap_key" 9 "nvme_ctrl_set_dhchap_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_set_dhchap_key" 9 "nvme_ctrl_set_dhchap_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_set_dhchap_key \- Set controller key
 .SH SYNOPSIS
index 0565135e81acbc9fa3f86a1fc53faa79e4f7044a..77d98c504c34bd36171c1927adbd517782c6971c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_set_discovered" 9 "nvme_ctrl_set_discovered" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_set_discovered" 9 "nvme_ctrl_set_discovered" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_set_discovered \- Set the 'discovered' flag
 .SH SYNOPSIS
index a2c6200ba8acd88949caeeaf7111d154763cb572..304aa1dce710f0e3cda3994214f99f57076a9a10 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_set_discovery_ctrl" 9 "nvme_ctrl_set_discovery_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_set_discovery_ctrl" 9 "nvme_ctrl_set_discovery_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_set_discovery_ctrl \- Set the 'discovery_ctrl' flag
 .SH SYNOPSIS
index d86e8d998e28663fa350185bf305f63562845f98..fe1d73e6c0fcf97d33235b068a805f1472a986a1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrl_set_persistent" 9 "nvme_ctrl_set_persistent" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrl_set_persistent" 9 "nvme_ctrl_set_persistent" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrl_set_persistent \- Set the 'persistent' flag
 .SH SYNOPSIS
diff --git a/doc/man/nvme_ctrl_set_unique_discovery_ctrl.2 b/doc/man/nvme_ctrl_set_unique_discovery_ctrl.2
new file mode 100644 (file)
index 0000000..4de9b06
--- /dev/null
@@ -0,0 +1,15 @@
+.TH "nvme_ctrl_set_unique_discovery_ctrl" 9 "nvme_ctrl_set_unique_discovery_ctrl" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_ctrl_set_unique_discovery_ctrl \- Set the 'unique_discovery_ctrl' flag
+.SH SYNOPSIS
+.B "void" nvme_ctrl_set_unique_discovery_ctrl
+.BI "(nvme_ctrl_t c "  ","
+.BI "bool unique "  ");"
+.SH ARGUMENTS
+.IP "c" 12
+Controller to be modified
+.IP "unique" 12
+value of the unique_disc_ctrl flag
+.SH "DESCRIPTION"
+Sets the 'unique_discovery_ctrl' flag in \fIc\fP to specify wheter
+\fIc\fP is a unique discovery controller
index 498f7245113af8721efc57a6ff18a5a14b8954de..bf31bc5547e17818c766ffc97ac0c05e640224a5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ctrls_filter" 9 "nvme_ctrls_filter" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ctrls_filter" 9 "nvme_ctrls_filter" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ctrls_filter \- Filter for controllers
 .SH SYNOPSIS
index bf0e99ab1003b819af88aa1799945edcc8bdb376..c81767e21ab667af6eb1fa73ff6cbab1db41a68e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_data_tfr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_data_tfr" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_data_tfr \- Data transfer direction of the command
 .SH SYNOPSIS
index 2ca5d981341f78b45cd8155a9f9868d672b4f05d..690fb56555a42b95f6b397f86f1f570e5b3b6794 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_default_host" 9 "nvme_default_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_default_host" 9 "nvme_default_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_default_host \- Initializes the default host
 .SH SYNOPSIS
index e366b9b8474f5b848d5c3e7fe654bf184779693f..1458ded107800c98aceb1eef4af6471e3e462b51 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_dev_self_test" 9 "nvme_dev_self_test" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_dev_self_test" 9 "nvme_dev_self_test" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_dev_self_test \- Start or abort a self test
 .SH SYNOPSIS
@@ -15,7 +15,7 @@ controller and may include testing of the media associated with namespaces.
 The controller may return a response to this command immediately while
 running the self-test in the background.
 
-Set the 'nsid' field to 0 to not include namepsaces in the test. Set to
+Set the 'nsid' field to 0 to not include namespaces in the test. Set to
 0xffffffff to test all namespaces. All other values tests a specific
 namespace, if present.
 .SH "RETURN"
index 8ee7b9c5f658bb8c6106029e79633c67835f12ab..bab28ccbe6044403043594d4005d569c4e26e0f2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_directive_dtype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_directive_dtype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_directive_dtype \- Directive Types
 .SH SYNOPSIS
index 03c43abf96a099604fb779983588515c4fd59732..9d233acdf78e336615e3d84ec9a17432db34e16a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_directive_receive_doper" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_directive_receive_doper" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_directive_receive_doper \- Directive Receive Directive Operation
 .SH SYNOPSIS
index 1494ecd25afcb6c3c469f4c5b5fa12800de865f4..6f657fe46060ebc9d6effa5bcc6a48cb3b6b1457 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_recv" 9 "nvme_directive_recv" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_recv" 9 "nvme_directive_recv" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_recv \- Receive directive specific data
 .SH SYNOPSIS
index 828c5b6feeea0499d849ca05d2c2bf4913a0f723..7e41fb161fa0e05ef657e40264d9fc83a9415d03 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_recv_identify_parameters" 9 "nvme_directive_recv_identify_parameters" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_recv_identify_parameters" 9 "nvme_directive_recv_identify_parameters" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_recv_identify_parameters \- Directive receive identifier parameters
 .SH SYNOPSIS
index 131158566274761c2c7e0573d5ec1b7d4b250b73..657c699199d8b3e95c5b1c7bcc4d3cef331d2d81 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_recv_stream_allocate" 9 "nvme_directive_recv_stream_allocate" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_recv_stream_allocate" 9 "nvme_directive_recv_stream_allocate" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_recv_stream_allocate \- Directive receive stream allocate
 .SH SYNOPSIS
index 179c4a6a4b07a5ae8e49228219530786f4c0ebc5..512ea230ecd5a32e8d6f3ef5a01665db28adbc92 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_recv_stream_parameters" 9 "nvme_directive_recv_stream_parameters" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_recv_stream_parameters" 9 "nvme_directive_recv_stream_parameters" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_recv_stream_parameters \- Directive receive stream parameters
 .SH SYNOPSIS
index 68101c9081b31b2dc6706c1c5fa850adecf701de..6052e553c797f9e46d4cb83012f0fc31bd1db4fb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_recv_stream_status" 9 "nvme_directive_recv_stream_status" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_recv_stream_status" 9 "nvme_directive_recv_stream_status" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_recv_stream_status \- Directive receive stream status
 .SH SYNOPSIS
index 74469e33a0ce171a7b01b48ec20cd103e53112d8..ae5e7c31712fb283e5014ee156d84de81ec59772 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_send" 9 "nvme_directive_send" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_send" 9 "nvme_directive_send" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_send \- Send directive command
 .SH SYNOPSIS
index 7e8bd7db2bae9abcda55ab68cff3e92f4e61f4c6..7ee960e0a190d0d4aec6ca8a9c6423d7a4c8f154 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_directive_send_doper" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_directive_send_doper" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_directive_send_doper \- Directive Send Directive Operation
 .SH SYNOPSIS
index 9d4761183aaf000bc32640ea2ee5c0632923f60d..3361c436556349b74c021fbf38b2a188cb9f7b06 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_send_id_endir" 9 "nvme_directive_send_id_endir" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_send_id_endir" 9 "nvme_directive_send_id_endir" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_send_id_endir \- Directive Send Enable Directive
 .SH SYNOPSIS
index b4c3d08f2f3b2ff46db9d35858d796e95205855d..75ae651aa1f64b4b4d1b25e77b22bb0aecc3d639 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_directive_send_identify_endir" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_directive_send_identify_endir" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_directive_send_identify_endir \- Enable Directive
 .SH SYNOPSIS
index baa509e803beda61816fb172c8d549ef24da1b68..fccafe4e6171f9af411811368c7e938e706d7a3d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_send_stream_release_identifier" 9 "nvme_directive_send_stream_release_identifier" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_send_stream_release_identifier" 9 "nvme_directive_send_stream_release_identifier" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_send_stream_release_identifier \- Directive Send Stream release
 .SH SYNOPSIS
index fbcb6090574e49d3dc2e5d1832877266218982a7..d74c93a6037ebba935246e0716894167070a7bf5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_directive_send_stream_release_resource" 9 "nvme_directive_send_stream_release_resource" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_directive_send_stream_release_resource" 9 "nvme_directive_send_stream_release_resource" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_directive_send_stream_release_resource \- Directive Send Stream release resources
 .SH SYNOPSIS
index 944dca7df034c2954b0e6c5d22361824dd83dc7c..5557800d4e666d6f376e6b5e285334181b2773e1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_directive_types" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_directive_types" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_directive_types \- Directives Supported or Enabled
 .SH SYNOPSIS
index 7e7db9989155816dc3ed50c1f065c4ce4fc0bde1..03adb3d5f3519e665b2e731bb430f173d18317d1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_disconnect_ctrl" 9 "nvme_disconnect_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_disconnect_ctrl" 9 "nvme_disconnect_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_disconnect_ctrl \- Disconnect a controller
 .SH SYNOPSIS
index b567d21a855b341f0dc9a77539e9af7886654541..52d1d7807ea13417359cd3a7301749a238235c16 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_dsm" 9 "nvme_dsm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_dsm" 9 "nvme_dsm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_dsm \- Send an nvme data set management command
 .SH SYNOPSIS
index 1c42a949aee0d838e7322213c81482f005eaaf78..d4d1195d6b0c42e6014db650b9398e34b04d5766 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_dsm_attributes" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_dsm_attributes" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_dsm_attributes \- Dataset Management attributes
 .SH SYNOPSIS
index 8ff7b3c9c08b94bca2a6a97cf62807895ce0127d..c8f1e66bb3c26aab5e7342cd90f86057f3d90e9d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_dsm_range" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_dsm_range" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_dsm_range \- Dataset Management - Range Definition
 .SH SYNOPSIS
index 9654e640c67bac64b37db8cb4d4c3edb46fa137e..4d6f7d7d2f5b8f4d7f8454fbee1cba2da49b9cda 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_dst_stc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_dst_stc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_dst_stc \- Action taken by the Device Self-test command
 .SH SYNOPSIS
index 400da1d5a6ea09f951e48d6d1022279d70c18899..3a6222cdc0036900be44d7784bf87412af834c47 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_dump_config" 9 "nvme_dump_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_dump_config" 9 "nvme_dump_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_dump_config \- Print the JSON configuration
 .SH SYNOPSIS
index 52b5392b776bb67ffa2d96c22026ed94bcbc109f..71925ece9d3ebf8420249bd238978c8df09c3fd1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_dump_tree" 9 "nvme_dump_tree" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_dump_tree" 9 "nvme_dump_tree" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_dump_tree \- Dump internal object tree
 .SH SYNOPSIS
index e60d99bba9bf42bd723af650e2303177ccb373dc..08a5f7cf531b4a992df8b60ea42a0d16e5660f3f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_eg_critical_warning_flags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_eg_critical_warning_flags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_eg_critical_warning_flags \- Endurance Group Information Log - Critical Warning
 .SH SYNOPSIS
index 7ee2d834a199d3be5901749501d5f171d50ab2b3..aacfeba62524cda18680a7a2253de09107da9404 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_eg_event_aggregate_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_eg_event_aggregate_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_eg_event_aggregate_log \- Endurance Group Event Aggregate
 .SH SYNOPSIS
index d01687732cc6231df6d4d7820bb8b86add78d449..acc3f0b00977d92b2a5186d5b691342e07298fc9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_end_grp_chan_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_end_grp_chan_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_end_grp_chan_desc \- Endurance Group Channel Configuration Descriptor
 .SH SYNOPSIS
index 947aada2af9f61894713e2161760089b1a525e22..05b33193bcb08b24bcf28dc218ec02b4f4980c94 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_end_grp_config_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_end_grp_config_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_end_grp_config_desc \- Endurance Group Configuration Descriptor
 .SH SYNOPSIS
index 57dd1d8957b51edb9ccd29c53d750f0553c78e66..af07a0236fc3c96dde884a811dab80a8791c680e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_endurance_group_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_endurance_group_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_endurance_group_log \- Endurance Group Information Log
 .SH SYNOPSIS
index 71fb96afdb9306dc16d227444a139f40d27cf48d..f303d52dea700fd433b8e04bbb9b8e4cc368212e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_errno_to_string" 9 "nvme_errno_to_string" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_errno_to_string" 9 "nvme_errno_to_string" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_errno_to_string \- Returns string describing nvme connect failures
 .SH SYNOPSIS
index 80a1efaf2902aca248a5ff09e0a413a7a2a3dc3d..7e727ef90dab2becaa1dca65093fa8a23fe2dd7e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_error_log_page" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_error_log_page" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_error_log_page \- Error Information Log Entry (Log Identifier 01h)
 .SH SYNOPSIS
index f0ff8f8e8b2a7d74489fade25b82469234b7bc77..24c4f6ef39e1a584aab04cdd08b396da035b0309 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_fabrics_config" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_fabrics_config" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_fabrics_config \- Defines all linux nvme fabrics initiator options
 .SH SYNOPSIS
index 42b1c0c4748cfb7a64e4e5354c769dc15da5e363..8d186cc46bc8d2aefd039cabd60140ebdba2d396 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_fctype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_fctype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_fctype \- Fabrics Command Types
 .SH SYNOPSIS
diff --git a/doc/man/nvme_fdp_config_desc.2 b/doc/man/nvme_fdp_config_desc.2
new file mode 100644 (file)
index 0000000..3bbcbca
--- /dev/null
@@ -0,0 +1,55 @@
+.TH "libnvme" 9 "struct nvme_fdp_config_desc" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_config_desc \- FDP Configuration Descriptor
+.SH SYNOPSIS
+struct nvme_fdp_config_desc {
+.br
+.BI "    __u16 size;"
+.br
+.BI "    __u8 fdpa;"
+.br
+.BI "    __u8 vss;"
+.br
+.BI "    __u32 nrg;"
+.br
+.BI "    __u16 nruh;"
+.br
+.BI "    __u16 maxpids;"
+.br
+.BI "    __u32 nnss;"
+.br
+.BI "    __u64 runs;"
+.br
+.BI "    __u32 erutl;"
+.br
+.BI "    __u8 rsvd28[36];"
+.br
+.BI "    struct nvme_fdp_ruh_desc ruhs[];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "size" 12
+Descriptor size
+.IP "fdpa" 12
+FDP Attributes (\fIenum nvme_fdp_config_fdpa\fP)
+.IP "vss" 12
+Vendor Specific Size
+.IP "nrg" 12
+Number of Reclaim Groups
+.IP "nruh" 12
+Number of Reclaim Unit Handles
+.IP "maxpids" 12
+Max Placement Identifiers
+.IP "nnss" 12
+Number of Namespaces Supported
+.IP "runs" 12
+Reclaim Unit Nominal Size
+.IP "erutl" 12
+Estimated Reclaim Unit Time Limit
+.IP "rsvd28" 12
+Reserved
+.IP "ruhs" 12
+Reclaim Unit Handle descriptors (\fIstruct nvme_fdp_ruh_desc\fP)
diff --git a/doc/man/nvme_fdp_config_fdpa.2 b/doc/man/nvme_fdp_config_fdpa.2
new file mode 100644 (file)
index 0000000..2a92b4a
--- /dev/null
@@ -0,0 +1,42 @@
+.TH "libnvme" 9 "enum nvme_fdp_config_fdpa" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_config_fdpa \- FDP Attributes
+.SH SYNOPSIS
+enum nvme_fdp_config_fdpa {
+.br
+.BI "    NVME_FDP_CONFIG_FDPA_RGIF_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FDP_CONFIG_FDPA_RGIF_MASK"
+, 
+.br
+.br
+.BI "    NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FDP_CONFIG_FDPA_FDPVWC_MASK"
+, 
+.br
+.br
+.BI "    NVME_FDP_CONFIG_FDPA_VALID_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FDP_CONFIG_FDPA_VALID_MASK"
+
+};
+.SH Constants
+.IP "NVME_FDP_CONFIG_FDPA_RGIF_SHIFT" 12
+Reclaim Group Identifier Format Shift
+.IP "NVME_FDP_CONFIG_FDPA_RGIF_MASK" 12
+Reclaim Group Identifier Format Mask
+.IP "NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT" 12
+FDP Volatile Write Cache Shift
+.IP "NVME_FDP_CONFIG_FDPA_FDPVWC_MASK" 12
+FDP Volatile Write Cache Mask
+.IP "NVME_FDP_CONFIG_FDPA_VALID_SHIFT" 12
+FDP Configuration Valid Shift
+.IP "NVME_FDP_CONFIG_FDPA_VALID_MASK" 12
+FDP Configuration Valid Mask
diff --git a/doc/man/nvme_fdp_config_log.2 b/doc/man/nvme_fdp_config_log.2
new file mode 100644 (file)
index 0000000..5111b7a
--- /dev/null
@@ -0,0 +1,35 @@
+.TH "libnvme" 9 "struct nvme_fdp_config_log" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_config_log \- FDP Configurations Log Page
+.SH SYNOPSIS
+struct nvme_fdp_config_log {
+.br
+.BI "    __u16 n;"
+.br
+.BI "    __u8 version;"
+.br
+.BI "    __u8 rsvd3;"
+.br
+.BI "    __u32 size;"
+.br
+.BI "    __u8 rsvd8[8];"
+.br
+.BI "    struct nvme_fdp_config_desc configs[];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "n" 12
+Number of FDP Configurations
+.IP "version" 12
+Log page version
+.IP "rsvd3" 12
+Reserved
+.IP "size" 12
+Log page size in bytes
+.IP "rsvd8" 12
+Reserved
+.IP "configs" 12
+FDP Configuration descriptors (\fIstruct nvme_fdp_config_desc\fP)
diff --git a/doc/man/nvme_fdp_event.2 b/doc/man/nvme_fdp_event.2
new file mode 100644 (file)
index 0000000..2178f44
--- /dev/null
@@ -0,0 +1,51 @@
+.TH "libnvme" 9 "struct nvme_fdp_event" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_event \- FDP Event
+.SH SYNOPSIS
+struct nvme_fdp_event {
+.br
+.BI "    __u8 type;"
+.br
+.BI "    __u8 flags;"
+.br
+.BI "    __u16 pid;"
+.br
+.BI "    struct nvme_timestamp ts;"
+.br
+.BI "    __u32 nsid;"
+.br
+.BI "    __u8 type_specific[16];"
+.br
+.BI "    __u16 rgid;"
+.br
+.BI "    __u8 ruhid;"
+.br
+.BI "    __u8 rsvd35[5];"
+.br
+.BI "    __u8 vs[24];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "type" 12
+Event Type (\fIenum nvme_fdp_event_type\fP)
+.IP "flags" 12
+Event Flags (\fIenum nvme_fdp_event_flags\fP)
+.IP "pid" 12
+Placement Identifier
+.IP "ts" 12
+Timestamp
+.IP "nsid" 12
+Namespace Identifier
+.IP "type_specific" 12
+Event Type Specific Information
+.IP "rgid" 12
+Reclaim Group Identifier
+.IP "ruhid" 12
+Reclaim Unit Handle Identifier
+.IP "rsvd35" 12
+Reserved
+.IP "vs" 12
+Vendor Specific
diff --git a/doc/man/nvme_fdp_event_flags.2 b/doc/man/nvme_fdp_event_flags.2
new file mode 100644 (file)
index 0000000..1bad4b6
--- /dev/null
@@ -0,0 +1,24 @@
+.TH "libnvme" 9 "enum nvme_fdp_event_flags" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_event_flags \- FDP Event Flags
+.SH SYNOPSIS
+enum nvme_fdp_event_flags {
+.br
+.BI "    NVME_FDP_EVENT_F_PIV"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_F_NSIDV"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_F_LV"
+
+};
+.SH Constants
+.IP "NVME_FDP_EVENT_F_PIV" 12
+Placement Identifier Valid
+.IP "NVME_FDP_EVENT_F_NSIDV" 12
+Namespace Identifier Valid
+.IP "NVME_FDP_EVENT_F_LV" 12
+Location Valid
diff --git a/doc/man/nvme_fdp_event_realloc.2 b/doc/man/nvme_fdp_event_realloc.2
new file mode 100644 (file)
index 0000000..fbd1cfe
--- /dev/null
@@ -0,0 +1,31 @@
+.TH "libnvme" 9 "struct nvme_fdp_event_realloc" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_event_realloc \- Media Reallocated Event Type Specific Information
+.SH SYNOPSIS
+struct nvme_fdp_event_realloc {
+.br
+.BI "    __u8 flags;"
+.br
+.BI "    __u8 rsvd1;"
+.br
+.BI "    __u16 nlbam;"
+.br
+.BI "    __u64 lba;"
+.br
+.BI "    __u8 rsvd12[4];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "flags" 12
+Event Type Specific flags (\fIenum nvme_fdp_event_realloc_flags\fP)
+.IP "rsvd1" 12
+Reserved
+.IP "nlbam" 12
+Number of LBAs Moved
+.IP "lba" 12
+Logical Block Address
+.IP "rsvd12" 12
+Reserved
diff --git a/doc/man/nvme_fdp_event_realloc_flags.2 b/doc/man/nvme_fdp_event_realloc_flags.2
new file mode 100644 (file)
index 0000000..8ecee78
--- /dev/null
@@ -0,0 +1,12 @@
+.TH "libnvme" 9 "enum nvme_fdp_event_realloc_flags" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_event_realloc_flags \- Media Reallocated Event Type Specific Flags
+.SH SYNOPSIS
+enum nvme_fdp_event_realloc_flags {
+.br
+.BI "    NVME_FDP_EVENT_REALLOC_F_LBAV"
+
+};
+.SH Constants
+.IP "NVME_FDP_EVENT_REALLOC_F_LBAV" 12
+LBA Valid
diff --git a/doc/man/nvme_fdp_event_type.2 b/doc/man/nvme_fdp_event_type.2
new file mode 100644 (file)
index 0000000..1ef2849
--- /dev/null
@@ -0,0 +1,42 @@
+.TH "libnvme" 9 "enum nvme_fdp_event_type" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_event_type \- FDP Event Types
+.SH SYNOPSIS
+enum nvme_fdp_event_type {
+.br
+.BI "    NVME_FDP_EVENT_RUNFW"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_RUTLE"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_RESET"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_PID"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_REALLOC"
+, 
+.br
+.br
+.BI "    NVME_FDP_EVENT_MODIFY"
+
+};
+.SH Constants
+.IP "NVME_FDP_EVENT_RUNFW" 12
+Reclaim Unit Not Fully Written
+.IP "NVME_FDP_EVENT_RUTLE" 12
+Reclaim Unit Time Limit Exceeded
+.IP "NVME_FDP_EVENT_RESET" 12
+Controller Level Reset Modified Reclaim Unit Handles
+.IP "NVME_FDP_EVENT_PID" 12
+Invalid Placement Identifier
+.IP "NVME_FDP_EVENT_REALLOC" 12
+Media Reallocated
+.IP "NVME_FDP_EVENT_MODIFY" 12
+Implicitly Modified Reclaim Unit Handle
diff --git a/doc/man/nvme_fdp_events_log.2 b/doc/man/nvme_fdp_events_log.2
new file mode 100644 (file)
index 0000000..c4cec83
--- /dev/null
@@ -0,0 +1,23 @@
+.TH "libnvme" 9 "struct nvme_fdp_events_log" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_events_log \- FDP Events Log Page
+.SH SYNOPSIS
+struct nvme_fdp_events_log {
+.br
+.BI "    __u32 n;"
+.br
+.BI "    __u8 rsvd4[60];"
+.br
+.BI "    struct nvme_fdp_event events[63];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "n" 12
+Number of FDP Events
+.IP "rsvd4" 12
+Reserved
+.IP "events" 12
+FDP Events (\fIstruct nvme_fdp_event\fP)
diff --git a/doc/man/nvme_fdp_reclaim_unit_handle_status.2 b/doc/man/nvme_fdp_reclaim_unit_handle_status.2
new file mode 100644 (file)
index 0000000..138405d
--- /dev/null
@@ -0,0 +1,21 @@
+.TH "nvme_fdp_reclaim_unit_handle_status" 9 "nvme_fdp_reclaim_unit_handle_status" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_fdp_reclaim_unit_handle_status \- Get reclaim unit handle status
+.SH SYNOPSIS
+.B "int" nvme_fdp_reclaim_unit_handle_status
+.BI "(int fd "  ","
+.BI "__u32 nsid "  ","
+.BI "__u32 data_len "  ","
+.BI "void *data "  ");"
+.SH ARGUMENTS
+.IP "fd" 12
+File descriptor of nvme device
+.IP "nsid" 12
+Namespace identifier
+.IP "data_len" 12
+Length of response buffer
+.IP "data" 12
+Response buffer
+.SH "RETURN"
+The nvme command status if a response was received (see
+\fIenum nvme_status_field\fP) or -1 with errno set otherwise.
diff --git a/doc/man/nvme_fdp_reclaim_unit_handle_update.2 b/doc/man/nvme_fdp_reclaim_unit_handle_update.2
new file mode 100644 (file)
index 0000000..1869f67
--- /dev/null
@@ -0,0 +1,21 @@
+.TH "nvme_fdp_reclaim_unit_handle_update" 9 "nvme_fdp_reclaim_unit_handle_update" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_fdp_reclaim_unit_handle_update \- Update a list of reclaim unit handles
+.SH SYNOPSIS
+.B "int" nvme_fdp_reclaim_unit_handle_update
+.BI "(int fd "  ","
+.BI "__u32 nsid "  ","
+.BI "unsigned int npids "  ","
+.BI "__u16 *pids "  ");"
+.SH ARGUMENTS
+.IP "fd" 12
+File descriptor of nvme device
+.IP "nsid" 12
+Namespace identifier
+.IP "npids" 12
+Number of placement identifiers
+.IP "pids" 12
+List of placement identifiers
+.SH "RETURN"
+The nvme command status if a response was received (see
+\fIenum nvme_status_field\fP) or -1 with errno set otherwise.
diff --git a/doc/man/nvme_fdp_ruh_desc.2 b/doc/man/nvme_fdp_ruh_desc.2
new file mode 100644 (file)
index 0000000..77969b3
--- /dev/null
@@ -0,0 +1,19 @@
+.TH "libnvme" 9 "struct nvme_fdp_ruh_desc" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_ruh_desc \- Reclaim Unit Handle Descriptor
+.SH SYNOPSIS
+struct nvme_fdp_ruh_desc {
+.br
+.BI "    __u8 ruht;"
+.br
+.BI "    __u8 rsvd1[3];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "ruht" 12
+Reclaim Unit Handle Type
+.IP "rsvd1" 12
+Reserved
diff --git a/doc/man/nvme_fdp_ruh_status.2 b/doc/man/nvme_fdp_ruh_status.2
new file mode 100644 (file)
index 0000000..2fc1389
--- /dev/null
@@ -0,0 +1,23 @@
+.TH "libnvme" 9 "struct nvme_fdp_ruh_status" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_ruh_status \- Reclaim Unit Handle Status
+.SH SYNOPSIS
+struct nvme_fdp_ruh_status {
+.br
+.BI "    __u8 rsvd0[14];"
+.br
+.BI "    __u16 nruhsd;"
+.br
+.BI "    struct nvme_fdp_ruh_status_desc ruhss[];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "rsvd0" 12
+Reserved
+.IP "nruhsd" 12
+Number of Reclaim Unit Handle Status Descriptors
+.IP "ruhss" 12
+Reclaim Unit Handle Status descriptors
diff --git a/doc/man/nvme_fdp_ruh_status_desc.2 b/doc/man/nvme_fdp_ruh_status_desc.2
new file mode 100644 (file)
index 0000000..7b1dfc7
--- /dev/null
@@ -0,0 +1,31 @@
+.TH "libnvme" 9 "struct nvme_fdp_ruh_status_desc" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_ruh_status_desc \- Reclaim Unit Handle Status Descriptor
+.SH SYNOPSIS
+struct nvme_fdp_ruh_status_desc {
+.br
+.BI "    __u16 pid;"
+.br
+.BI "    __u16 ruhid;"
+.br
+.BI "    __u32 earutr;"
+.br
+.BI "    __u64 ruamw;"
+.br
+.BI "    __u8 rsvd16[16];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "pid" 12
+Placement Identifier
+.IP "ruhid" 12
+Reclaim Unit Handle Identifier
+.IP "earutr" 12
+Estimated Active Reclaim Unit Time Remaining
+.IP "ruamw" 12
+Reclaim Unit Available Media Writes
+.IP "rsvd16" 12
+Reserved
diff --git a/doc/man/nvme_fdp_ruh_type.2 b/doc/man/nvme_fdp_ruh_type.2
new file mode 100644 (file)
index 0000000..5407134
--- /dev/null
@@ -0,0 +1,18 @@
+.TH "libnvme" 9 "enum nvme_fdp_ruh_type" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_ruh_type \- Reclaim Unit Handle Type
+.SH SYNOPSIS
+enum nvme_fdp_ruh_type {
+.br
+.BI "    NVME_FDP_RUHT_INITIALLY_ISOLATED"
+, 
+.br
+.br
+.BI "    NVME_FDP_RUHT_PERSISTENTLY_ISOLATED"
+
+};
+.SH Constants
+.IP "NVME_FDP_RUHT_INITIALLY_ISOLATED" 12
+Initially Isolated
+.IP "NVME_FDP_RUHT_PERSISTENTLY_ISOLATED" 12
+Persistently Isolated
diff --git a/doc/man/nvme_fdp_ruha.2 b/doc/man/nvme_fdp_ruha.2
new file mode 100644 (file)
index 0000000..99c73b3
--- /dev/null
@@ -0,0 +1,30 @@
+.TH "libnvme" 9 "enum nvme_fdp_ruha" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_ruha \- Reclaim Unit Handle Attributes
+.SH SYNOPSIS
+enum nvme_fdp_ruha {
+.br
+.BI "    NVME_FDP_RUHA_HOST_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FDP_RUHA_HOST_MASK"
+, 
+.br
+.br
+.BI "    NVME_FDP_RUHA_CTRL_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FDP_RUHA_CTRL_MASK"
+
+};
+.SH Constants
+.IP "NVME_FDP_RUHA_HOST_SHIFT" 12
+Host Specified Reclaim Unit Handle Shift
+.IP "NVME_FDP_RUHA_HOST_MASK" 12
+Host Specified Reclaim Unit Handle Mask
+.IP "NVME_FDP_RUHA_CTRL_SHIFT" 12
+Controller Specified Reclaim Unit Handle Shift
+.IP "NVME_FDP_RUHA_CTRL_MASK" 12
+Controller Specified Reclaim Unit Handle Mask
diff --git a/doc/man/nvme_fdp_ruhu_desc.2 b/doc/man/nvme_fdp_ruhu_desc.2
new file mode 100644 (file)
index 0000000..e8a6d15
--- /dev/null
@@ -0,0 +1,19 @@
+.TH "libnvme" 9 "struct nvme_fdp_ruhu_desc" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_ruhu_desc \- Reclaim Unit Handle Usage Descriptor
+.SH SYNOPSIS
+struct nvme_fdp_ruhu_desc {
+.br
+.BI "    __u8 ruha;"
+.br
+.BI "    __u8 rsvd1[7];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "ruha" 12
+Reclaim Unit Handle Attributes (\fIenum nvme_fdp_ruha\fP)
+.IP "rsvd1" 12
+Reserved
diff --git a/doc/man/nvme_fdp_ruhu_log.2 b/doc/man/nvme_fdp_ruhu_log.2
new file mode 100644 (file)
index 0000000..794dc15
--- /dev/null
@@ -0,0 +1,23 @@
+.TH "libnvme" 9 "struct nvme_fdp_ruhu_log" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_ruhu_log \- Reclaim Unit Handle Usage Log Page
+.SH SYNOPSIS
+struct nvme_fdp_ruhu_log {
+.br
+.BI "    __u16 nruh;"
+.br
+.BI "    __u8 rsvd2[6];"
+.br
+.BI "    struct nvme_fdp_ruhu_desc ruhus[];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "nruh" 12
+Number of Reclaim Unit Handles
+.IP "rsvd2" 12
+Reserved
+.IP "ruhus" 12
+Reclaim Unit Handle Usage descriptors
diff --git a/doc/man/nvme_fdp_stats_log.2 b/doc/man/nvme_fdp_stats_log.2
new file mode 100644 (file)
index 0000000..8ada127
--- /dev/null
@@ -0,0 +1,27 @@
+.TH "libnvme" 9 "struct nvme_fdp_stats_log" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_stats_log \- FDP Statistics Log Page
+.SH SYNOPSIS
+struct nvme_fdp_stats_log {
+.br
+.BI "    __u8 hbmw[16];"
+.br
+.BI "    __u8 mbmw[16];"
+.br
+.BI "    __u8 mbe[16];"
+.br
+.BI "    __u8 rsvd48[16];"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "hbmw" 12
+Host Bytes with Metadata Written
+.IP "mbmw" 12
+Media Bytes with Metadata Written
+.IP "mbe" 12
+Media Bytes Erased
+.IP "rsvd48" 12
+Reserved
diff --git a/doc/man/nvme_fdp_supported_event_attributes.2 b/doc/man/nvme_fdp_supported_event_attributes.2
new file mode 100644 (file)
index 0000000..2f6c55d
--- /dev/null
@@ -0,0 +1,18 @@
+.TH "libnvme" 9 "enum nvme_fdp_supported_event_attributes" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_fdp_supported_event_attributes \- Supported FDP Event Attributes
+.SH SYNOPSIS
+enum nvme_fdp_supported_event_attributes {
+.br
+.BI "    NVME_FDP_SUPP_EVENT_ENABLED_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FDP_SUPP_EVENT_ENABLED_MASK"
+
+};
+.SH Constants
+.IP "NVME_FDP_SUPP_EVENT_ENABLED_SHIFT" 12
+FDP Event Enable Shift
+.IP "NVME_FDP_SUPP_EVENT_ENABLED_MASK" 12
+FDP Event Enable Mask
diff --git a/doc/man/nvme_fdp_supported_event_desc.2 b/doc/man/nvme_fdp_supported_event_desc.2
new file mode 100644 (file)
index 0000000..421be89
--- /dev/null
@@ -0,0 +1,19 @@
+.TH "libnvme" 9 "struct nvme_fdp_supported_event_desc" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_fdp_supported_event_desc \- Supported FDP Event Descriptor
+.SH SYNOPSIS
+struct nvme_fdp_supported_event_desc {
+.br
+.BI "    __u8 evt;"
+.br
+.BI "    __u8 evta;"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "evt" 12
+FDP Event Type
+.IP "evta" 12
+FDP Event Type Attributes (\fIenum nvme_fdp_supported_event_attributes\fP)
index 6b2e8b3f01aca3d80556218e79934aed9af518b6..889168269f19907f36fc7b79c6401ec2969a37a2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_feat" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_feat" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_feat \- Features Access Shifts/Masks values
 .SH SYNOPSIS
@@ -393,6 +393,30 @@ enum nvme_feat {
 .br
 .br
 .BI "    NVME_FEAT_IOCSP_IOCSCI_MASK"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FDP_ENABLED_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FDP_ENABLED_MASK"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FDP_INDEX_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FDP_INDEX_MASK"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FDP_EVENTS_ENABLE_MASK"
 
 };
 .SH Constants
@@ -494,3 +518,9 @@ enum nvme_feat {
 .IP "NVME_FEAT_WP_WPS_MASK" 12
 .IP "NVME_FEAT_IOCSP_IOCSCI_SHIFT" 12
 .IP "NVME_FEAT_IOCSP_IOCSCI_MASK" 12
+.IP "NVME_FEAT_FDP_ENABLED_SHIFT" 12
+.IP "NVME_FEAT_FDP_ENABLED_MASK" 12
+.IP "NVME_FEAT_FDP_INDEX_SHIFT" 12
+.IP "NVME_FEAT_FDP_INDEX_MASK" 12
+.IP "NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT" 12
+.IP "NVME_FEAT_FDP_EVENTS_ENABLE_MASK" 12
index 48ec4c04e77182a300f655bf3c54d3a927c1f9df..3e7ebc95f8daaca6126a1345118578e6c34078bc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_feat_auto_pst" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_feat_auto_pst" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_feat_auto_pst \- Autonomous Power State Transition
 .SH SYNOPSIS
diff --git a/doc/man/nvme_feat_fdp_events_cdw11.2 b/doc/man/nvme_feat_fdp_events_cdw11.2
new file mode 100644 (file)
index 0000000..5960a6c
--- /dev/null
@@ -0,0 +1,23 @@
+.TH "libnvme" 9 "struct nvme_feat_fdp_events_cdw11" "January 2023" "API Manual" LINUX
+.SH NAME
+struct nvme_feat_fdp_events_cdw11 \- FDP Events Feature Command Dword 11
+.SH SYNOPSIS
+struct nvme_feat_fdp_events_cdw11 {
+.br
+.BI "    __u16 phndl;"
+.br
+.BI "    __u8 noet;"
+.br
+.BI "    __u8 rsvd24;"
+.br
+.BI "
+};
+.br
+
+.SH Members
+.IP "phndl" 12
+Placement Handle
+.IP "noet" 12
+Number of FDP Event Types
+.IP "rsvd24" 12
+Reserved
index c4357caa89406577b629cc040ce2a80deb600836..8a53e2f8b2b4cc6ce6e8a3531cf8072442061337 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_feat_host_behavior" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_feat_host_behavior" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_feat_host_behavior \- Host Behavior Support - Data Structure
 .SH SYNOPSIS
index 408cd2151c85bd31a3a67c95d2aba988bbc3da41..fe45d95d7fcd725528064af35d1682f7b3d4d344 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_feat_nswpcfg_state" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_feat_nswpcfg_state" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_feat_nswpcfg_state \- Write Protection - Write Protection State
 .SH SYNOPSIS
index 8b11e49f1c23b498bae55620b71bae8d866e739a..37f2cc34b13f7b2cf0d177b33f510874d8a9780a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_feat_plm_window_select" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_feat_plm_window_select" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_feat_plm_window_select \- Predictable Latency Per NVM Set Log
 .SH SYNOPSIS
index 26c7b4fcbe091ba620a1d3b73ccce5ec1f5ae282..538f7c4f44b04d18d2a7ed4886e40e853f3f2b2b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_feat_resv_notify_flags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_feat_resv_notify_flags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_feat_resv_notify_flags \- Reservation Notification Configuration
 .SH SYNOPSIS
index 872658f745f7623bf639bd8b9cee546b2bb288f7..635b1c7d9f3443d0963c392e279a7a0d89e7cb28 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_feat_tmpthresh_thsel" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_feat_tmpthresh_thsel" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_feat_tmpthresh_thsel \- Temperature Threshold - Threshold Type Select
 .SH SYNOPSIS
index 1651598414ea68a261d48c6334ce35e154c8308c..c7ec84d72ff698f6a6c6d257faf4f7e14cef21a0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_features_async_event_config_flags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_features_async_event_config_flags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_features_async_event_config_flags \- Asynchronous Event Configuration configuration flags
 .SH SYNOPSIS
index c9c4981362d34a950b0c9103fcf89a276d70e93f..995248c06a2f867ade5029b5fcde07f6aa4b5013 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_features_id" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_features_id" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_features_id \- Features - Feature Identifiers
 .SH SYNOPSIS
@@ -108,6 +108,14 @@ enum nvme_features_id {
 , 
 .br
 .br
+.BI "    NVME_FEAT_FID_FDP"
+, 
+.br
+.br
+.BI "    NVME_FEAT_FID_FDP_EVENTS"
+, 
+.br
+.br
 .BI "    NVME_FEAT_FID_ENH_CTRL_METADATA"
 , 
 .br
@@ -192,6 +200,10 @@ Endurance Group Event Configuration
 I/O Command Set Profile
 .IP "NVME_FEAT_FID_SPINUP_CONTROL" 12
 Spinup Control
+.IP "NVME_FEAT_FID_FDP" 12
+Flexible Data Placement
+.IP "NVME_FEAT_FID_FDP_EVENTS" 12
+FDP Events
 .IP "NVME_FEAT_FID_ENH_CTRL_METADATA" 12
 Enhanced Controller Metadata
 .IP "NVME_FEAT_FID_CTRL_METADATA" 12
index 37e424ba809108bc9b8ae4e000031f3b518111df..55c37c82b9278918f4b7161f8bcfcf6f9daf2805 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_fid_supported_effects" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_fid_supported_effects" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_fid_supported_effects \- FID Supported and Effects Data Structure definitions
 .SH SYNOPSIS
index 992e47e801338e39491d341a745b08ba7222c742..4cdff9756374d9a7b2bd2e73213fc40134304811 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_fid_supported_effects_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_fid_supported_effects_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_fid_supported_effects_log \- Feature Identifiers Supported and Effects
 .SH SYNOPSIS
index 6715665c5f99c680a1d02f69e70f36726e5947ae..17b47227fb735702c89d2933160d7c1842e9cd16 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_firmware_slot" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_firmware_slot" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_firmware_slot \- Firmware Slot Information Log
 .SH SYNOPSIS
index b813604f70d69842ff89e8b0a995dee799956312..05d0fbc5a2b613876fc8245de86a788749d0f320 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_first_host" 9 "nvme_first_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_first_host" 9 "nvme_first_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_first_host \- Start host iterator
 .SH SYNOPSIS
index dc356e1a9dc1d5df64c801185eba6c1b0c8d5e12..1b539093e6cdc4eac052fd2b0be996678a89d7ce 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_first_subsystem" 9 "nvme_first_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_first_subsystem" 9 "nvme_first_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_first_subsystem \- Start subsystem iterator
 .SH SYNOPSIS
index 125874f50b271577a00a1638a855fde61c993fb8..7636bc9fd7bf9884dcbb46fadd15126da9f29baa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_flush" 9 "nvme_flush" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_flush" 9 "nvme_flush" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_flush \- Send an nvme flush command
 .SH SYNOPSIS
index c8db3778f929090a9cd00d62d09f173af4235a08..177bc156e52305d56f167045a4bfbce780a98a65 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_for_each_host" 9 "nvme_for_each_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_for_each_host" 9 "nvme_for_each_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_for_each_host \- Traverse host list
 .SH SYNOPSIS
index d95ce6fc17ab8494eee092dbcbfd02ceea1bb509..fe5e999d5d8fa9a970ce2919bb860731c0a06ae9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_for_each_host_safe" 9 "nvme_for_each_host_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_for_each_host_safe" 9 "nvme_for_each_host_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_for_each_host_safe \- Traverse host list
 .SH SYNOPSIS
index 29e1a04a3c6b81d14c6c3813d4d323bf8f16bd63..7647f7baa0b32aeab2dcdcbd653192b075ba4775 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_for_each_subsystem" 9 "nvme_for_each_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_for_each_subsystem" 9 "nvme_for_each_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_for_each_subsystem \- Traverse subsystems
 .SH SYNOPSIS
index 9ce4e9299a3781688fb6fa3a582ef2a2c56f820e..1de668b0230e5b3e1967a47855b503d10f5ece80 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_for_each_subsystem_safe" 9 "nvme_for_each_subsystem_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_for_each_subsystem_safe" 9 "nvme_for_each_subsystem_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_for_each_subsystem_safe \- Traverse subsystems
 .SH SYNOPSIS
index 698fe37a745116361f88fd52a0d6b833b6df4017..e658244eb4d5e87ce2112b74f78b8fe6786dcd7f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_format_nvm" 9 "nvme_format_nvm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_format_nvm" 9 "nvme_format_nvm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_format_nvm \- Format nvme namespace(s)
 .SH SYNOPSIS
index 967826e97f2cebcd6c6aed7e918ffb7083cfb1fd..7819ab26e84dd0b839c42e4046c9aa7f04b5fa2d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_format_nvm_compln_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_format_nvm_compln_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_format_nvm_compln_event \- Format NVM Completion Event Data
 .SH SYNOPSIS
index 681aa10ae8cf522fea21de3f99eb527e7c4fbeb4..3916c1f91a1d2eb02d9841226422cdcbef02da7b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_format_nvm_start_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_format_nvm_start_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_format_nvm_start_event \- Format NVM Start Event Data
 .SH SYNOPSIS
index 3d7af4a88826a51f3806e3f442144042da2080b4..e1eb0376ad4d1a0ad1dfef7a763a37b4e623cf39 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_free_ctrl" 9 "nvme_free_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_free_ctrl" 9 "nvme_free_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_free_ctrl \- Free controller
 .SH SYNOPSIS
index f61d3c5f17135af3e22681afbedf53ebbe792c4c..b9e8f2f5f53e53c38ae9746fe46573ec8df68e2b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_free_host" 9 "nvme_free_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_free_host" 9 "nvme_free_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_free_host \- Free nvme_host_t object
 .SH SYNOPSIS
index dcf1325cd138b794ca9b2fc267518c824e321a0b..4eda57f4f6aa1ba22d4f663ab9fac63aa5f191e2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_free_ns" 9 "nvme_free_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_free_ns" 9 "nvme_free_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_free_ns \- Free a namespace object
 .SH SYNOPSIS
index dd2354ac85de9866c64458485b4e7f440b3b4b5f..2310b66867790d0d7dac18365b4f438dcc298d9c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_free_subsystem" 9 "nvme_free_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_free_subsystem" 9 "nvme_free_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_free_subsystem \- Free a subsystem
 .SH SYNOPSIS
index c2a17dd2bed47be8ea12639b087ff5e89d56f3e0..cb8f35926f2de9da555509693737e39a8c1438ad 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_free_tree" 9 "nvme_free_tree" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_free_tree" 9 "nvme_free_tree" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_free_tree \- Free root object
 .SH SYNOPSIS
index 6228653c8ec745f6cf848d454fdfe2da5ab02d44..26ffeaac3cb1d070d9d64ca4dac684285f1e12c8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_fw_commit" 9 "nvme_fw_commit" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_fw_commit" 9 "nvme_fw_commit" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_fw_commit \- Commit firmware using the specified action
 .SH SYNOPSIS
index 5c02ae9068daa3c64a947edaddeedf176044c7de..a93e72b8c1cb28f6872ea977f344768ed4b43017 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_fw_commit_ca" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_fw_commit_ca" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_fw_commit_ca \- Firmware Commit - Commit Action
 .SH SYNOPSIS
index 6800b92b832d7767dd593fba841e8fdd9bcb0ac8..6790ddf2b5ebe3768ecdffccd690504a9c2fb233 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_fw_commit_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_fw_commit_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_fw_commit_event \- Firmware Commit Event Data
 .SH SYNOPSIS
index a6653188ef4735f0788efb88da99c71a7fdf3789..c021d31d69262ed01b3b556ec521d0a07fc37467 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_fw_download" 9 "nvme_fw_download" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_fw_download" 9 "nvme_fw_download" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_fw_download \- Download part or all of a firmware image to the controller
 .SH SYNOPSIS
index c79022136cabec2442130bf3eea117b41c990b90..c9b95fa881f308a12929b652cdb3a25f8b83b49b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_fw_download_seq" 9 "nvme_fw_download_seq" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_fw_download_seq" 9 "nvme_fw_download_seq" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_fw_download_seq \- Firmware download sequence
 .SH SYNOPSIS
index 19531c9858591bdb2e6fe6e7f4f68cb40e6cc5e0..70350198d612a51569de1a35c50c8e956705cb3f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_gen_dhchap_key" 9 "nvme_gen_dhchap_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_gen_dhchap_key" 9 "nvme_gen_dhchap_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_gen_dhchap_key \- DH-HMAC-CHAP key generation
 .SH SYNOPSIS
index 0f47d50957ac3e84a9ad19926aa33c6dba5a25bf..1e1b0dad5898883b1339f88860806a6c0186e00d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_ana_log_len" 9 "nvme_get_ana_log_len" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_ana_log_len" 9 "nvme_get_ana_log_len" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_ana_log_len \- Retrieve size of the current ANA log
 .SH SYNOPSIS
index f5c273f977b10b22e4915ac472fe3c0886ef3728..058e372c9cee1b8f332134455a0a8d4fb6c82e47 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_attr" 9 "nvme_get_attr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_attr" 9 "nvme_get_attr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_attr \- Read sysfs attribute
 .SH SYNOPSIS
index 9c289990e063dbf129e153b800bdd29aa746cff4..622fa5feb40ba1ea0a29c93787a1325cc8742f9d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_ctrl_attr" 9 "nvme_get_ctrl_attr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_ctrl_attr" 9 "nvme_get_ctrl_attr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_ctrl_attr \- Read controller sysfs attribute
 .SH SYNOPSIS
index 33d5c16be8353592acbeae0a52563b30de475010..79d55d614642005695aba632a45a14562bf203a7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_ctrl_telemetry" 9 "nvme_get_ctrl_telemetry" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_ctrl_telemetry" 9 "nvme_get_ctrl_telemetry" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_ctrl_telemetry \- Get controller telemetry log
 .SH SYNOPSIS
index e38aca9d97220c0d459f389f5704149d8f2f37ff..729b1de5348185efec04061daeb84f51b4845097 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_directive_receive_length" 9 "nvme_get_directive_receive_length" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_directive_receive_length" 9 "nvme_get_directive_receive_length" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_directive_receive_length \- Get directive receive length
 .SH SYNOPSIS
index d80b614421704c30586437c40974e2145e4a3b17..6f83ded9fab8c8c75dd12cb8844f808d9beca4a7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_get_discovery_args" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_get_discovery_args" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_get_discovery_args \- Arguments for nvmf_get_discovery_wargs()
 .SH SYNOPSIS
index b176a0251c1a72e9fba32c846bbc2dc26f3c7ce2..50dd0083116b6677f0e0d3a00b9be7727fdbaae1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_feature_length" 9 "nvme_get_feature_length" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_feature_length" 9 "nvme_get_feature_length" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_feature_length \- Retreive the command payload length for a specific feature identifier
 .SH SYNOPSIS
index 9a3d5a96933502009bea6df20745ac62aaa4ebc9..41bd0f2f6c6bc5227ee1672a738dafcb703a69d8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_feature_length2" 9 "nvme_get_feature_length2" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_feature_length2" 9 "nvme_get_feature_length2" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_feature_length2 \- Retreive the command payload length for a specific feature identifier
 .SH SYNOPSIS
index 98d10cee48b7e3e546d17272c8d3a02b309ee9eb..33c0a8f9ebfc6f4ca90731e1d45e7f6526da513c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features" 9 "nvme_get_features" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features" 9 "nvme_get_features" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features \- Retrieve a feature attribute
 .SH SYNOPSIS
index d179153a5f5dbe957978558671fca0a424cd006e..4a5184819c5dc3dda7d530c99bbda7ec4ff7e467 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_arbitration" 9 "nvme_get_features_arbitration" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_arbitration" 9 "nvme_get_features_arbitration" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_arbitration \- Get arbitration feature
 .SH SYNOPSIS
index dd32249ae36a1b1f5d8b955dc744041f361efadf..2fb73f4cda44a827ea34cfca0938695cdf16890a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_async_event" 9 "nvme_get_features_async_event" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_async_event" 9 "nvme_get_features_async_event" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_async_event \- Get asynchronous event feature
 .SH SYNOPSIS
index 3841101bc70f7a8e5654fe2394e07f7e8d688928..fa3a947072a0a4a6a4f6fc534e27a2bc1c3734d0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_auto_pst" 9 "nvme_get_features_auto_pst" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_auto_pst" 9 "nvme_get_features_auto_pst" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_auto_pst \- Get autonomous power state feature
 .SH SYNOPSIS
index 2091ad662ebb9574367e98050273279f0f78db0c..b1a8604e6b867f10344992c50fbad3cf5e33b2c6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_data" 9 "nvme_get_features_data" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_data" 9 "nvme_get_features_data" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_data \- Helper function for @nvme_get_features()
 .SH SYNOPSIS
index 9ccac84f8123c72aad9b77519710a7118defb741..2b4715ebd52639e2d8dff461e76ea52714e9763c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_endurance_event_cfg" 9 "nvme_get_features_endurance_event_cfg" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_endurance_event_cfg" 9 "nvme_get_features_endurance_event_cfg" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_endurance_event_cfg \- Get endurance event config feature
 .SH SYNOPSIS
index a40fe1bb767b1a986d3188574ec8237b2556d6c6..c8962eddeea670522aee871baeaa4088cb15e1a8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_err_recovery" 9 "nvme_get_features_err_recovery" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_err_recovery" 9 "nvme_get_features_err_recovery" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_err_recovery \- Get error recovery feature
 .SH SYNOPSIS
index ede7b19fc6c70b26921b08b06d9c1e3c245cacc9..c2053181a19343bc2106f2e773f752d32d96e570 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_hctm" 9 "nvme_get_features_hctm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_hctm" 9 "nvme_get_features_hctm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_hctm \- Get thermal management feature
 .SH SYNOPSIS
index 608633650d0fd0f1a57abe9d4d1f2c8378a9960a..800211d7cf0d0b4eabad05ae2ccf5a5b27c662e8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_host_behavior" 9 "nvme_get_features_host_behavior" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_host_behavior" 9 "nvme_get_features_host_behavior" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_host_behavior \- Get host behavior feature
 .SH SYNOPSIS
index 52a611aa5fb048d4ad811be925b575257d770434..4ee0ca87624e15373f5f621e7b7520aa4a74fa77 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_host_id" 9 "nvme_get_features_host_id" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_host_id" 9 "nvme_get_features_host_id" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_host_id \- Get host id feature
 .SH SYNOPSIS
index 92eaf7547f98a935426a25bc14fafe0f3c3cf20d..5c3766b69e1cd7ebf1d23c7b662431ffdbf89f41 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_host_mem_buf" 9 "nvme_get_features_host_mem_buf" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_host_mem_buf" 9 "nvme_get_features_host_mem_buf" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_host_mem_buf \- Get host memory buffer feature
 .SH SYNOPSIS
index 6a961a446dbcb758f6458e351b856225266ff852..2fcde5f432352b93e4f9c045e31e3817f79c5123 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_iocs_profile" 9 "nvme_get_features_iocs_profile" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_iocs_profile" 9 "nvme_get_features_iocs_profile" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_iocs_profile \- Get IOCS profile feature
 .SH SYNOPSIS
index f09f537bfe7d9ab9444f1cd6c0f470a6c5d7786c..c2b54dd432a5c882eb18972baafd259476c15018 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_irq_coalesce" 9 "nvme_get_features_irq_coalesce" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_irq_coalesce" 9 "nvme_get_features_irq_coalesce" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_irq_coalesce \- Get IRQ coalesce feature
 .SH SYNOPSIS
index f07d1b63e51f18f698683b7f0abdc68286c3fa9d..1467d6798e1245c4fb2a5f223fd5f32189161f12 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_irq_config" 9 "nvme_get_features_irq_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_irq_config" 9 "nvme_get_features_irq_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_irq_config \- Get IRQ config feature
 .SH SYNOPSIS
index da3130c515dbb20a47378c0918ff1a307de507c7..464ea62241d1379b389fc9bbdfa8a4251e9f5981 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_kato" 9 "nvme_get_features_kato" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_kato" 9 "nvme_get_features_kato" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_kato \- Get keep alive timeout feature
 .SH SYNOPSIS
index 88ac73187684675581d07172a2e2bc89927b92ef..19af419c5af37714a08f796baa16d8a80f74de39 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_lba_range" 9 "nvme_get_features_lba_range" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_lba_range" 9 "nvme_get_features_lba_range" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_lba_range \- Get LBA range feature
 .SH SYNOPSIS
index 2c77cfc5df485d7e356958b74ee31609f30136c0..d06b19b91e027fe8a5f52029b77fcd7fc8c7e4f5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_lba_sts_interval" 9 "nvme_get_features_lba_sts_interval" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_lba_sts_interval" 9 "nvme_get_features_lba_sts_interval" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_lba_sts_interval \- Get LBA status information feature
 .SH SYNOPSIS
index 77109645cc452ea056b8d9bcc6f7d126196be4c7..8c1e396a4aa95e4160002ac2876858495ad33438 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_nopsc" 9 "nvme_get_features_nopsc" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_nopsc" 9 "nvme_get_features_nopsc" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_nopsc \- Get non-operational power state feature
 .SH SYNOPSIS
index 4a577a97400b4f887e311e3773dc83c165ef1daa..bda5239dabc6fd2afef72a5beecd9ecc8918d549 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_num_queues" 9 "nvme_get_features_num_queues" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_num_queues" 9 "nvme_get_features_num_queues" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_num_queues \- Get number of queues feature
 .SH SYNOPSIS
index ec2f5ce591a536125c7c01354eb906f1a6ea11f9..d04f79398bb7bb042b004a37e0f7f6e29244fcb4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_plm_config" 9 "nvme_get_features_plm_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_plm_config" 9 "nvme_get_features_plm_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_plm_config \- Get predictable latency feature
 .SH SYNOPSIS
index 1b653a9373705068e75decfcee217382aa483852..454617c0c60d333e8e5c09af1800339c51f9b648 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_plm_window" 9 "nvme_get_features_plm_window" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_plm_window" 9 "nvme_get_features_plm_window" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_plm_window \- Get window select feature
 .SH SYNOPSIS
index 75f7a01288ad8b0d08ba7b0e265a62e6dfd2ba68..3155068ed3edd4f29f63abdf49f988b4fe59ccce 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_power_mgmt" 9 "nvme_get_features_power_mgmt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_power_mgmt" 9 "nvme_get_features_power_mgmt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_power_mgmt \- Get power management feature
 .SH SYNOPSIS
index 059ae3b99596c5ec073bda9032bf92c0f1776885..e02f80afcd9661350f89b01ce730e7a3c5caeeeb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_resv_mask" 9 "nvme_get_features_resv_mask" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_resv_mask" 9 "nvme_get_features_resv_mask" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_resv_mask \- Get reservation mask feature
 .SH SYNOPSIS
index 5634e9eab72e04d4a5ee52f85519516754169383..4e83fa77640543642e80704506327161ccaf615a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_resv_persist" 9 "nvme_get_features_resv_persist" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_resv_persist" 9 "nvme_get_features_resv_persist" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_resv_persist \- Get reservation persist feature
 .SH SYNOPSIS
index a20b8fcba1ae65765faa87a9b049f89904134efa..069de9e95c7592689578cbcde6f9417956c7810b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_rrl" 9 "nvme_get_features_rrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_rrl" 9 "nvme_get_features_rrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_rrl \- Get read recovery level feature
 .SH SYNOPSIS
index b5869ec0cab2ba0a82657c165dd83db6a648ba94..03a4a21e9d31d7eafc574f9f17727e17fca00872 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_sanitize" 9 "nvme_get_features_sanitize" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_sanitize" 9 "nvme_get_features_sanitize" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_sanitize \- Get sanitize feature
 .SH SYNOPSIS
index 7381831c339193167a1d6566bb0d0bad14ad9ad1..1b40475b36e1e7bb6432c27f60e5481270229be1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_get_features_sel" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_get_features_sel" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_get_features_sel \- Get Features - Select
 .SH SYNOPSIS
index e5281142773fd00daeb68115dcda5d6968f8b41e..6347ea79e09720ef30a57c8dbd90735a9bf33966 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_simple" 9 "nvme_get_features_simple" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_simple" 9 "nvme_get_features_simple" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_simple \- Helper function for @nvme_get_features()
 .SH SYNOPSIS
index 745221c0bdfa04f0405e8634ce73a2197131d477..2f3aaeff315c4c9616702fc8b905d7ccc83a4c56 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_sw_progress" 9 "nvme_get_features_sw_progress" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_sw_progress" 9 "nvme_get_features_sw_progress" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_sw_progress \- Get software progress feature
 .SH SYNOPSIS
index 30d0e9784b8cbabd57157c914a9cae48298b381a..20da00f3aa5ac7f9e48503df8dea532d47f68541 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_temp_thresh" 9 "nvme_get_features_temp_thresh" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_temp_thresh" 9 "nvme_get_features_temp_thresh" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_temp_thresh \- Get temperature threshold feature
 .SH SYNOPSIS
index d8c6503ae2072fffbf87830903e4e788a4c6a666..f0e3ed9996dea1026e7587735c34ccfc97d7be53 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_timestamp" 9 "nvme_get_features_timestamp" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_timestamp" 9 "nvme_get_features_timestamp" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_timestamp \- Get timestamp feature
 .SH SYNOPSIS
index 76db21e5def2497d92a98a6565cfe616cafcd50b..6c366c98791c29026368ff0b938c843a0287c9cd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_volatile_wc" 9 "nvme_get_features_volatile_wc" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_volatile_wc" 9 "nvme_get_features_volatile_wc" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_volatile_wc \- Get volatile write cache feature
 .SH SYNOPSIS
index 8d4d814310d4f245216862c80536efcb9fc1c82d..5a517da7a6c2a8efb94157f81b6f8dad58c4389f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_write_atomic" 9 "nvme_get_features_write_atomic" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_write_atomic" 9 "nvme_get_features_write_atomic" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_write_atomic \- Get write atomic feature
 .SH SYNOPSIS
index 4ad6411ee0a2876b7803e5a352f956abdfef7962..cd1da22a7c23738b4698bb528fc47b2a65f42fcc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_features_write_protect" 9 "nvme_get_features_write_protect" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_features_write_protect" 9 "nvme_get_features_write_protect" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_features_write_protect \- Get write protect feature
 .SH SYNOPSIS
index c5df379b67d03ce3f41b299776e2c17f27cdbf00..5355a3ca24b3f486245bcbf19fb72cee12c2c080 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_host_telemetry" 9 "nvme_get_host_telemetry" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_host_telemetry" 9 "nvme_get_host_telemetry" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_host_telemetry \- Get host telemetry log
 .SH SYNOPSIS
index cab0c57cb119021dad020b1cf756235708fa7647..02a9dd328da3ea756ce9097bcb3b9546ef23da70 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_lba_status" 9 "nvme_get_lba_status" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_lba_status" 9 "nvme_get_lba_status" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_lba_status \- Retrieve information on possibly unrecoverable LBAs
 .SH SYNOPSIS
index 449088088abef820620ca89bbbcb2b59d39c8836..79fd0ee8d82c9ee42a765e517153efa6e53415ef 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_lba_status_log" 9 "nvme_get_lba_status_log" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_lba_status_log" 9 "nvme_get_lba_status_log" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_lba_status_log \- Retrieve the LBA Status log page
 .SH SYNOPSIS
index 5c9f50c45feac35b5e75b0f4ae0c2839a93368d1..6c33516cf4b947188d6dab9b6a81f692705722f8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log" 9 "nvme_get_log" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log" 9 "nvme_get_log" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log \- NVMe Admin Get Log command
 .SH SYNOPSIS
index 46d09318df40188b3c45ecbae8dfc01cc59a9dae..6822ff3499dd2643b7847456df48d0275dbd32b0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_ana" 9 "nvme_get_log_ana" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_ana" 9 "nvme_get_log_ana" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_ana \- Retrieve Asymmetric Namespace Access log page
 .SH SYNOPSIS
index 6f4a07cf18b736c3925cb3b0075d0359eccea5da..466d7e475f6d4919f5ac1fdfd2d40ee84ab0327a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_ana_groups" 9 "nvme_get_log_ana_groups" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_ana_groups" 9 "nvme_get_log_ana_groups" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_ana_groups \- Retrieve Asymmetric Namespace Access groups only log page
 .SH SYNOPSIS
index b8d65b04ec66f13cab297b9332d03f83fa5ceba2..a64931654331b8a432b6c6592b02f73a13f55c48 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_boot_partition" 9 "nvme_get_log_boot_partition" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_boot_partition" 9 "nvme_get_log_boot_partition" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_boot_partition \- Retrieve Boot Partition
 .SH SYNOPSIS
index 9ce502ef135ecf1713a41e239d0761c0d0d564eb..2f93f0d548131343e73dca891e0fbe8fad4eace4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_changed_ns_list" 9 "nvme_get_log_changed_ns_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_changed_ns_list" 9 "nvme_get_log_changed_ns_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_changed_ns_list \- Retrieve namespace changed list
 .SH SYNOPSIS
index a5a78b0c7535060890a2d71ed5f7b6af72875ad5..70454135d80ef630ccd164e8e7ff5c09ac02407a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_cmd_effects" 9 "nvme_get_log_cmd_effects" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_cmd_effects" 9 "nvme_get_log_cmd_effects" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_cmd_effects \- Retrieve nvme command effects log
 .SH SYNOPSIS
index feae35b75e59cfa80ed3f5297cb3c05404462765..4eca3206ab74c2a6fc6482ae49add0554a4763c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_create_telemetry_host" 9 "nvme_get_log_create_telemetry_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_create_telemetry_host" 9 "nvme_get_log_create_telemetry_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_create_telemetry_host \- Create host telemetry log
 .SH SYNOPSIS
index 710f0a0ede42f4ba54eb84449280c4578767c896..9447e7e303162cad163a58b952847ce9837dc395 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_device_self_test" 9 "nvme_get_log_device_self_test" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_device_self_test" 9 "nvme_get_log_device_self_test" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_device_self_test \- Retrieve the device self test log
 .SH SYNOPSIS
index 3954a136d576e00d70a66b97bad1e2a913c6da6b..4fd1409880aed606ea790f23e361f8037e8e481c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_discovery" 9 "nvme_get_log_discovery" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_discovery" 9 "nvme_get_log_discovery" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_discovery \- Retrieve Discovery log page
 .SH SYNOPSIS
index 7690ec7b98a040ea1418ae0ebe1b6e2ce046e8c2..91b596e75b2802267f0e5d42f673d2842a57f938 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_endurance_group" 9 "nvme_get_log_endurance_group" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_endurance_group" 9 "nvme_get_log_endurance_group" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_endurance_group \- Get Endurance Group log
 .SH SYNOPSIS
index 2be5ff34469df7f474300606bf2a74b0de9a30aa..fbb4910b0779bebf1ef3edad9c81756d6d3445ca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_endurance_grp_evt" 9 "nvme_get_log_endurance_grp_evt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_endurance_grp_evt" 9 "nvme_get_log_endurance_grp_evt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_endurance_grp_evt \- Retrieve Rotational Media Information
 .SH SYNOPSIS
index 09bdd324dff09c4fbe3ba816f08a221684c2b9c8..48c1bc1d500e65be261c0271a31872f391069f95 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_error" 9 "nvme_get_log_error" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_error" 9 "nvme_get_log_error" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_error \- Retrieve nvme error log
 .SH SYNOPSIS
diff --git a/doc/man/nvme_get_log_fdp_configurations.2 b/doc/man/nvme_get_log_fdp_configurations.2
new file mode 100644 (file)
index 0000000..71c0b5f
--- /dev/null
@@ -0,0 +1,21 @@
+.TH "nvme_get_log_fdp_configurations" 9 "nvme_get_log_fdp_configurations" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_get_log_fdp_configurations \- Get list of Flexible Data Placement configurations
+.SH SYNOPSIS
+.B "int" nvme_get_log_fdp_configurations
+.BI "(int fd "  ","
+.BI "__u16 egid "  ","
+.BI "__u32 offset "  ","
+.BI "__u32 len "  ","
+.BI "void *log "  ");"
+.SH ARGUMENTS
+.IP "fd" 12
+File descriptor of nvme device
+.IP "egid" 12
+Endurance group identifier
+.IP "offset" 12
+Offset into log page
+.IP "len" 12
+Length (in bytes) of provided user buffer to hold the log data
+.IP "log" 12
+Log page data buffer
diff --git a/doc/man/nvme_get_log_fdp_events.2 b/doc/man/nvme_get_log_fdp_events.2
new file mode 100644 (file)
index 0000000..a5613f4
--- /dev/null
@@ -0,0 +1,24 @@
+.TH "nvme_get_log_fdp_events" 9 "nvme_get_log_fdp_events" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_get_log_fdp_events \- Get Flexible Data Placement events
+.SH SYNOPSIS
+.B "int" nvme_get_log_fdp_events
+.BI "(int fd "  ","
+.BI "__u16 egid "  ","
+.BI "bool host_events "  ","
+.BI "__u32 offset "  ","
+.BI "__u32 len "  ","
+.BI "void *log "  ");"
+.SH ARGUMENTS
+.IP "fd" 12
+File descriptor of nvme device
+.IP "egid" 12
+Endurance group identifier
+.IP "host_events" 12
+Whether to report host or controller events
+.IP "offset" 12
+Offset into log page
+.IP "len" 12
+Length (in bytes) of provided user buffer to hold the log data
+.IP "log" 12
+Log page data buffer
diff --git a/doc/man/nvme_get_log_fdp_stats.2 b/doc/man/nvme_get_log_fdp_stats.2
new file mode 100644 (file)
index 0000000..adcd781
--- /dev/null
@@ -0,0 +1,21 @@
+.TH "nvme_get_log_fdp_stats" 9 "nvme_get_log_fdp_stats" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_get_log_fdp_stats \- Get Flexible Data Placement statistics
+.SH SYNOPSIS
+.B "int" nvme_get_log_fdp_stats
+.BI "(int fd "  ","
+.BI "__u16 egid "  ","
+.BI "__u32 offset "  ","
+.BI "__u32 len "  ","
+.BI "void *log "  ");"
+.SH ARGUMENTS
+.IP "fd" 12
+File descriptor of nvme device
+.IP "egid" 12
+Endurance group identifier
+.IP "offset" 12
+Offset into log page
+.IP "len" 12
+Length (in bytes) of provided user buffer to hold the log data
+.IP "log" 12
+Log page data buffer
index 7b4b8e5e949ae022d3b7c55c47d2d1336dd96f1a..0b7541c32c02fba085f599e0d8971606f83de7e0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_fid_supported_effects" 9 "nvme_get_log_fid_supported_effects" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_fid_supported_effects" 9 "nvme_get_log_fid_supported_effects" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_fid_supported_effects \- Retrieve Feature Identifiers Supported and Effects
 .SH SYNOPSIS
index 2792ba63c93085be5cbe8a41683a13f163fb6739..787f2d0b4c804d4a9a5e35eae9d5bb0368124930 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_fw_slot" 9 "nvme_get_log_fw_slot" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_fw_slot" 9 "nvme_get_log_fw_slot" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_fw_slot \- Retrieves the controller firmware log
 .SH SYNOPSIS
index 723e6b11c2b87d342ce3c0acaaf06971c6c9f4d3..11ba889bff611825c454cfc0bcdb467e2f7da8b6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_lba_status" 9 "nvme_get_log_lba_status" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_lba_status" 9 "nvme_get_log_lba_status" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_lba_status \- Retrieve LBA Status
 .SH SYNOPSIS
index 117034b33d6a56211c73dcbd20d182704f0dd8bf..ce07cf952eab8aa9823c7cbc0efda2afacc2689a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_media_unit_stat" 9 "nvme_get_log_media_unit_stat" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_media_unit_stat" 9 "nvme_get_log_media_unit_stat" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_media_unit_stat \- Retrieve Media Unit Status
 .SH SYNOPSIS
index c153f1dd1f786a4764f825d0b6ca854dfbb507c4..c2c973fd995d7659b07ffa4dc18f561022d44dcf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_mi_cmd_supported_effects" 9 "nvme_get_log_mi_cmd_supported_effects" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_mi_cmd_supported_effects" 9 "nvme_get_log_mi_cmd_supported_effects" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_mi_cmd_supported_effects \- displays the MI Commands Supported by the controller
 .SH SYNOPSIS
index bff7063c2140b61104e37e6ba5d6baabb2b4bc11..9ff9c87c34abe5837aa95e8477e54509007a92ca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_page" 9 "nvme_get_log_page" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_page" 9 "nvme_get_log_page" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_page \- Get log page data
 .SH SYNOPSIS
index 168e4e9e1b02f25be3bc3bed8821a8edf0f88db1..d11de0959968de4d7c9598637c39b464c6fbb955 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_persistent_event" 9 "nvme_get_log_persistent_event" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_persistent_event" 9 "nvme_get_log_persistent_event" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_persistent_event \- Retrieve Persistent Event Log
 .SH SYNOPSIS
index ca8a07176f931e56df9b24be4fabcb3f4e17e312..6e332777f771b5e30b84e87288086364f3bece33 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_predictable_lat_event" 9 "nvme_get_log_predictable_lat_event" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_predictable_lat_event" 9 "nvme_get_log_predictable_lat_event" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_predictable_lat_event \- Retrieve Predictable Latency Event Aggregate Log Page
 .SH SYNOPSIS
index 653e807eb2d90b6de1d3ef9a92704ed0e5ff26e1..bc5fde82ffee571e63198f8bdadd29f72bc1439a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_predictable_lat_nvmset" 9 "nvme_get_log_predictable_lat_nvmset" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_predictable_lat_nvmset" 9 "nvme_get_log_predictable_lat_nvmset" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_predictable_lat_nvmset \- Predictable Latency Per NVM Set
 .SH SYNOPSIS
diff --git a/doc/man/nvme_get_log_reclaim_unit_handle_usage.2 b/doc/man/nvme_get_log_reclaim_unit_handle_usage.2
new file mode 100644 (file)
index 0000000..7e62cc6
--- /dev/null
@@ -0,0 +1,21 @@
+.TH "nvme_get_log_reclaim_unit_handle_usage" 9 "nvme_get_log_reclaim_unit_handle_usage" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_get_log_reclaim_unit_handle_usage \- Get reclaim unit handle usage
+.SH SYNOPSIS
+.B "int" nvme_get_log_reclaim_unit_handle_usage
+.BI "(int fd "  ","
+.BI "__u16 egid "  ","
+.BI "__u32 offset "  ","
+.BI "__u32 len "  ","
+.BI "void *log "  ");"
+.SH ARGUMENTS
+.IP "fd" 12
+File descriptor of nvme device
+.IP "egid" 12
+Endurance group identifier
+.IP "offset" 12
+Offset into log page
+.IP "len" 12
+Length (in bytes) of provided user buffer to hold the log data
+.IP "log" 12
+Log page data buffer
index ec14ee49e9f3d01de0a1e5d56d38f6001a95968c..dd0a3cbe91a828a60a89d694d5113eb2fe2e82ac 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_reservation" 9 "nvme_get_log_reservation" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_reservation" 9 "nvme_get_log_reservation" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_reservation \- Retrieve Reservation Notification
 .SH SYNOPSIS
index bc935bd2492aca5e8bfab79820d834a05f3f5ce5..35c7e41e893f5f8681d821a7c58e59442d072be0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_sanitize" 9 "nvme_get_log_sanitize" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_sanitize" 9 "nvme_get_log_sanitize" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_sanitize \- Retrieve Sanitize Status
 .SH SYNOPSIS
index 3f232ad1c2a856c5dbee4cb16a7ffa49d0e302b7..48fcc57506abc39d4051bc9c2d338c103c024aeb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_smart" 9 "nvme_get_log_smart" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_smart" 9 "nvme_get_log_smart" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_smart \- Retrieve nvme smart log
 .SH SYNOPSIS
index f0a94a353a9b2969f2e6a9881156e632d4ad674f..2b8881d5d60b73ec5cc0954bbad2f1f0d653c1b0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_support_cap_config_list" 9 "nvme_get_log_support_cap_config_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_support_cap_config_list" 9 "nvme_get_log_support_cap_config_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_support_cap_config_list \- Retrieve Supported Capacity Configuration List
 .SH SYNOPSIS
index 832a566b3ed9d1ba1ca06288ec354ae048a91028..335b35db88b9ba2c4e4bb4994493c14ecff28707 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_supported_log_pages" 9 "nvme_get_log_supported_log_pages" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_supported_log_pages" 9 "nvme_get_log_supported_log_pages" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_supported_log_pages \- Retrieve nmve supported log pages
 .SH SYNOPSIS
index 110dab09233e88157893734142ea1a29fc13251e..2fa418fd9a5f83f9c80ed0c6a09b4c098c6d877a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_telemetry_ctrl" 9 "nvme_get_log_telemetry_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_telemetry_ctrl" 9 "nvme_get_log_telemetry_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_telemetry_ctrl \- Get Telemetry Controller-Initiated log page
 .SH SYNOPSIS
index 56cabaeb4e51238705abe665a5a4c40f9dca1169..01bccc75a181ec0c5613c44d24df3c7e473df94d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_telemetry_host" 9 "nvme_get_log_telemetry_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_telemetry_host" 9 "nvme_get_log_telemetry_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_telemetry_host \- Get Telemetry Host-Initiated log page
 .SH SYNOPSIS
index 10906fab05b151967e4e365360af3f0422249308..908bf122d67e72bcd496f856906db559490896bd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_log_zns_changed_zones" 9 "nvme_get_log_zns_changed_zones" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_log_zns_changed_zones" 9 "nvme_get_log_zns_changed_zones" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_log_zns_changed_zones \- Retrieve list of zones that have changed
 .SH SYNOPSIS
index 5a86abbb3ca19758cc114cddf7dcb63d0f0f55ac..63419a7d810afaf1ce5022879a6bce7f89fb78b4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_logical_block_size" 9 "nvme_get_logical_block_size" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_logical_block_size" 9 "nvme_get_logical_block_size" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_logical_block_size \- Retrieve block size
 .SH SYNOPSIS
index 90f3210d2a985b2a808fe2d5dccd070d6102b063..d6d101a92255c70d5eef93bca9cb0335be9ae5a2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_new_host_telemetry" 9 "nvme_get_new_host_telemetry" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_new_host_telemetry" 9 "nvme_get_new_host_telemetry" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_new_host_telemetry \- Get new host telemetry log
 .SH SYNOPSIS
index bf9977dae5a14542ad7f02726807b80460c69a2d..0aa77f743344b5ebf621dcea85b0b15a09e27a62 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_ns_attr" 9 "nvme_get_ns_attr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_ns_attr" 9 "nvme_get_ns_attr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_ns_attr \- Read namespace sysfs attribute
 .SH SYNOPSIS
index ece18ecda0316091b81de1c21058b20988bdb46d..87736865af436e548647b8447395db9792d1cb87 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_nsid" 9 "nvme_get_nsid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_nsid" 9 "nvme_get_nsid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_nsid \- Retrieve the NSID from a namespace file descriptor
 .SH SYNOPSIS
index e7044a40b5d9bef503bc516a56e531ab862d5162..73b73a2c0c4c52863af8585a1e16958059d80137 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_path_attr" 9 "nvme_get_path_attr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_path_attr" 9 "nvme_get_path_attr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_path_attr \- Read path sysfs attribute
 .SH SYNOPSIS
index bad5b54403eb8649dad79164268f37b46713339a..b5d8582648a119968d47eca29fefee508fbb031d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_property" 9 "nvme_get_property" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_property" 9 "nvme_get_property" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_property \- Get a controller property
 .SH SYNOPSIS
index 39d632de836726216546f1a5a28fe468661d5cfd..645e94717dae9aa5cec5fecec3983d4dce59cf93 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_get_subsys_attr" 9 "nvme_get_subsys_attr" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_get_subsys_attr" 9 "nvme_get_subsys_attr" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_get_subsys_attr \- Read subsystem sysfs attribute
 .SH SYNOPSIS
index e2699d9fbcffac58f7c579447e9e1c1a58f2d994..a243deefeb61050e025746b16a745eddc3526a9a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_hmac_alg" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_hmac_alg" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_hmac_alg \- HMAC algorithm
 .SH SYNOPSIS
index dc6f2c92feb41633d0b164e5fa4496256df447ae..d2d1b4ddf94d3daf5def2432491b8d390e07d7b1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_host_behavior_support" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_host_behavior_support" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_host_behavior_support \- Enable Advanced Command
 .SH SYNOPSIS
index 5eabfd3522b529e2fe1005019c8a292b1e2d7339..d99e3cd9d60afc86d4b873f773827ec29ccc25d9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_get_dhchap_key" 9 "nvme_host_get_dhchap_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_get_dhchap_key" 9 "nvme_host_get_dhchap_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_get_dhchap_key \- Return host key
 .SH SYNOPSIS
index afa617812896377cc44f44b6dd8d05484a126f4e..313c6aa1b4bdd16896f9ca0a808bfdee108f4b24 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_get_hostid" 9 "nvme_host_get_hostid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_get_hostid" 9 "nvme_host_get_hostid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_get_hostid \- Host ID of an nvme_host_t object
 .SH SYNOPSIS
index 0c897d681920a7fa5ae5fb436cc3d2e5974420f8..91383a955f238c76fe4478cc896f69664b3b73f3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_get_hostnqn" 9 "nvme_host_get_hostnqn" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_get_hostnqn" 9 "nvme_host_get_hostnqn" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_get_hostnqn \- Host NQN of an nvme_host_t object
 .SH SYNOPSIS
index c021b562cc8cd5e312e7dc5a2efbdf485bd37724..095d114d59a721b995a32093d66d677f0b95757b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_get_hostsymname" 9 "nvme_host_get_hostsymname" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_get_hostsymname" 9 "nvme_host_get_hostsymname" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_get_hostsymname \- Get the host's symbolic name
 .SH SYNOPSIS
index 29a74b0ef0dc94c5d245cf88df0e2a1ba8e5b2a4..df64a25818980d976f9cf5be970e9b99841d3fe9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_get_root" 9 "nvme_host_get_root" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_get_root" 9 "nvme_host_get_root" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_get_root \- Returns nvme_root_t object
 .SH SYNOPSIS
diff --git a/doc/man/nvme_host_is_pdc_enabled.2 b/doc/man/nvme_host_is_pdc_enabled.2
new file mode 100644 (file)
index 0000000..ab175ee
--- /dev/null
@@ -0,0 +1,16 @@
+.TH "nvme_host_is_pdc_enabled" 9 "nvme_host_is_pdc_enabled" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_host_is_pdc_enabled \- Is Persistenct Discovery Controller enabled
+.SH SYNOPSIS
+.B "bool" nvme_host_is_pdc_enabled
+.BI "(nvme_host_t h "  ","
+.BI "bool fallback "  ");"
+.SH ARGUMENTS
+.IP "h" 12
+Host which to check if PDC is enabled
+.IP "fallback" 12
+The fallback default value of the flag when
+\fInvme_host_set_pdc_enabled\fP has not be used
+to set the flag.
+.SH "RETURN"
+true if PDC is enabled for \fIh\fP, else false
index 9d4da55a494fe8dff0fdf26215a295f5d912a52a..d37127bc7bd5237a46ccd7983d20cd49fb698e35 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_host_mem_buf_attrs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_host_mem_buf_attrs" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_host_mem_buf_attrs \- Host Memory Buffer - Attributes Data Structure
 .SH SYNOPSIS
index c329d95693e29f1244886b77318677555d4520e8..0b1719b512d3cdce9fd0e46093c5517845d1a3e6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_host_metadata" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_host_metadata" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_host_metadata \- Host Metadata Data Structure
 .SH SYNOPSIS
index 96704fa5b4ada0c13ae12f8bdf78f3f2749be5b6..424fca25de9d900bbb51ab162721d7d253626520 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_set_dhchap_key" 9 "nvme_host_set_dhchap_key" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_set_dhchap_key" 9 "nvme_host_set_dhchap_key" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_set_dhchap_key \- set host key
 .SH SYNOPSIS
index f8b372569fb9576c68f9122eba19edc5b20e35c0..644dbe72fe9632cc6621d00c27fa07907c39575e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_host_set_hostsymname" 9 "nvme_host_set_hostsymname" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_host_set_hostsymname" 9 "nvme_host_set_hostsymname" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_host_set_hostsymname \- Set the host's symbolic name
 .SH SYNOPSIS
diff --git a/doc/man/nvme_host_set_pdc_enabled.2 b/doc/man/nvme_host_set_pdc_enabled.2
new file mode 100644 (file)
index 0000000..cede6d6
--- /dev/null
@@ -0,0 +1,16 @@
+.TH "nvme_host_set_pdc_enabled" 9 "nvme_host_set_pdc_enabled" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_host_set_pdc_enabled \- Set Persistent Discovery Controller flag
+.SH SYNOPSIS
+.B "void" nvme_host_set_pdc_enabled
+.BI "(nvme_host_t h "  ","
+.BI "bool enabled "  ");"
+.SH ARGUMENTS
+.IP "h" 12
+Host for which the falg should be set
+.IP "enabled" 12
+The bool to set the enabled flag
+.SH "DESCRIPTION"
+When \fBnvme_host_set_pdc_enabled\fP is not used to set the PDC flag,
+\fBnvme_host_is_pdc_enabled\fP will return the default value which was
+passed into the function and not the undefined flag value.
index 9d0661f42efe9d44c8ff5540ac81bd58b97d37cc..f3b3164221ca57dbd3410c6cbc1767ff1927a870 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_ctrl" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_ctrl" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_ctrl \- Identify Controller data structure
 .SH SYNOPSIS
index 7046e5c7e71116bc0fe136a4460b3f139ab2cc26..bb14914ca69b8e61bc3d23d6ddb8b44f2c264900 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_anacap" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_anacap" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_anacap \- This field indicates the capabilities associated with Asymmetric Namespace Access Reporting.
 .SH SYNOPSIS
index bf40d5d190957e2467ef270018ec4e4fb945faa3..661ba052c78820bf599e19de265bde7c30ef5ced 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_apsta" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_apsta" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_apsta \- Flags indicating the attributes of the autonomous power state transition feature.
 .SH SYNOPSIS
index 138534e7fee24478058e57e7875a94db3b6fac37..b9a71e4d21750bd88adbac8e46609b03e281a0dd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_avscc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_avscc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_avscc \- Flags indicating the configuration settings for Admin Vendor Specific command handling.
 .SH SYNOPSIS
index 4a9c640926df723df7e73183a78b450bc330a78b..e4dee6fab6e6968902af7903866365e2b6c299a2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_cmic" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_cmic" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_cmic \- Controller Multipath IO and Namespace Sharing Capabilities of the controller and NVM subsystem.
 .SH SYNOPSIS
index 49af0165fbd146c926ab50000bb7cec5faa5aed4..111367fba3de25abaead111e969703161105386f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_cntrltype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_cntrltype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_cntrltype \- Controller types
 .SH SYNOPSIS
index a5d39b3411dcc738627710a7e715aef8e7a28b9c..88e10454c17d4e0aaab4651b00d47dce2eb2712f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_cqes" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_cqes" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_cqes \- Defines the required and maximum Completion Queue entry size when using the NVM Command Set.
 .SH SYNOPSIS
index 3e98d880dbd805c61e7689435a045bc4444dbf8a..fb5b19e0af79eadd82b0548938d05d4ad4e5c9df 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_ctratt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_ctratt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_ctratt \- Controller attributes
 .SH SYNOPSIS
@@ -65,6 +65,10 @@ enum nvme_id_ctrl_ctratt {
 .br
 .br
 .BI "    NVME_CTRL_CTRATT_ELBAS"
+, 
+.br
+.br
+.BI "    NVME_CTRL_CTRATT_FDPS"
 
 };
 .SH Constants
@@ -102,3 +106,5 @@ Delete Endurance Groups supported
 Delete NVM Sets supported
 .IP "NVME_CTRL_CTRATT_ELBAS" 12
 Extended LBA Formats supported
+.IP "NVME_CTRL_CTRATT_FDPS" 12
+Flexible Data Placement supported
index c7ac74b4ab39d13b3af7d8fce4882f417500e4b2..84e8eac0b19fe5c837332eb5c32b65fe95ced30e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_dctype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_dctype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_dctype \- Discovery Controller types
 .SH SYNOPSIS
index 7d365bb737631156652fe7a6dbe706ec88e549a0..5cb40c6c587f1a478ef95fd57850017c20bc0247 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_dsto" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_dsto" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_dsto \- Flags indicating the optional Device Self-test command or operation behaviors supported by the controller or NVM subsystem.
 .SH SYNOPSIS
index 1642213dcee5eeba17ba67a8e4abd5a35549904f..ed96f39840f7f46378ce6734aed9a055d3f1bb5e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_fcatt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_fcatt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_fcatt \- This field indicates attributes of the controller that are specific to NVMe over Fabrics.
 .SH SYNOPSIS
index edbd3d6aaecb60839ae6710466d5bbe43a82801b..435660172c09c7218376fe319e54a4dffdeb2228 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_fna" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_fna" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_fna \- This field indicates attributes for the Format NVM command.
 .SH SYNOPSIS
index 533dbf8cb83246724b8661af8f2e2e6d53ad24ec..064ee866c444f67d1176ab593d5bb45443be167f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_frmw" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_frmw" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_frmw \- Flags and values indicates capabilities regarding firmware updates from &struct nvme_id_ctrl.frmw.
 .SH SYNOPSIS
index 272c604817bc21093414996d97fe21a8cffb9a73..7abf42ede67859e0b6bd602d2d885c6979ccc5f9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_fuses" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_fuses" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_fuses \- This field indicates the fused operations that the controller supports.
 .SH SYNOPSIS
index 9d1106c8b9200c4943d95714e6e341a81a08f606..ae1e293b5d67f32a24db360193716ba005524011 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_hctm" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_hctm" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_hctm \- Flags indicate the attributes of the host controlled thermal management feature
 .SH SYNOPSIS
index fc29d73025915f22a1d0d3fdc69a72ec86186d70..24671ea864e6dcda1f31cc17a80983de7b7705bd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_lpa" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_lpa" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_lpa \- Flags indicating optional attributes for log pages that are accessed via the Get Log Page command.
 .SH SYNOPSIS
index f26c44357d912f8eb82312bcefedba0024d2d7ca..9c536edad1947e1357b89e34069779c7909b34eb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_mec" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_mec" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_mec \- Flags indicating the capabilities of the Management Endpoint in the Controller, &struct nvme_id_ctrl.mec.
 .SH SYNOPSIS
index 46395785cb5f462b652ee88de1c35cbfe48db21b..42cb09725cdd3e8299b232db2d1dac5e4c440d43 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_ctrl_nvm" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_ctrl_nvm" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_ctrl_nvm \- I/O Command Set Specific Identify Controller data structure
 .SH SYNOPSIS
index 52e2581d58ca8f45eb4b5249a6300fa283513ec3..e0ced532a61d8d4f0cfe06b735c765199cfe994a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_nvmsr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_nvmsr" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_nvmsr \- This field reports information associated with the NVM Subsystem, see &struct nvme_id_ctrl.nvmsr.
 .SH SYNOPSIS
index a04d0034b5b2b37610167301a1b53cb6ffd9ec5f..670e9a262bd835bda89bd78aa46833b9e845f0d5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_nvscc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_nvscc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_nvscc \- This field indicates the configuration settings for NVM Vendor Specific command handling.
 .SH SYNOPSIS
index 05d915c328b96db579df41854298f96e7b15ac6b..f17eba6789d87a424e316c460dc2aceb8afb5aa1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_nwpc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_nwpc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_nwpc \- This field indicates the optional namespace write protection capabilities supported by the controller.
 .SH SYNOPSIS
index b67818fe5c5fee86dea3ae747350ebad82f47c84..d1915fd48966e256e0f8919079fdbe69264d96c5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_oacs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_oacs" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_oacs \- Flags indicating the optional Admin commands and features supported by the controller, see &struct nvme_id_ctrl.oacs.
 .SH SYNOPSIS
index 9b065b205a862d4be5dd74d27ec4a1f2097ba31a..dc536d40bec02fa5bf86be151165258c6af6663f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_oaes" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_oaes" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_oaes \- Optional Asynchronous Events Supported
 .SH SYNOPSIS
index e3c8a47b0e7427823e1ef4d9c6bac9f4f25099f8..3528e37412611b063bb1d43c071b41e205c7289f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_ofcs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_ofcs" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_ofcs \- Indicate whether the controller supports optional fabric commands.
 .SH SYNOPSIS
index 011fc5c63ca17e1f1d585aa5e6ebb2f10c11d435..f788b4d6dedfbfaad67d8d634fa406cef49c92e8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_oncs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_oncs" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_oncs \- This field indicates the optional NVM commands and features supported by the controller.
 .SH SYNOPSIS
index 52ff2669d0c34e1ebef29e4d76b79b567a64bbc8..501fcccaa8be1ba739fcef9c36a43d4ac541b86d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_rpmbs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_rpmbs" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_rpmbs \- This field indicates if the controller supports one or more Replay Protected Memory Blocks, from &struct nvme_id_ctrl.rpmbs.
 .SH SYNOPSIS
index 1a6456f8e97537f72292b52fb68003da15cc22f0..9c53643c294e20dc9b7fbc58e7691ae4fa306b2c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_sanicap" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_sanicap" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_sanicap \- Indicates attributes for sanitize operations.
 .SH SYNOPSIS
index fdfba0594412055898291ef470f7d2163569db96..10809b8be4652f520b84aec7990998221a816a1e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_sgls" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_sgls" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_sgls \- This field indicates if SGLs are supported for the NVM Command Set and the particular SGL types supported.
 .SH SYNOPSIS
index 4135fe8a27036c8133856349f32cf55c8c56e8e8..b50dd1b966000b2302786e7bdbb4ee002f8acd65 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_sqes" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_sqes" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_sqes \- Defines the required and maximum Submission Queue entry size when using the NVM Command Set.
 .SH SYNOPSIS
index 3a36864f9fa0481e63b0f06171df9ca8da749e0a..bc65e6d18d7e426596f29652553b23afab7c727e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_vwc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_vwc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_vwc \- Volatile write cache
 .SH SYNOPSIS
index 53283c9e8f9750c9620f7316712fea3b61c421d6..dd6d327cc7c8bb1682aee0fa8db5a554bb0cf612 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ctrl_vwci" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ctrl_vwci" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ctrl_vwci \- This field indicates information about remaining number of times that VPD contents are able to be updated using the VPD Write command, see &struct nvme_id_ctrl.vwci.
 .SH SYNOPSIS
index 63267f66487d937d3d3298203879e8c9b0deb1db..d4e4b8a292580240da5078e2540113f2b09570f3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_directives" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_directives" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_directives \- Identify Directive - Return Parameters Data Structure
 .SH SYNOPSIS
index 1998ba36ab9308655090c215d6941ddaae4d9310..28206690aaf342ad87eeb08b137612ef7d19dca9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_domain_attr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_domain_attr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_domain_attr \- Domain Attributes Entry
 .SH SYNOPSIS
index 95b0a9984ab9d58117a9a1c2c221fce17403811a..64c0e3f9133a6c50cf3b2b492b70124fdabf4250 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_domain_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_domain_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_domain_list \- Domain List
 .SH SYNOPSIS
index 94cd512ff62bf6d77a3a12c7ae784be6911648ce..12128eff6151bcdadb988f195b3d7ae9299b7356 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_endurance_group_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_endurance_group_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_endurance_group_list \- Endurance Group List
 .SH SYNOPSIS
index 704ed39185a27c4926450ab9b9df631d90ba7b0c..06de59c4c0cce3675838d686dae083e7aa416d00 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_independent_id_ns" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_independent_id_ns" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_independent_id_ns \- Identify - I/O Command Set Independent Identify Namespace Data Structure
 .SH SYNOPSIS
index 4145e1769e25ad3dc9406002a7ab18109b7a4a57..6c31e0af1af1ae43ef374015f2903ca2421bbff0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_iocs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_iocs" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_iocs \- NVMe Identify IO Command Set data structure
 .SH SYNOPSIS
index ce284d80ef0528f4c58f25d8d97997df18f8e037..830525273777009da7638e9257d2883433e83734 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_ns" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_ns" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_ns \- Identify Namespace data structure
 .SH SYNOPSIS
index 324faf01668dcb91093e1923f45007c85da4bfd5..010790eb4e6a81d7356d921d59396c3ee5ad3349 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_attr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_attr" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_attr \- Specifies attributes of the namespace.
 .SH SYNOPSIS
index 6d98a2a420d0a160ff34a748b4617f13f3f8cfb1..382aff7c7014c47c0122591682dd49fe8fc1ce7c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_dlfeat" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_dlfeat" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_dlfeat \- This field indicates information about features that affect deallocating logical blocks for this namespace.
 .SH SYNOPSIS
index 57faa6faed45ca27f4f954b41c4c0b32837b35c4..cd8aebb10547ce00aa185450acc3e851e9372597 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_dpc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_dpc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_dpc \- This field indicates the capabilities for the end-to-end data protection feature.
 .SH SYNOPSIS
index ebd45d5cd656cc05e7f3da0b847a8361256311f6..7f7097c1520a32d06ed44221edd7d5096ec3c1cd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_dps" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_dps" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_dps \- This field indicates the Type settings for the end-to-end data protection feature.
 .SH SYNOPSIS
index 4d553846969e5d0c7fd84f58f746ad14297dc933..5794cebf687ed4e5a4bf6d8a017795a9e109ad78 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_flbas" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_flbas" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_flbas \- This field indicates the LBA data size & metadata size combination that the namespace has been formatted with
 .SH SYNOPSIS
index 1a3c8f3a9fbf3cc88674193f0cff745ebb005b9a..75adb568387947971ed035679e7d778213870538 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_ns_granularity_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_ns_granularity_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_ns_granularity_desc \- Namespace Granularity Descriptor
 .SH SYNOPSIS
index d4da19d39ea94921b4d613d5c731246c877d9171..4638d0be2bc50780f201fed34cac0e68f4e1f5e3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_ns_granularity_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_ns_granularity_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_ns_granularity_list \- Namespace Granularity List
 .SH SYNOPSIS
index 129614a7e0b51113b41e4fff00f545ce4606bef6..346c6844ca636d8a54eed2d6114d761120330816 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_mc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_mc" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_mc \- This field indicates the capabilities for metadata.
 .SH SYNOPSIS
index b27318ea62311551cc3c52493524808799ec3b92..b0e0765e081dbe982d1c8b2e34636cb81f9d8867 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_nmic" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_nmic" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_nmic \- This field specifies multi-path I/O and namespace sharing capabilities of the namespace.
 .SH SYNOPSIS
index ccdeecd5438f7a6f8601aadcca70f241212cd548..cc8901fdc88a7e40e3d63254affba30292243783 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_ns_rescap" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_ns_rescap" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_ns_rescap \- This field indicates the reservation capabilities of the namespace.
 .SH SYNOPSIS
index 881ee8f78190a78f1c006cb53db5c90b66d5f1f8..747a0bc877e9de4e238c64961dbb3a9cb97c1472 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_nsfeat" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_nsfeat" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_nsfeat \- This field defines features of the namespace.
 .SH SYNOPSIS
index 664645897d75a165ce29552038dd45dbbb9cd8b3..a7247f92d180997e98ad177d141fdb6ffc1762c6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_nvmset_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_nvmset_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_nvmset_list \- NVM set list
 .SH SYNOPSIS
index 3e4864d5784a1f4a1c1d1651d0575d37ab12c277..7ccdee92c5b441a8aa5f920732dab2999c4a5564 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_psd" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_psd" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_psd \- Power Management data structure
 .SH SYNOPSIS
index 41ca728b7df0c8fe454a438a61c2b79bb4a4d9d4..a6f1524df9c2097115a5092b008a01c5c721c1bd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_id_uuid" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_id_uuid" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_id_uuid \- Identifier Association
 .SH SYNOPSIS
index 224327980b8710a9d82ef08499c46b25b05875ab..68106c991ad35d3480ebe176ca05eb1a0ab30178 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_uuid_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_uuid_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_uuid_list \- UUID list
 .SH SYNOPSIS
index c194b785a49874eb161451f542fd3af17c5923db..1525bade44bc141c2a91085688839d2220c4fd47 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_id_uuid_list_entry" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_id_uuid_list_entry" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_id_uuid_list_entry \- UUID List Entry
 .SH SYNOPSIS
index b0cf0672e6d9913495e6cb42148708acdbe87dbe..fa0a0c6a7d88c5195b6eff9402982bcbb9ca3c5d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify" 9 "nvme_identify" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify" 9 "nvme_identify" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify \- Send the NVMe Identify command
 .SH SYNOPSIS
index 8f9b4128a825155ceda247a4af01550997e03914..9f4d11bd4fb1ef8c9ef0f517bdaf0493efc98b4f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_active_ns_list" 9 "nvme_identify_active_ns_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_active_ns_list" 9 "nvme_identify_active_ns_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_active_ns_list \- Retrieves active namespaces id list
 .SH SYNOPSIS
index a87020caa298856658ba4469b5da031b10e8c94d..5bbeda712652ce56844931a38ab87b5ff8c31233 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_active_ns_list_csi" 9 "nvme_identify_active_ns_list_csi" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_active_ns_list_csi" 9 "nvme_identify_active_ns_list_csi" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_active_ns_list_csi \- Active namespace ID list associated with a specified I/O command set
 .SH SYNOPSIS
index b4766ff2a5102dd7723994e863584258d3228c20..89120e5213b659b462e52e3aed2c1db7bbf04005 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_allocated_ns" 9 "nvme_identify_allocated_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_allocated_ns" 9 "nvme_identify_allocated_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_allocated_ns \- Same as nvme_identify_ns, but only for allocated namespaces
 .SH SYNOPSIS
index 15d9129df0cb21a1dc9d249c1256be01de81874b..39b7b520d65943f06b50ac89ee778f03cb9b2582 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_allocated_ns_list" 9 "nvme_identify_allocated_ns_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_allocated_ns_list" 9 "nvme_identify_allocated_ns_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_allocated_ns_list \- Retrieves allocated namespace id list
 .SH SYNOPSIS
index a444b3364d68f420aa71c3290f90ebccad7a2317..b71faa177e6f2ec5f2500c66317b55a82a1ab951 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_allocated_ns_list_csi" 9 "nvme_identify_allocated_ns_list_csi" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_allocated_ns_list_csi" 9 "nvme_identify_allocated_ns_list_csi" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_allocated_ns_list_csi \- Allocated namespace ID list associated with a specified I/O command set
 .SH SYNOPSIS
index 1d11ffbc9e7bb737e7e26f647e62f5b7fc739247..d641e335ff0381f2c580d403a5724b4d1160d273 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_identify_cns" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_identify_cns" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_identify_cns \- Identify - CNS Values
 .SH SYNOPSIS
index 606831b7af8a638eda0f2497d72433c6916b9f69..2f2b48864f8c69ffb1d1833a343fabe368e67dfc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ctrl" 9 "nvme_identify_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ctrl" 9 "nvme_identify_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ctrl \- Retrieves nvme identify controller
 .SH SYNOPSIS
index 9d8bd034ab6b322e3d178f362e7c5e82d293dad9..4a3cff75d7f12bcf84a5b33495f7a1db9221d0b2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ctrl_csi" 9 "nvme_identify_ctrl_csi" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ctrl_csi" 9 "nvme_identify_ctrl_csi" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ctrl_csi \- I/O command set specific Identify Controller data
 .SH SYNOPSIS
index 3019f2070f27b954bbad26e65e1e30081d174127..7a787a90c9ac8c65f290c1607791a9165a623894 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ctrl_list" 9 "nvme_identify_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ctrl_list" 9 "nvme_identify_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ctrl_list \- Retrieves identify controller list
 .SH SYNOPSIS
index 18ec2e999cac83e4d353bc48f033fe5a29fb90da..332198b0cf052cb4fac9ae67c687452d10ebd6c5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_domain_list" 9 "nvme_identify_domain_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_domain_list" 9 "nvme_identify_domain_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_domain_list \- Domain list data
 .SH SYNOPSIS
index 188dde43f355aeac8126de31ad896e33eedab408..4420d85ef7f22c3c2d9a54aa15b192f6fbe68bcc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_endurance_group_list" 9 "nvme_identify_endurance_group_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_endurance_group_list" 9 "nvme_identify_endurance_group_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_endurance_group_list \- Endurance group list data
 .SH SYNOPSIS
index e9d407026a26acd7425f5a95182209b63a52acdd..b609829a6751df06814babcf6a65e61203fd24c1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_independent_identify_ns" 9 "nvme_identify_independent_identify_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_independent_identify_ns" 9 "nvme_identify_independent_identify_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_independent_identify_ns \- I/O command set independent Identify namespace data
 .SH SYNOPSIS
index fdbd644223a81dda4f615113937723d648c1035d..852d7dc25c4bec322ddfcb42112b2e80ed62fda9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_iocs" 9 "nvme_identify_iocs" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_iocs" 9 "nvme_identify_iocs" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_iocs \- I/O command set data structure
 .SH SYNOPSIS
index 6bddd4c936b5b7fb92fb81346f396998a4949d1b..16cc8f2e83726621bdf4dfe700e86d55e2b93a9d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_iocs_ns_csi_user_data_format" 9 "nvme_identify_iocs_ns_csi_user_data_format" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_iocs_ns_csi_user_data_format" 9 "nvme_identify_iocs_ns_csi_user_data_format" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_iocs_ns_csi_user_data_format \- Identify I/O command set namespace data structure
 .SH SYNOPSIS
index fa03c1d2ccab04200d2d1d80cbdac4ebf2b30e9d..e132d82b83641df094ca1cc5cae8095edf1c83d1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ns" 9 "nvme_identify_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ns" 9 "nvme_identify_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ns \- Retrieves nvme identify namespace
 .SH SYNOPSIS
index 0d6437e476e7586ad5f7c4d3b46ced82ca771db6..3b826effec1abd5f0e7ab2347982ffc06d661c56 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ns_csi" 9 "nvme_identify_ns_csi" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ns_csi" 9 "nvme_identify_ns_csi" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ns_csi \- I/O command set specific identify namespace data
 .SH SYNOPSIS
index f34c5f8b9bc4820db8c68bf30d855a76dac3e204..b9513ea89131546d3719d5b2220f9117d82e292d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ns_csi_user_data_format" 9 "nvme_identify_ns_csi_user_data_format" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ns_csi_user_data_format" 9 "nvme_identify_ns_csi_user_data_format" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ns_csi_user_data_format \- Identify namespace user data format
 .SH SYNOPSIS
index 5f00ec1133f75df9171a42a76f89e36dab403324..b7a5f42bb75825212e272fc37cdd995c3b970b0c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ns_descs" 9 "nvme_identify_ns_descs" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ns_descs" 9 "nvme_identify_ns_descs" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ns_descs \- Retrieves namespace descriptor list
 .SH SYNOPSIS
index 536138687e311aff097e3c1b068de889bd754b36..ca60403493b7bf7fa70700bb33b77218cdcaee7a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_ns_granularity" 9 "nvme_identify_ns_granularity" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_ns_granularity" 9 "nvme_identify_ns_granularity" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_ns_granularity \- Retrieves namespace granularity identification
 .SH SYNOPSIS
index 7eb5d078f1901cdca78dc94df813f2d88f40e65c..7caf127ec203ece59fd7a51da909c1284271aeab 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_nsid_ctrl_list" 9 "nvme_identify_nsid_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_nsid_ctrl_list" 9 "nvme_identify_nsid_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_nsid_ctrl_list \- Retrieves controller list attached to an nsid
 .SH SYNOPSIS
index 139a20eb0a71ad04c0592a09e554a9d11b325927..115b898341a75e699b6728f2015590c6d93d042a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_nvmset_list" 9 "nvme_identify_nvmset_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_nvmset_list" 9 "nvme_identify_nvmset_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_nvmset_list \- Retrieves NVM Set List
 .SH SYNOPSIS
index 6b725cbbfb3e90a116e6b20b81c18602211bfa16..4f0f5e4607904c3565613a80f5120662981ac126 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_primary_ctrl" 9 "nvme_identify_primary_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_primary_ctrl" 9 "nvme_identify_primary_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_primary_ctrl \- Retrieve NVMe Primary Controller identification
 .SH SYNOPSIS
index 354f1f03ce6d65c32bf3b4c99cb07b8722749527..1941b66caced69cfad91df43fcc1778a7cd872f9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_secondary_ctrl_list" 9 "nvme_identify_secondary_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_secondary_ctrl_list" 9 "nvme_identify_secondary_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_secondary_ctrl_list \- Retrieves secondary controller list
 .SH SYNOPSIS
index ff81c15b5fbb382a7c62ef2c6b86811cb5b9ecfc..4e131c66dc8a0a95f3f26f613e1bb0753c17e0e2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_identify_uuid" 9 "nvme_identify_uuid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_identify_uuid" 9 "nvme_identify_uuid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_identify_uuid \- Retrieves device's UUIDs
 .SH SYNOPSIS
index 7a3e7867c7dfe41f3bea06acdda82e798a7ab780..1900f200897c3206b0e0474e2931cbcca0e825b4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_init_copy_range" 9 "nvme_init_copy_range" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_init_copy_range" 9 "nvme_init_copy_range" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_init_copy_range \- Constructs a copy range structure
 .SH SYNOPSIS
index 2f2f3adf5fbb54540dc0cd617bfcab7a2929b080..451522b0c629b83169b7fe1e071479b212fd4fe0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_init_copy_range_f1" 9 "nvme_init_copy_range_f1" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_init_copy_range_f1" 9 "nvme_init_copy_range_f1" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_init_copy_range_f1 \- Constructs a copy range f1 structure
 .SH SYNOPSIS
index 941281cc571e0a9f7d1b819f8bb4100ed446880c..1102cb0055c52bfa78d6b52b50b0c3cd044c85bc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_init_ctrl" 9 "nvme_init_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_init_ctrl" 9 "nvme_init_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_init_ctrl \- Initialize nvme_ctrl_t object for an existing controller.
 .SH SYNOPSIS
index 44cf66c89c8476fb786b3ca59c91c6a40c11f995..04b7edf11a4f72ca55c3e32682f620856134ad51 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_init_ctrl_list" 9 "nvme_init_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_init_ctrl_list" 9 "nvme_init_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_init_ctrl_list \- Initialize an nvme_ctrl_list structure from an array.
 .SH SYNOPSIS
index b7d7b69e1ff76e2fcd1dd6bf6e319f229de85bc9..ff738168bcc7dbf90bc6dec26c9e75d0de069bb3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_init_dsm_range" 9 "nvme_init_dsm_range" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_init_dsm_range" 9 "nvme_init_dsm_range" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_init_dsm_range \- Constructs a data set range structure
 .SH SYNOPSIS
index f33d25b3fb7daaf2227e2ab94eac3e7d794bd3cd..644cd8b030b37392688bdba26a52dce5fb705c2d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_init_logging" 9 "nvme_init_logging" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_init_logging" 9 "nvme_init_logging" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_init_logging \- Initialize logging
 .SH SYNOPSIS
index bb357b2899b082b0090b47cdb2c1d54fef750f51..b5be195e261eeede00778a79100acf03200b6d8b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_io" 9 "nvme_io" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_io" 9 "nvme_io" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_io \- Submit an nvme user I/O command
 .SH SYNOPSIS
index 791f45b209a1fa9a2fd4ac13a79c8f786b22575a..d9f543700c4ab922a2e4c273e8525344b0a33e0f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_io_control_flags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_io_control_flags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_io_control_flags \- I/O control flags
 .SH SYNOPSIS
index fdab16c429bb3e6730c1e8c45de400effe721c9c..700a6154b727fdc0810d7a7b9b3a9f3140999150 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_io_dsm_flags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_io_dsm_flags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_io_dsm_flags \- Dataset Management flags
 .SH SYNOPSIS
diff --git a/doc/man/nvme_io_mgmt_recv.2 b/doc/man/nvme_io_mgmt_recv.2
new file mode 100644 (file)
index 0000000..9624abe
--- /dev/null
@@ -0,0 +1,12 @@
+.TH "nvme_io_mgmt_recv" 9 "nvme_io_mgmt_recv" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_io_mgmt_recv \- I/O Management Receive command
+.SH SYNOPSIS
+.B "int" nvme_io_mgmt_recv
+.BI "(struct nvme_io_mgmt_recv_args *args "  ");"
+.SH ARGUMENTS
+.IP "args" 12
+\fIstruct nvme_io_mgmt_recv_args\fP argument structure
+.SH "RETURN"
+The nvme command status if a response was received (see
+\fIenum nvme_status_field\fP) or -1 with errno set otherwise.
diff --git a/doc/man/nvme_io_mgmt_recv_mo.2 b/doc/man/nvme_io_mgmt_recv_mo.2
new file mode 100644 (file)
index 0000000..f9556d6
--- /dev/null
@@ -0,0 +1,12 @@
+.TH "libnvme" 9 "enum nvme_io_mgmt_recv_mo" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_io_mgmt_recv_mo \- I/O Management Receive - Management Operation
+.SH SYNOPSIS
+enum nvme_io_mgmt_recv_mo {
+.br
+.BI "    NVME_IO_MGMT_RECV_RUH_STATUS"
+
+};
+.SH Constants
+.IP "NVME_IO_MGMT_RECV_RUH_STATUS" 12
+Reclaim Unit Handle Status
diff --git a/doc/man/nvme_io_mgmt_send.2 b/doc/man/nvme_io_mgmt_send.2
new file mode 100644 (file)
index 0000000..9b41e2c
--- /dev/null
@@ -0,0 +1,12 @@
+.TH "nvme_io_mgmt_send" 9 "nvme_io_mgmt_send" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_io_mgmt_send \- I/O Management Send command
+.SH SYNOPSIS
+.B "int" nvme_io_mgmt_send
+.BI "(struct nvme_io_mgmt_send_args *args "  ");"
+.SH ARGUMENTS
+.IP "args" 12
+\fIstruct nvme_io_mgmt_send_args\fP argument structure
+.SH "RETURN"
+The nvme command status if a response was received (see
+\fIenum nvme_status_field\fP) or -1 with errno set otherwise.
diff --git a/doc/man/nvme_io_mgmt_send_mo.2 b/doc/man/nvme_io_mgmt_send_mo.2
new file mode 100644 (file)
index 0000000..a2ae1ac
--- /dev/null
@@ -0,0 +1,12 @@
+.TH "libnvme" 9 "enum nvme_io_mgmt_send_mo" "January 2023" "API Manual" LINUX
+.SH NAME
+enum nvme_io_mgmt_send_mo \- I/O Management Send - Management Operation
+.SH SYNOPSIS
+enum nvme_io_mgmt_send_mo {
+.br
+.BI "    NVME_IO_MGMT_SEND_RUH_UPDATE"
+
+};
+.SH Constants
+.IP "NVME_IO_MGMT_SEND_RUH_UPDATE" 12
+Reclaim Unit Handle Update
index 492161f785141b26a4639fa5552c17da254cc43f..54212802c7313264242ed17258020f7ea4f3fc1e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_io_opcode" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_io_opcode" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_io_opcode \- Opcodes for I/O Commands
 .SH SYNOPSIS
@@ -48,6 +48,10 @@ enum nvme_io_opcode {
 , 
 .br
 .br
+.BI "    nvme_cmd_io_mgmt_recv"
+, 
+.br
+.br
 .BI "    nvme_cmd_resv_release"
 , 
 .br
@@ -56,6 +60,10 @@ enum nvme_io_opcode {
 , 
 .br
 .br
+.BI "    nvme_cmd_io_mgmt_send"
+, 
+.br
+.br
 .BI "    nvme_zns_cmd_mgmt_send"
 , 
 .br
@@ -90,10 +98,14 @@ Reservation Register
 Reservation Report
 .IP "nvme_cmd_resv_acquire" 12
 Reservation Acquire
+.IP "nvme_cmd_io_mgmt_recv" 12
+I/O Management Receive
 .IP "nvme_cmd_resv_release" 12
 Reservation Release
 .IP "nvme_cmd_copy" 12
 Copy
+.IP "nvme_cmd_io_mgmt_send" 12
+I/O Management Send
 .IP "nvme_zns_cmd_mgmt_send" 12
 Zone Management Send
 .IP "nvme_zns_cmd_mgmt_recv" 12
index ffb19fcb7b68b1ea7c369e93e59cd4518da021cd..2180ab30bcc49abfebfaaec214161c7f9e1a1685 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_io_passthru" 9 "nvme_io_passthru" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_io_passthru" 9 "nvme_io_passthru" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_io_passthru \- Submit an nvme io passthrough command
 .SH SYNOPSIS
index 30e0378584f4d6ec428ee88ba8a751734cf4491f..aff02e37dd205fce425fc2f81db105f752007b2a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_io_passthru64" 9 "nvme_io_passthru64" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_io_passthru64" 9 "nvme_io_passthru64" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_io_passthru64 \- Submit an nvme io passthrough command
 .SH SYNOPSIS
index e23f562898ec0e3e5781444505ee0dcedf015582..39701b18485514041ca323a0f76913144d6948a8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_is_64bit_reg" 9 "nvme_is_64bit_reg" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_is_64bit_reg" 9 "nvme_is_64bit_reg" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_is_64bit_reg \- Checks if offset of the controller register is a know 64bit value.
 .SH SYNOPSIS
index 6d935be08cd30b575b71128bab993da082b74372..034191bc6d23acb2a79b9b0b366fef3a391fe33f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lba_range_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lba_range_type" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lba_range_type \- LBA Range Type
 .SH SYNOPSIS
index f6bf43e6a0afcdd5302891821adddbdc8d504f2f..574075612247fe8aa3e04138acf1b33f5de887b3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lba_range_type_entry" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lba_range_type_entry" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lba_range_type_entry \- LBA Range Type - Data Structure Entry
 .SH SYNOPSIS
index d6e02ed36f1255765e10c4884c5fc5dc02f94e47..b1e87d34f2763f72c096f2debd9ca7b7f055531a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lba_rd" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lba_rd" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lba_rd \- LBA Range Descriptor
 .SH SYNOPSIS
index 629460be92768f56db0ebfb56fbf46072b5ac3c8..ba502c6f666877d1f345284fc8f79e9d73853fe3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lba_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lba_status" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lba_status \- LBA Status Descriptor List
 .SH SYNOPSIS
index 1f4217585b2ba53065eaff358fa53105c52be402..064bf4c6a867427ff0ebf511457110898a8a70b5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_lba_status_atype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_lba_status_atype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_lba_status_atype \- Potentially Unrecoverable LBAs
 .SH SYNOPSIS
index 73aab2efc428dc79d6e742e9c9a1c24e18c18461..a7f1cecc1e453212471c9c02a8830e65db3f43fc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lba_status_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lba_status_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lba_status_desc \- LBA Status Descriptor Entry
 .SH SYNOPSIS
index c2d1e5d7fb7ed3c09706104e443a6fae10171d68..eb61fdf7096772776aed1794380e7dd9ef3539a8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lba_status_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lba_status_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lba_status_log \- LBA Status Information Log
 .SH SYNOPSIS
index cf946ab1cf61d6d3c95c3302b1e2f26458265859..9e4a98b1584a723fbc5d96548de0180e3ee87206 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lbaf" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lbaf" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lbaf \- LBA Format Data Structure
 .SH SYNOPSIS
index 3d13eeab67d24485093cc4458dcee9c00ae6d8fa..5c66eac46ddd6f6ae978c291ed3c6a9bb1cd1451 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_lbaf_rp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_lbaf_rp" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_lbaf_rp \- This field indicates the relative performance of the LBA format indicated relative to other LBA formats supported by the controller.
 .SH SYNOPSIS
index 32a6296fa2e5686880ddac08f7709c8f5a6b5026..55b6aa961ad4e3316bf12bbde6613423eb89ff8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_lbart" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_lbart" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_lbart \- LBA Range Type - Data Structure Entry
 .SH SYNOPSIS
index dc8043ea347b983c146d5401b011b60f71e2d101..6b4a3bc573ab9aa57a4116a10392074ea93680fa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_lbas_ns_element" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_lbas_ns_element" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_lbas_ns_element \- LBA Status Log Namespace Element
 .SH SYNOPSIS
index 775bd6b73845393c809aabf85409a4d3a8171edc..4b331ea20f020271c8b418f6361f71ec547ab799 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_lockdown" 9 "nvme_lockdown" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_lockdown" 9 "nvme_lockdown" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_lockdown \- Issue lockdown command
 .SH SYNOPSIS
index 3e1df4a15f9c21725821330c79f2a8485a670261..a67274fb47d7c1350104cc303d024168b6113d36 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_log_ana_lsp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_log_ana_lsp" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_log_ana_lsp \- Asymmetric Namespace Access - Return Groups Only
 .SH SYNOPSIS
index 0d400ea58840ab693928e9d5cbbf490a3b934bf3..c9942b73e139ba52e109a9539eeb554aab7a373c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_lookup_ctrl" 9 "nvme_lookup_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_lookup_ctrl" 9 "nvme_lookup_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_lookup_ctrl \- Lookup nvme_ctrl_t object
 .SH SYNOPSIS
index 47b6239e5e536f4ca6bba94dda7b8370319526d2..74f9abef001ccc5192875bfdb96c75f63b5232fb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_lookup_host" 9 "nvme_lookup_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_lookup_host" 9 "nvme_lookup_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_lookup_host \- Lookup nvme_host_t object
 .SH SYNOPSIS
index 4adc5cb17842b4fa402535bef031752e28dc01b6..0e780eb6f765aeb7a12faa8e10cdbf2f557a6802 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_lookup_subsystem" 9 "nvme_lookup_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_lookup_subsystem" 9 "nvme_lookup_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_lookup_subsystem \- Lookup nvme_subsystem_t object
 .SH SYNOPSIS
index e39bb39ba7cecca173bb92a3e1987c03f90a177d..02c77256d65b5d1ad72c0de18fb2102481c0dcc5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_media_unit_config_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_media_unit_config_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_media_unit_config_desc \- Media Unit Configuration Descriptor
 .SH SYNOPSIS
index 9f381b861a0bdd5bf22319265aed6488592fe2c3..079dba6ab6b01350441bb5ebb0337a4fba4cb4fd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_media_unit_stat_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_media_unit_stat_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_media_unit_stat_desc \- Media Unit Status Descriptor
 .SH SYNOPSIS
index f23ea35758df98d2fd8b8c2bf7f36c5ad6cd3053..4b0318ea8a33e22f11d0bff19505197fdc263022 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_media_unit_stat_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_media_unit_stat_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_media_unit_stat_log \- Media Unit Status
 .SH SYNOPSIS
index 62356e499a5d98ce29deaec9c250cbe9e8ba9ac7..56e552f793726b1826f639c92ce576d836956590 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_metadata_element_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_metadata_element_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_metadata_element_desc \- Metadata Element Descriptor
 .SH SYNOPSIS
diff --git a/doc/man/nvme_mi_admin_admin_passthru.2 b/doc/man/nvme_mi_admin_admin_passthru.2
new file mode 100644 (file)
index 0000000..9ba91d8
--- /dev/null
@@ -0,0 +1,74 @@
+.TH "nvme_mi_admin_admin_passthru" 9 "nvme_mi_admin_admin_passthru" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_mi_admin_admin_passthru \- Submit an nvme admin passthrough command
+.SH SYNOPSIS
+.B "int" nvme_mi_admin_admin_passthru
+.BI "(nvme_mi_ctrl_t ctrl "  ","
+.BI "__u8 opcode "  ","
+.BI "__u8 flags "  ","
+.BI "__u16 rsvd "  ","
+.BI "__u32 nsid "  ","
+.BI "__u32 cdw2 "  ","
+.BI "__u32 cdw3 "  ","
+.BI "__u32 cdw10 "  ","
+.BI "__u32 cdw11 "  ","
+.BI "__u32 cdw12 "  ","
+.BI "__u32 cdw13 "  ","
+.BI "__u32 cdw14 "  ","
+.BI "__u32 cdw15 "  ","
+.BI "__u32 data_len "  ","
+.BI "void *data "  ","
+.BI "__u32 metadata_len "  ","
+.BI "void *metadata "  ","
+.BI "__u32 timeout_ms "  ","
+.BI "__u32 *result "  ");"
+.SH ARGUMENTS
+.IP "ctrl" 12
+Controller to send command to
+.IP "opcode" 12
+The nvme admin command to send
+.IP "flags" 12
+NVMe command flags (not used)
+.IP "rsvd" 12
+Reserved for future use
+.IP "nsid" 12
+Namespace identifier
+.IP "cdw2" 12
+Command dword 2
+.IP "cdw3" 12
+Command dword 3
+.IP "cdw10" 12
+Command dword 10
+.IP "cdw11" 12
+Command dword 11
+.IP "cdw12" 12
+Command dword 12
+.IP "cdw13" 12
+Command dword 13
+.IP "cdw14" 12
+Command dword 14
+.IP "cdw15" 12
+Command dword 15
+.IP "data_len" 12
+Length of the data transferred in this command in bytes
+.IP "data" 12
+Pointer to user address of the data buffer
+.IP "metadata_len" 12
+Length of metadata transferred in this command(not used)
+.IP "metadata" 12
+Pointer to user address of the metadata buffer(not used)
+.IP "timeout_ms" 12
+How long to wait for the command to complete
+.IP "result" 12
+Optional field to return the result from the CQE dword 0
+.SH "DESCRIPTION"
+Send a customized NVMe Admin command request message and get the corresponding
+response message.
+
+This interface supports no data, host to controller and controller to
+host but it doesn't support bidirectional data transfer.
+Also this interface only supports data transfer size range [0, 4096] (bytes)
+so the & data_len parameter must be less than 4097.
+.SH "RETURN"
+The nvme command status if a response was received (see
+\fIenum nvme_status_field\fP) or -1 with errno set otherwise.
index 95550ee7b9e2500edf8c88850881e4793800f32b..6340aeccdf70e6d5fb6c95d064830fdd665cf164 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_format_nvm" 9 "nvme_mi_admin_format_nvm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_format_nvm" 9 "nvme_mi_admin_format_nvm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_format_nvm \- Format NVMe namespace
 .SH SYNOPSIS
index d7ac6acd24bca80d9c15c16d9ab3d880f1e98a1c..a8c69bd5e09e0585788291f6d2ffe1061e928dae 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_fw_commit" 9 "nvme_mi_admin_fw_commit" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_fw_commit" 9 "nvme_mi_admin_fw_commit" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_fw_commit \- Commit firmware using the specified action
 .SH SYNOPSIS
index 9faf329a94e7c8b24e94b28a0239cc18c1d9d667..c3fab1d909f115ea8d5151bafd6038d59781a895 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_fw_download" 9 "nvme_mi_admin_fw_download" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_fw_download" 9 "nvme_mi_admin_fw_download" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_fw_download \- Download part or all of a firmware image to the controller
 .SH SYNOPSIS
index 4b57744a937fc0f7befaaa5b17e2e0eeed38f0fa..07ecbf4e3f4ab2d0ed71743d66732c56e390ba6d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_features_data" 9 "nvme_mi_admin_get_features_data" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_features_data" 9 "nvme_mi_admin_get_features_data" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_features_data \- Helper function for &nvme_mi_admin_get_features()
 .SH SYNOPSIS
index f52c6689c6b0708bce5d1c2cb403f3112627b043..3d63864732749f2165f2397b85dcbb552cd65f25 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log" 9 "nvme_mi_admin_get_log" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log" 9 "nvme_mi_admin_get_log" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log \- Retrieve log page data from controller
 .SH SYNOPSIS
index b5bd5129b5b945cb372786363e3bf0cacba743d1..e0e1eec249d0f9430b07919b923865feea46a87a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_ana" 9 "nvme_mi_admin_get_log_ana" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_ana" 9 "nvme_mi_admin_get_log_ana" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_ana \- Retrieve Asymmetric Namespace Access log page
 .SH SYNOPSIS
index 2aae5b224635ab9d6421c8b8c553243f36cc9760..b9cf9bad0350e5e81041fc7dbb165278641c70a5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_ana_groups" 9 "nvme_mi_admin_get_log_ana_groups" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_ana_groups" 9 "nvme_mi_admin_get_log_ana_groups" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_ana_groups \- Retrieve Asymmetric Namespace Access groups only log page
 .SH SYNOPSIS
index 8c4238ff165fd8ecffbadef93d8ac2050f075a35..adf9d7af289c815db72d4b1481172b75c976c573 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_boot_partition" 9 "nvme_mi_admin_get_log_boot_partition" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_boot_partition" 9 "nvme_mi_admin_get_log_boot_partition" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_boot_partition \- Retrieve Boot Partition
 .SH SYNOPSIS
index a95b090854c6a795d57ecbb27a88ab63fd37196b..22f83016c631764bffe293512147630200ffcd67 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_changed_ns_list" 9 "nvme_mi_admin_get_log_changed_ns_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_changed_ns_list" 9 "nvme_mi_admin_get_log_changed_ns_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_changed_ns_list \- Retrieve namespace changed list
 .SH SYNOPSIS
index 1aa24f6302860d95df2519b647aa4c416f0ff676..cb30a55d2b495d65ccff6a07d38d383417711b68 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_cmd_effects" 9 "nvme_mi_admin_get_log_cmd_effects" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_cmd_effects" 9 "nvme_mi_admin_get_log_cmd_effects" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_cmd_effects \- Retrieve nvme command effects log
 .SH SYNOPSIS
index 47cfcccaa45c6c27c43deac9ce88946f2012b83d..cdf6cb6fa777eac7a629562757973b03a6df3ad8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_create_telemetry_host" 9 "nvme_mi_admin_get_log_create_telemetry_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_create_telemetry_host" 9 "nvme_mi_admin_get_log_create_telemetry_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_create_telemetry_host \- Create host telemetry log
 .SH SYNOPSIS
index d05eb67ca2a4cf671f69db53d6c7de136e73237c..76606fa5ad5417d4087072418b262f67e75f690a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_device_self_test" 9 "nvme_mi_admin_get_log_device_self_test" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_device_self_test" 9 "nvme_mi_admin_get_log_device_self_test" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_device_self_test \- Retrieve the device self test log
 .SH SYNOPSIS
index 056bb2bafe70a81e4d602ddd4b3bfb869cb54718..c65ed47e22d6ea30bfd2a6d1413332a33ddefa19 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_discovery" 9 "nvme_mi_admin_get_log_discovery" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_discovery" 9 "nvme_mi_admin_get_log_discovery" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_discovery \- Retrieve Discovery log page
 .SH SYNOPSIS
index 4b3fe59070561067be62751fd81ab8ddd86e81c3..55917acd1d404ccecdd714c1f7231ea1f8cbeaf8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_endurance_group" 9 "nvme_mi_admin_get_log_endurance_group" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_endurance_group" 9 "nvme_mi_admin_get_log_endurance_group" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_endurance_group \- Get Endurance Group log
 .SH SYNOPSIS
index c0556a10797c695dd562167730d9d73a41919943..14aa0073ead55bcc2f97657b7a8281f559fbede4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_endurance_grp_evt" 9 "nvme_mi_admin_get_log_endurance_grp_evt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_endurance_grp_evt" 9 "nvme_mi_admin_get_log_endurance_grp_evt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_endurance_grp_evt \- Retrieve Rotational Media Information
 .SH SYNOPSIS
index eac5d661494c3673cf841404fd891adc0559e784..5bb29831e64ce2929a11b692eb155fdc92fee6c2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_error" 9 "nvme_mi_admin_get_log_error" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_error" 9 "nvme_mi_admin_get_log_error" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_error \- Retrieve nvme error log
 .SH SYNOPSIS
index 999c1eb0c96f8354f9f42555eb162a985bf41d63..d090aed2a4a933cf593407fd05d4e90edd741269 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_fid_supported_effects" 9 "nvme_mi_admin_get_log_fid_supported_effects" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_fid_supported_effects" 9 "nvme_mi_admin_get_log_fid_supported_effects" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_fid_supported_effects \- Retrieve Feature Identifiers Supported and Effects
 .SH SYNOPSIS
index d4e3952de93507452d5bf4d3808149a7ece9a71b..098d7dcca21da0636fef7a64149cf6f3e89c6826 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_fw_slot" 9 "nvme_mi_admin_get_log_fw_slot" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_fw_slot" 9 "nvme_mi_admin_get_log_fw_slot" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_fw_slot \- Retrieves the controller firmware log
 .SH SYNOPSIS
index d2bd99ed9768077753ed32719558b0b9b57ee30b..a140e276b27f3f188566e0306fe830dd29705ddd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_lba_status" 9 "nvme_mi_admin_get_log_lba_status" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_lba_status" 9 "nvme_mi_admin_get_log_lba_status" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_lba_status \- Retrieve LBA Status
 .SH SYNOPSIS
index 05706f74c733e2fe8f5dd913e48e9e60a8f5431e..a2516b8723ec7e2fa281f43c33c11b2ed4fcfdd5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_media_unit_stat" 9 "nvme_mi_admin_get_log_media_unit_stat" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_media_unit_stat" 9 "nvme_mi_admin_get_log_media_unit_stat" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_media_unit_stat \- Retrieve Media Unit Status
 .SH SYNOPSIS
index 11df3785c8bc636511356c2276af860263aed29e..0412b25d0f6d522a9abfd0902dc9a0840d215ea5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_mi_cmd_supported_effects" 9 "nvme_mi_admin_get_log_mi_cmd_supported_effects" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_mi_cmd_supported_effects" 9 "nvme_mi_admin_get_log_mi_cmd_supported_effects" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_mi_cmd_supported_effects \- displays the MI Commands Supported by the controller
 .SH SYNOPSIS
index aa53c90dc6173dbe6d0bf34b9c0125b61a0704a2..39a43a32df63ca56a3a66ce94ee51a3c35a00f8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_persistent_event" 9 "nvme_mi_admin_get_log_persistent_event" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_persistent_event" 9 "nvme_mi_admin_get_log_persistent_event" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_persistent_event \- Retrieve Persistent Event Log
 .SH SYNOPSIS
index c2e9f561c214485952904704e0ac8f67b35bb304..e4272b19199fc6c38d301ba044942e5d855b7a98 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_predictable_lat_event" 9 "nvme_mi_admin_get_log_predictable_lat_event" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_predictable_lat_event" 9 "nvme_mi_admin_get_log_predictable_lat_event" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_predictable_lat_event \- Retrieve Predictable Latency Event Aggregate Log Page
 .SH SYNOPSIS
index 5315b41615746825e922d8ef59bbffe87de4e667..b82780588a31d5f41a5b3d8e92b5224065d79e5c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_predictable_lat_nvmset" 9 "nvme_mi_admin_get_log_predictable_lat_nvmset" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_predictable_lat_nvmset" 9 "nvme_mi_admin_get_log_predictable_lat_nvmset" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_predictable_lat_nvmset \- Predictable Latency Per NVM Set
 .SH SYNOPSIS
index 44c4ef260a6230f12c2595f84e90bb14a6003dfa..7f27ac4672f73860150d52bb898379d7c8003541 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_reservation" 9 "nvme_mi_admin_get_log_reservation" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_reservation" 9 "nvme_mi_admin_get_log_reservation" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_reservation \- Retrieve Reservation Notification
 .SH SYNOPSIS
index b457c53280fed303d374afbf3642b0f309431f63..2eb8ca1034e30c1e28b3c51001335bf5aa92848b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_sanitize" 9 "nvme_mi_admin_get_log_sanitize" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_sanitize" 9 "nvme_mi_admin_get_log_sanitize" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_sanitize \- Retrieve Sanitize Status
 .SH SYNOPSIS
index 1db47a650272514c47f94771bc765c21bbdfd9d8..12770954a5efe574c885ef496f52918d238276c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_simple" 9 "nvme_mi_admin_get_log_simple" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_simple" 9 "nvme_mi_admin_get_log_simple" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_simple \- Helper for Get Log Page functions with no NSID or RAE requirements
 .SH SYNOPSIS
index 41103131c448704409b2f3ceeaa1bc657f93dffd..742bf24b8a5d4a0fb101cefc77e4908970e059dd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_smart" 9 "nvme_mi_admin_get_log_smart" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_smart" 9 "nvme_mi_admin_get_log_smart" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_smart \- Retrieve nvme smart log
 .SH SYNOPSIS
index 9effb5e7f0a5e8ef87d64374a1490dff24cd9a6f..b4d1df5d25619bacc722e04c022ad188d934b1d9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_support_cap_config_list" 9 "nvme_mi_admin_get_log_support_cap_config_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_support_cap_config_list" 9 "nvme_mi_admin_get_log_support_cap_config_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_support_cap_config_list \- Retrieve Supported Capacity Configuration List
 .SH SYNOPSIS
index 091273641bd477460094939ca8b553ff1b8b1afd..7958459c6b0623ea8bdad692996a478516183192 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_supported_log_pages" 9 "nvme_mi_admin_get_log_supported_log_pages" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_supported_log_pages" 9 "nvme_mi_admin_get_log_supported_log_pages" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_supported_log_pages \- Retrieve nmve supported log pages
 .SH SYNOPSIS
index 7478fd34ee3adc2117623941d3b1a8da8647a6c8..623c5fbc13b494e8e5c3affebb67e82a98015c6c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_telemetry_ctrl" 9 "nvme_mi_admin_get_log_telemetry_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_telemetry_ctrl" 9 "nvme_mi_admin_get_log_telemetry_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_telemetry_ctrl \- Get Telemetry Controller-Initiated log page
 .SH SYNOPSIS
index eb64be4f7b8ce783560fd6550eb07ac215e4b072..9a96a4b3b2e8362d847faa7e69dc07e56a0aff30 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_telemetry_host" 9 "nvme_mi_admin_get_log_telemetry_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_telemetry_host" 9 "nvme_mi_admin_get_log_telemetry_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_telemetry_host \- Get Telemetry Host-Initiated log page
 .SH SYNOPSIS
index 9b2b78a6b1593ca960b7e5134e1618da84eca35f..b2e36148db4fb6e18de6e355f8c96e1da8f1ad9b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_log_zns_changed_zones" 9 "nvme_mi_admin_get_log_zns_changed_zones" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_log_zns_changed_zones" 9 "nvme_mi_admin_get_log_zns_changed_zones" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_log_zns_changed_zones \- Retrieve list of zones that have changed
 .SH SYNOPSIS
index 6976fe4461c57ffcb8803d455f3b17568e3e103a..8126e5f7d582ddfc9bc2e3f3b30ad131ded17719 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_get_nsid_log" 9 "nvme_mi_admin_get_nsid_log" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_get_nsid_log" 9 "nvme_mi_admin_get_nsid_log" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_get_nsid_log \- Helper for Get Log Page functions
 .SH SYNOPSIS
index 2080bd7720801c15d738ae61da334b94e41a51e4..c741daa8e5953a5c354f420977e578db5c5c1656 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify" 9 "nvme_mi_admin_identify" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify" 9 "nvme_mi_admin_identify" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify \- Perform an Admin identify command.
 .SH SYNOPSIS
index bfd7a90d7de2e520bbfb28cec6daca9df386a5c6..4a374acff902d3eb6b3d8963e98596a0cb122c44 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_active_ns_list" 9 "nvme_mi_admin_identify_active_ns_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_active_ns_list" 9 "nvme_mi_admin_identify_active_ns_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_active_ns_list \- Perform an Admin identify for an active namespace list
 .SH SYNOPSIS
index b588c34c1855c823564d20f8a4adadadab9b7eb8..4fd902369effaacc7010c764c146e59bdb976c38 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_allocated_ns" 9 "nvme_mi_admin_identify_allocated_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_allocated_ns" 9 "nvme_mi_admin_identify_allocated_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_allocated_ns \- Perform an Admin identify command for an allocated namespace
 .SH SYNOPSIS
index d29553a7d9d83dda63a78289b4ee9b2f5207e9e5..fd42cb2186ef4155a8f6bd17d26040fce0ff3916 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_allocated_ns_list" 9 "nvme_mi_admin_identify_allocated_ns_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_allocated_ns_list" 9 "nvme_mi_admin_identify_allocated_ns_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_allocated_ns_list \- Perform an Admin identify for an allocated namespace list
 .SH SYNOPSIS
index 314c0471febe46216b87de68537c46f586695ca8..49c9c2b53d64225130cbe951c5d64f6d5e02f4fd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_cns_nsid" 9 "nvme_mi_admin_identify_cns_nsid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_cns_nsid" 9 "nvme_mi_admin_identify_cns_nsid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_cns_nsid \- Perform an Admin identify command using specific CNS/NSID parameters.
 .SH SYNOPSIS
index f3ed4113af5a5901e2a7d2db4447120f116068b1..a268d0bc9b19650cf048d2b992d7b3463703a6b3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_ctrl" 9 "nvme_mi_admin_identify_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_ctrl" 9 "nvme_mi_admin_identify_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_ctrl \- Perform an Admin identify for a controller
 .SH SYNOPSIS
index d223cb0f86bcece28777784dbf387d64c46e8416..c407f3bc15e9e84ff2e9e64b740f34e63ca6ebbc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_ctrl_list" 9 "nvme_mi_admin_identify_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_ctrl_list" 9 "nvme_mi_admin_identify_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_ctrl_list \- Perform an Admin identify for a controller list.
 .SH SYNOPSIS
index 233be5b8f1809fea0260092c009db49b03e06e85..5333f89356caecb17604148c2eb686f9c2bad1e7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_ns" 9 "nvme_mi_admin_identify_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_ns" 9 "nvme_mi_admin_identify_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_ns \- Perform an Admin identify command for a namespace
 .SH SYNOPSIS
index b937a84e2b1ef6f4a6c9ebc2fcefb5493f20ab8a..919f0087828ccd3a1b03551a6348624bef097670 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_ns_descs" 9 "nvme_mi_admin_identify_ns_descs" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_ns_descs" 9 "nvme_mi_admin_identify_ns_descs" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_ns_descs \- Perform an Admin identify Namespace Identification Descriptor list command for a namespace
 .SH SYNOPSIS
index 7077442fb6040c33e9d4b77168bb9e0a22c6974e..981f7a61ae040c6f4655b376f4672f8138172e49 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_nsid_ctrl_list" 9 "nvme_mi_admin_identify_nsid_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_nsid_ctrl_list" 9 "nvme_mi_admin_identify_nsid_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_nsid_ctrl_list \- Perform an Admin identify for a controller list with specific namespace ID
 .SH SYNOPSIS
index c2d64aeb6cf5bbd4c7807440d464ae5f0663b06c..027c4f69dfd61c4c1137f88613521219232f7fb4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_partial" 9 "nvme_mi_admin_identify_partial" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_partial" 9 "nvme_mi_admin_identify_partial" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_partial \- Perform an Admin identify command, and retrieve partial response data.
 .SH SYNOPSIS
index 4c89791a33f5ac946daf7c2aace2e198a666c364..13eec74abb33b95e57835bb5e5ecf87726317aad 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_primary_ctrl" 9 "nvme_mi_admin_identify_primary_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_primary_ctrl" 9 "nvme_mi_admin_identify_primary_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_primary_ctrl \- Perform an Admin identify for primary controller capabilities data structure.
 .SH SYNOPSIS
index 9773676b582ffb8245a552f17f39fc75c2727204..2339d4dadbce663679ff5f7f9d5c3b22194fc75f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_identify_secondary_ctrl_list" 9 "nvme_mi_admin_identify_secondary_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_identify_secondary_ctrl_list" 9 "nvme_mi_admin_identify_secondary_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_identify_secondary_ctrl_list \- Perform an Admin identify for a secondary controller list.
 .SH SYNOPSIS
index 19fe15ac81e0ea820819a6324b3df0887b718d9d..94d7c8e70130762f4501707225c7f63d7dc03d56 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_ns_attach" 9 "nvme_mi_admin_ns_attach" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_ns_attach" 9 "nvme_mi_admin_ns_attach" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_ns_attach \- Attach or detach namespace to controller(s)
 .SH SYNOPSIS
index 96cd6916d0825d77b80ac1f9b96658784bbaf50f..ebb64a67c844d7c3d754acc3273ccb5cd80fd0c1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_ns_attach_ctrls" 9 "nvme_mi_admin_ns_attach_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_ns_attach_ctrls" 9 "nvme_mi_admin_ns_attach_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_ns_attach_ctrls \- Attach namespace to controllers
 .SH SYNOPSIS
index a413f9b28b86de11fa38d87d508573cbb32a43b9..799c39add8072072dcf8c2e1bf80c9ec5ca5c55e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_ns_detach_ctrls" 9 "nvme_mi_admin_ns_detach_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_ns_detach_ctrls" 9 "nvme_mi_admin_ns_detach_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_ns_detach_ctrls \- Detach namespace from controllers
 .SH SYNOPSIS
index 97d792725e72b74f04dad6c03be7171ee199df9d..33b22de9666595569acf1c7142d165a5fc052279 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_admin_req_hdr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_admin_req_hdr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_admin_req_hdr \- Admin command request header.
 .SH SYNOPSIS
index fb26a9000bad8442a4d08e618ae61241037ae3e7..1818c6040e4c96586b6dfe02551d77c13003c4d3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_admin_resp_hdr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_admin_resp_hdr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_admin_resp_hdr \- Admin command response header.
 .SH SYNOPSIS
index 3f2ea2c7e0201bb1a6637b6a109714d388de8e82..c27abd2679c866b2474a572b98e47d92136eeca4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_sanitize_nvm" 9 "nvme_mi_admin_sanitize_nvm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_sanitize_nvm" 9 "nvme_mi_admin_sanitize_nvm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_sanitize_nvm \- Start a subsystem Sanitize operation
 .SH SYNOPSIS
index ec3abcdb03392084873d80f2203f8ac808c0dea9..b101ab07c74e455a6d6c922ae452d9cf91509b5e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_security_recv" 9 "nvme_mi_admin_security_recv" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_security_recv" 9 "nvme_mi_admin_security_recv" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_security_recv \- Perform a Security Receive command on a controller.
 .SH SYNOPSIS
index 7aad612c8906e0df2c50ee2e0ddf235db666e4ff..12c34b39d19e4ab5ab6fd46120e487ef5c223cca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_security_send" 9 "nvme_mi_admin_security_send" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_security_send" 9 "nvme_mi_admin_security_send" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_security_send \- Perform a Security Send command on a controller.
 .SH SYNOPSIS
index 9cccd8bbc172505ee50e148181d72056beb8f965..9685540ddd471cbe96f445c478a544016f34cc71 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_admin_xfer" 9 "nvme_mi_admin_xfer" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_admin_xfer" 9 "nvme_mi_admin_xfer" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_admin_xfer \- Raw admin transfer interface.
 .SH SYNOPSIS
index d51b676d811edf845347f3d8975061bdef5cd742..9f1d05c34d6cba687244453b78778baa096105d9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_ccs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_ccs" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_ccs \- Get State Control Primitive Success Response Fields - Control Primitive Specific Response
 .SH SYNOPSIS
index 99b372d65afb8c5ee1b9580bb78f57001e524616..20fc0326cb2597638540ded09b127ba9c621faaa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_close" 9 "nvme_mi_close" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_close" 9 "nvme_mi_close" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_close \- Close an endpoint connection and release resources, including controller objects.
 .SH SYNOPSIS
index 0da3444f26ec4791fc2f98c67bd697febbde00fd..44234443b8287fe5514df6bbf8b6329bc7eeeeb5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_close_ctrl" 9 "nvme_mi_close_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_close_ctrl" 9 "nvme_mi_close_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_close_ctrl \- free a controller
 .SH SYNOPSIS
index 1c92f22e935780d180adb7da16a1180e2160c2bf..aa5671307791c14d03cb750f6acd41c0b50bb789 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_cmd_supported_effects" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_cmd_supported_effects" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_cmd_supported_effects \- MI Command Supported and Effects Data Structure
 .SH SYNOPSIS
index 2c31034a3d5efb920ea67e44bbe5645ce272b259..802a223eaa88742ea6cd55dd3213a71838e4074a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_cmd_supported_effects_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_cmd_supported_effects_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_cmd_supported_effects_log \- NVMe-MI Commands Supported and Effects Log
 .SH SYNOPSIS
index e1f962396857873af2a3c7a1c52c81fecce6cede..b479b9fa3605a1088a92e2ebaa01e7576362710f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_config_id" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_config_id" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_config_id \- NVMe-MI Configuration identifier.
 .SH SYNOPSIS
index f32d02aefd3b67e415de8a555c1664ce5ba30285..e377a8fb69c828263ac32743fd0ec1405745fde8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_config_smbus_freq" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_config_smbus_freq" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_config_smbus_freq \- SMBus/I2C frequency values
 .SH SYNOPSIS
index 36af0a8f17e722689b3129499edac37b16dab86a..19de5020dbd0063c5f3dfc8f9c8d1fa92b357eca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_create_root" 9 "nvme_mi_create_root" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_create_root" 9 "nvme_mi_create_root" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_create_root \- Create top-level MI (root) handle.
 .SH SYNOPSIS
index e60ee88f690a5d83625ddfe9aec2caedcec03867..29307d8a74de7db473d3510e309b63236d087c85 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_csts" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_csts" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_csts \- Controller Health Data Structure (CHDS) - Controller Status (CSTS)
 .SH SYNOPSIS
index 3618dee07da6c9451ddcfb1906c9e746b9be01bf..263dac2582726747d63b1e80d61c97d18c20fd84 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_ctrl_health_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_ctrl_health_status" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_ctrl_health_status \- Controller Health Data Structure (CHDS)
 .SH SYNOPSIS
index cfc6e6f46d9a0bdc907f37491cf3f7c08fd654e1..db713cf3b75ab9ee8ac4bdf9304744c295c47a7d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_cwarn" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_cwarn" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_cwarn \- Controller Health Data Structure (CHDS) - Critical Warning (CWARN)
 .SH SYNOPSIS
index 72433cda5cf1c2d99d246daac32ef78efa42b6c3..55018c04b57b71886f20fad8039c831b3c443521 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_dtyp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_dtyp" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_dtyp \- Data Structure Type field.
 .SH SYNOPSIS
index 9b63108ef5a23106dae81feb5e07407572d29094..0b29b0f4e3310b3781fc1d66f7c5575f840e41ed 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_elem" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_elem" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_elem \- Element Descriptor Types
 .SH SYNOPSIS
index f27be6c412b09548828142d81a9d0f695b61f015..cd7c38b9f2092a2f3dd655abc5b0cb73f6219697 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_free_root" 9 "nvme_mi_free_root" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_free_root" 9 "nvme_mi_free_root" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_free_root \- Free root object.
 .SH SYNOPSIS
index cd555a8cf2a3768137ea60b7e42127db6a3ad2fb..be373401eed3522d292e153e14ac14184134e9e9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_init_ctrl" 9 "nvme_mi_init_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_init_ctrl" 9 "nvme_mi_init_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_init_ctrl \- initialise a NVMe controller.
 .SH SYNOPSIS
index 0d0aa0a29b499cbc0c5e833c7b1e1617cb8a8436..c54e4bc7bb357e668131774759ca68702384ed02 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_message_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_message_type" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_message_type \- NVMe-MI message type field.
 .SH SYNOPSIS
index 85690b462aa05ed7bdeb243036729a1747697b0d..e5a843753a0ca02ec574c95b4660deea869187fd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_mi_opcode" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_mi_opcode" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_mi_opcode \- Operation code for supported NVMe-MI commands.
 .SH SYNOPSIS
index 288b63a718b2e3d8fdb74b1d5e305f1103455f9e..5264357f406f77127091568206fb0ce0cd54b8a8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_mi_read_mi_data_ctrl" 9 "nvme_mi_mi_read_mi_data_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_mi_read_mi_data_ctrl" 9 "nvme_mi_mi_read_mi_data_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_mi_read_mi_data_ctrl \- Perform a Read MI Data Structure command, retrieving controller information
 .SH SYNOPSIS
index 5d88fa8bfcd06fb0eea97c9de73329fb5028e239..594d8f6f4d7f6fdeccdfc0b68d72baa1907f270f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_mi_read_mi_data_ctrl_list" 9 "nvme_mi_mi_read_mi_data_ctrl_list" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_mi_read_mi_data_ctrl_list" 9 "nvme_mi_mi_read_mi_data_ctrl_list" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_mi_read_mi_data_ctrl_list \- Perform a Read MI Data Structure command, retrieving the list of attached controllers.
 .SH SYNOPSIS
index 4d56bf09d869a5cb5d4ac760516134fad62a2b6e..f3aeaf31a263691649923eda6d34d1bd43487322 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_mi_read_mi_data_port" 9 "nvme_mi_mi_read_mi_data_port" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_mi_read_mi_data_port" 9 "nvme_mi_mi_read_mi_data_port" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_mi_read_mi_data_port \- Perform a Read MI Data Structure command, retrieving port data.
 .SH SYNOPSIS
index 685399e74897be30910426bb789146ab9aef0bca..a4a5191b15d279b19b7dc3eea9d7df986237fa72 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_mi_read_mi_data_subsys" 9 "nvme_mi_mi_read_mi_data_subsys" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_mi_read_mi_data_subsys" 9 "nvme_mi_mi_read_mi_data_subsys" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_mi_read_mi_data_subsys \- Perform a Read MI Data Structure command, retrieving subsystem data.
 .SH SYNOPSIS
index 29cd0192191b19b34e7851b439f2b1937d980bf6..a7c0d497f41e239faf1077f2972b63bca4b23f09 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_mi_req_hdr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_mi_req_hdr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_mi_req_hdr \- MI request message header.
 .SH SYNOPSIS
index c330b1b0f9a7c87e4b52df29b3c5343db9de10a1..37e78e56ad6f2f34c349dfbbd8c6b2c55607116c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_mi_resp_hdr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_mi_resp_hdr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_mi_resp_hdr \- MI response message header.
 .SH SYNOPSIS
index 198744f59c49285dddf3e7b4246f2beba57cb9f1..1b9b2c4f9172c59d8886819ebaadb05863014db4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_mi_subsystem_health_status_poll" 9 "nvme_mi_mi_subsystem_health_status_poll" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_mi_subsystem_health_status_poll" 9 "nvme_mi_mi_subsystem_health_status_poll" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_mi_subsystem_health_status_poll \- Read the Subsystem Health Data Structure from the NVM subsystem
 .SH SYNOPSIS
index 19e863bbdb41ca389e071a50b9d89a3ab4ed8f8b..29e9bd6f8ebbe2be3efc5c5466c496521fc44b1d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_msg_hdr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_msg_hdr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_msg_hdr \- General MI message header.
 .SH SYNOPSIS
index d0fd3322b41072a7795e271ac1b53f42f52b6cf8..64aad38066e2f2d6847db9130afad4043d6c8f53 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_msg_resp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_msg_resp" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_msg_resp \- Generic response type.
 .SH SYNOPSIS
index 4c3e829c1fbbfd3b6a5511bc6fc77f34d9d0ae5d..1525edd1439381b6f894a7562739a7aee946c74e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_nvm_ss_health_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_nvm_ss_health_status" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_nvm_ss_health_status \- Subsystem Management Data Structure
 .SH SYNOPSIS
index df239fb9f011da6aada2cd9e3e239e204c89cff9..11cf4ef0d9c90690a5d8e642370c63fc618530f9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_open_mctp" 9 "nvme_mi_open_mctp" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_open_mctp" 9 "nvme_mi_open_mctp" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_open_mctp \- Create an endpoint using a MCTP connection.
 .SH SYNOPSIS
index 447786f2dded7ba212c55cfa7807025cb064c64d..5841d255444be86a7452c1c6d53732939b8fb1cd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_osc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_osc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_osc \- Optionally Supported Command Data Structure
 .SH SYNOPSIS
index 09825feaf232dcb869a7ddd3a1df8e758c19ed83..0eaa2f2de16cec617b8f034ee0e57a55c6a943de 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_port_pcie" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_port_pcie" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_port_pcie \- PCIe Port Specific Data
 .SH SYNOPSIS
index c11e3dd18974eca0cb951fb3202ed3b98c4d415f..efda36ae27a2c9ca7a68f7cfdca7aabcafdceb76 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_port_smb" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_port_smb" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_port_smb \- SMBus Port Specific Data
 .SH SYNOPSIS
index 830e7f82fe100859b68526c55307e507d42fc3e7..8b78aab71d3c2d08b883f916d3fedeb40e62b648 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_read_ctrl_info" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_read_ctrl_info" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_read_ctrl_info \- Controller Information Data Structure
 .SH SYNOPSIS
index a761e7dee0309ad6d52c50287f438374e988ab72..3fb30addfa460d6ab945de935614bb57b1be463c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_read_nvm_ss_info" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_read_nvm_ss_info" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_read_nvm_ss_info \- NVM Subsystem Information Data Structure
 .SH SYNOPSIS
index 831aff747d3d8dc54c56fec748cd84bf240a6d43..893163984cb0fecce11ca516d3ae6820d006a7b2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_read_port_info" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_read_port_info" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_read_port_info \- Port Information Data Structure
 .SH SYNOPSIS
index c3fa251360d8225cc368b4f3b4613d3447aa8ab7..2ff5a8734a5ea0e506befc70c15c971fdb8a7187 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_read_sc_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_read_sc_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_read_sc_list \- Management Endpoint Buffer Supported Command List Data Structure
 .SH SYNOPSIS
index e0b79c99c05a9fad6a03a6168cc11018b126817b..aceae135d7de3f2305aa67c8f094379e8c47a9af 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_mi_resp_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_mi_resp_status" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_mi_resp_status \- values for the response status field
 .SH SYNOPSIS
diff --git a/doc/man/nvme_mi_set_probe_enabled.2 b/doc/man/nvme_mi_set_probe_enabled.2
new file mode 100644 (file)
index 0000000..6b11db3
--- /dev/null
@@ -0,0 +1,16 @@
+.TH "nvme_mi_set_probe_enabled" 9 "nvme_mi_set_probe_enabled" "January 2023" "libnvme API manual" LINUX
+.SH NAME
+nvme_mi_set_probe_enabled \- enable/disable the probe for new endpoints
+.SH SYNOPSIS
+.B "void" nvme_mi_set_probe_enabled
+.BI "(nvme_root_t root "  ","
+.BI "bool enabled "  ");"
+.SH ARGUMENTS
+.IP "root" 12
+\fInvme_root_t\fP object
+.IP "enabled" 12
+whether to probe new endpoints
+.SH "DESCRIPTION"
+Controls whether newly-created endpoints are probed for quirks on creation.
+Defaults to enabled, which results in some initial messaging with the
+endpoint to determine model-specific details.
index a65a85f33ef81b83bd3c5f044848d49d81b90626..ba26ae529b12e7eb82f0cef21c41d87325741fef 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_mi_status_to_string" 9 "nvme_mi_status_to_string" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_mi_status_to_string" 9 "nvme_mi_status_to_string" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_mi_status_to_string \- return a string representation of the MI status.
 .SH SYNOPSIS
index 79188a8897dee54c5c849ebebdad5030b491484d..63f0e1dfe70c4caadefe9f923e7082b97a1a07c2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_vpd_hdr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_vpd_hdr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_vpd_hdr \- Vital Product Data Common Header
 .SH SYNOPSIS
index 95195c3260e624745ad64df963fc335cf60aca03..a0ca4a915088ddcbbb406eddffc51ebf4246a2d5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_vpd_mr_common" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_vpd_mr_common" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_vpd_mr_common \- NVMe MultiRecord Area
 .SH SYNOPSIS
index 76c1dda574a1ac1b5a5e39f33ee9bcad5e9c0905..6d0871032e09fc90251edcea432e4ac81dff3b1f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_vpd_mra" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_vpd_mra" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_vpd_mra \- NVMe MultiRecord Area
 .SH SYNOPSIS
index 7d2050e6a00671bd41c98b5af25d738a466d0645..9a2cb9ad16e2bafab34562784a10e50c61b803ec 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_vpd_ppmra" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_vpd_ppmra" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_vpd_ppmra \- NVMe PCIe Port MultiRecord Area
 .SH SYNOPSIS
index 22524e482bed507e3735dde1750e373a299504b6..6e2c6f3fcd6e9b663de4321bd3a5a3ef9fde4e3c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_vpd_telem" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_vpd_telem" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_vpd_telem \- Vital Product Data Element Descriptor
 .SH SYNOPSIS
index 25aa2b6661d3dd70f9b50fd6d195339c57a9702a..eddac5ee816a99d2f7f25b23934299285e368fa9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_mi_vpd_tra" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_mi_vpd_tra" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_mi_vpd_tra \- Vital Product Data Topology MultiRecord
 .SH SYNOPSIS
index f03a0d30955dbac259dc02f7dd0e40296610df3c..83800d933197d6d0e57623327c5efb42adb49541 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_attach_ctrls" 9 "nvme_namespace_attach_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_attach_ctrls" 9 "nvme_namespace_attach_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_attach_ctrls \- Attach namespace to controller(s)
 .SH SYNOPSIS
index a98170ffebbb1b74d83bc18b611cce0e74b0a1df..693dab8b64f4c9946ed929664dd872df54ea56a5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_detach_ctrls" 9 "nvme_namespace_detach_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_detach_ctrls" 9 "nvme_namespace_detach_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_detach_ctrls \- Detach namespace from controller(s)
 .SH SYNOPSIS
index d74e8624a5de892663ce62e2c08cb0eeb59dc9db..d81213467edad31a9b566d8a752db2e85a60ef06 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_filter" 9 "nvme_namespace_filter" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_filter" 9 "nvme_namespace_filter" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_filter \- Filter for namespaces
 .SH SYNOPSIS
index f3ea1dc138da742b71a29ac44934792a60afcc0e..5cbc1a39e5cce949636e70372edbe20b2ac2eea1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_first_path" 9 "nvme_namespace_first_path" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_first_path" 9 "nvme_namespace_first_path" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_first_path \- Start path iterator
 .SH SYNOPSIS
index a8e104a40c431c2be78874a8cb41f80ceed9c27b..163157623e16ba990f92e66b6c0134ad614a6402 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_for_each_path" 9 "nvme_namespace_for_each_path" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_for_each_path" 9 "nvme_namespace_for_each_path" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_for_each_path \- Traverse paths
 .SH SYNOPSIS
index a2e932c9899793937fa523a1c3911afe99a3a79b..5e580c17a1233231a17c66ce3f15dbd33355b571 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_for_each_path_safe" 9 "nvme_namespace_for_each_path_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_for_each_path_safe" 9 "nvme_namespace_for_each_path_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_for_each_path_safe \- Traverse paths
 .SH SYNOPSIS
index 66065972b871dea1d6caee375fb3ad6fd06d6cff..1e6453f5e78f53932d64dafafc381e0329020d2f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_namespace_next_path" 9 "nvme_namespace_next_path" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_namespace_next_path" 9 "nvme_namespace_next_path" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_namespace_next_path \- Next path iterator
 .SH SYNOPSIS
index 320b2c00558ec056c7bf6a02da5b245b1497ca08..9f59b2fa23a60a0f5b7f00a34e59c054b9e7f359 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_nd_ns_fpi" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_nd_ns_fpi" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_nd_ns_fpi \- If a format operation is in progress, this field indicates the percentage of the namespace that remains to be formatted.
 .SH SYNOPSIS
index f0843782d1a2e94df7c644983c87745e1fdeac89..a6023c912ff40dc24fb32a842679acb21f07c61f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_next_host" 9 "nvme_next_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_next_host" 9 "nvme_next_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_next_host \- Next host iterator
 .SH SYNOPSIS
index 55459ea61bc6c38c736f76e1a88378ab85202143..4e0ba64068f9f25d96466466cb9a8e52a00241f7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_next_subsystem" 9 "nvme_next_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_next_subsystem" 9 "nvme_next_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_next_subsystem \- Next subsystem iterator
 .SH SYNOPSIS
index fc2d0f58eaf648ed73373b2b0bd7c119d96d32c4..e506dade08eb85b7c1b798990693805b726e41d7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_attach" 9 "nvme_ns_attach" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_attach" 9 "nvme_ns_attach" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_attach \- Attach or detach namespace to controller(s)
 .SH SYNOPSIS
index 621a4977d4162370a36b303a8e7c7cf8d0b3c64e..99f02dc2106723a130f61815749c5b8b807c235a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_attach_ctrls" 9 "nvme_ns_attach_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_attach_ctrls" 9 "nvme_ns_attach_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_attach_ctrls \- Attach namespace to controllers
 .SH SYNOPSIS
index ec2586bbdc7a927922a5864c87c74f60449ed056..3cad00ed86630b7bc9f4b9b67ac755d8a358222a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ns_attach_sel" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ns_attach_sel" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ns_attach_sel \- Namespace Attachment - Select
 .SH SYNOPSIS
index e6858fb482b6f981c35a15e32db4cb53a06ff9ff..b1ae3c3e754d1c6154acefa69c9c26bdb1618ba2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_compare" 9 "nvme_ns_compare" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_compare" 9 "nvme_ns_compare" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_compare \- Compare data on a namespace
 .SH SYNOPSIS
index aa0da79a62beed65bc7368d9a8373eac9a90dd34..a0869adaf153d62bd2ba3444bbd48d65853c8294 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_detach_ctrls" 9 "nvme_ns_detach_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_detach_ctrls" 9 "nvme_ns_detach_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_detach_ctrls \- Detach namespace from controllers
 .SH SYNOPSIS
index 88ef5f182b3e46429239ef39d68d8a3c999fea58..04acee3955e0893e7d098978aa6bd314fbd87e96 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_flush" 9 "nvme_ns_flush" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_flush" 9 "nvme_ns_flush" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_flush \- Flush data to a namespace
 .SH SYNOPSIS
index 1f48d89f336f300537be906e64d6a95cb49c8859..a94fe5139e57f266af4d8d571d3270cb9b365c8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_csi" 9 "nvme_ns_get_csi" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_csi" 9 "nvme_ns_get_csi" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_csi \- Command set identifier of a namespace
 .SH SYNOPSIS
index 04d740582d4bcd1ba7210ad54c8bff8a1d710da5..666e2f80ce92d24a057d28aea1afbaab7e7c9ffd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_ctrl" 9 "nvme_ns_get_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_ctrl" 9 "nvme_ns_get_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_ctrl \- &nvme_ctrl_t of a namespace
 .SH SYNOPSIS
index 0e2d46a34f20161b7818f42a30849941c5065a7c..6f53422510d485a68b6d78dd035e126ed4531c07 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_eui64" 9 "nvme_ns_get_eui64" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_eui64" 9 "nvme_ns_get_eui64" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_eui64 \- 64-bit eui of a namespace
 .SH SYNOPSIS
index 21f89c45a5468812c086397ef76d97aff4cd353c..0ff82d55df025ed6beebd4b055872859ff09fe8c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_fd" 9 "nvme_ns_get_fd" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_fd" 9 "nvme_ns_get_fd" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_fd \- Get associated file descriptor
 .SH SYNOPSIS
index c9a6a7e5d9ab1e0cb18e0f3f886f46cbae1e8315..d4a9c68428db6beb00587826d5c2f5bfb363992e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_firmware" 9 "nvme_ns_get_firmware" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_firmware" 9 "nvme_ns_get_firmware" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_firmware \- Firmware string of a namespace
 .SH SYNOPSIS
index 5c0fe3665aa3ee767648a04889cdb5ff61148369..8dcd9fb8afca6be17bc2232927ba60299d69774b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_generic_name" 9 "nvme_ns_get_generic_name" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_generic_name" 9 "nvme_ns_get_generic_name" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_generic_name \- Returns name of generic namespace chardev.
 .SH SYNOPSIS
index 1827dcdac9d2dbaf2b54bd8dbedae6f509d51507..f61436253d2be8ee219af47f0b135eea4ce9c942 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_lba_count" 9 "nvme_ns_get_lba_count" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_lba_count" 9 "nvme_ns_get_lba_count" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_lba_count \- LBA count of a namespace
 .SH SYNOPSIS
index ca1c6bcb8fec50cfbdbacc6825b700be8b8e5497..bd57491a2ebdd9309082a526cdbd70b0993d6097 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_lba_size" 9 "nvme_ns_get_lba_size" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_lba_size" 9 "nvme_ns_get_lba_size" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_lba_size \- LBA size of a namespace
 .SH SYNOPSIS
index c35b360c436ff89112e695b894405b750823365a..fc82c5181563666c9aa7942983d46e8ef78d449d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_lba_util" 9 "nvme_ns_get_lba_util" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_lba_util" 9 "nvme_ns_get_lba_util" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_lba_util \- LBA utilization of a namespace
 .SH SYNOPSIS
index 4bd09404cda579e5c20cc20dc51d5a37abdd3ddc..75e1d1cdbac7d0a39a34a2f8873d5c20ee8226e3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_meta_size" 9 "nvme_ns_get_meta_size" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_meta_size" 9 "nvme_ns_get_meta_size" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_meta_size \- Metadata size of a namespace
 .SH SYNOPSIS
index 223ff0166040fc780223ce8f7eab6ceaaf140056..dd4f3debfe96475df35a68319e9158af8ab89a22 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_model" 9 "nvme_ns_get_model" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_model" 9 "nvme_ns_get_model" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_model \- Model of a namespace
 .SH SYNOPSIS
index c25bd935976f796308eb79471949cb55d02f3b2c..6fce252565a0766c6614ae4ecde014908a870490 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_name" 9 "nvme_ns_get_name" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_name" 9 "nvme_ns_get_name" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_name \- sysfs name of a namespace
 .SH SYNOPSIS
index cecd646890f5629cef8f726d26c85005e3e45324..43c8cbdab80e73e7fdca28098db7e4bc2124da06 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_nguid" 9 "nvme_ns_get_nguid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_nguid" 9 "nvme_ns_get_nguid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_nguid \- 128-bit nguid of a namespace
 .SH SYNOPSIS
index 0212042670c79191f36cbf279a409a213874bd60..4cd6c6a804ee9054c3e80b34621186c5c900e44e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_nsid" 9 "nvme_ns_get_nsid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_nsid" 9 "nvme_ns_get_nsid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_nsid \- NSID of a namespace
 .SH SYNOPSIS
index 4ab27b3d29c9710dcd3d28eb3b4c8fe355c459c7..2320ff68fb0756f9bbcaaa0f83783e7d8b2ab7a2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_serial" 9 "nvme_ns_get_serial" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_serial" 9 "nvme_ns_get_serial" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_serial \- Serial number of a namespace
 .SH SYNOPSIS
index 2d20ba971d7a29a5ca044a2f1d29cbaeb3e415e9..eb847d016d04c278819620c2d21674ca65bb3d0a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_subsystem" 9 "nvme_ns_get_subsystem" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_subsystem" 9 "nvme_ns_get_subsystem" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_subsystem \- &nvme_subsystem_t of a namespace
 .SH SYNOPSIS
index 51ff7de5ea564e8018c7faf2d3a4282704da7bc1..55d038777b8b339559ccf90beb1e1752721314f1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_sysfs_dir" 9 "nvme_ns_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_sysfs_dir" 9 "nvme_ns_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_sysfs_dir \- sysfs directory of a namespace
 .SH SYNOPSIS
index b471d5599460c26211023f640335fbcd1da3b106..f9ea1dbabed0f65c2bf137250ef179c4f310c49e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_get_uuid" 9 "nvme_ns_get_uuid" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_get_uuid" 9 "nvme_ns_get_uuid" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_get_uuid \- UUID of a namespace
 .SH SYNOPSIS
index a8a7567fccf47345dd8917f155422f8fb91b27c2..f3568fd08c592a7c0b1dc1e77f68e8d387ac1b5d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_ns_id_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_ns_id_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_ns_id_desc \- Namespace identifier type descriptor
 .SH SYNOPSIS
index 7177ccb8542092ac3fbde46345b998ad1bd97f24..dfef8a28c9400cac2e0efe7aef30b46c28402c39 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ns_id_desc_nidt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ns_id_desc_nidt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ns_id_desc_nidt \- Known namespace identifier types
 .SH SYNOPSIS
index 5e522a04678488acfea34620cc01e87343818551..ec345b176550da0d03155d439d5ef362a4f945cb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_identify" 9 "nvme_ns_identify" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_identify" 9 "nvme_ns_identify" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_identify \- Issue an 'identify namespace' command
 .SH SYNOPSIS
index a7279358621bd224ada5ffc26315ba9aea1f871e..cd266edb7562e959f77bce1e18ca3cf9b3d32a55 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_identify_descs" 9 "nvme_ns_identify_descs" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_identify_descs" 9 "nvme_ns_identify_descs" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_identify_descs \- Issue an 'identify descriptors' command
 .SH SYNOPSIS
index 8e3f7873ebc85d7cf2ca6e65eaf3aa47cf6b38f7..ad0120861ebd9bf83037fa71ed553883651e5a7c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_ns_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_ns_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_ns_list \- Namespace List
 .SH SYNOPSIS
index 8d874a8bd0952990430e5466f3cda6e9472e2836..b427ffbf640c971781db2495a607e12871448568 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ns_metadata_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ns_metadata_type" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ns_metadata_type \- Namespace Metadata Element Types
 .SH SYNOPSIS
index 04d3e51f8f2cdd662c4dd20a840d549d64c07dc3..e835501239b169111a30a8c3a3adbda2d8b4f270 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_mgmt" 9 "nvme_ns_mgmt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_mgmt" 9 "nvme_ns_mgmt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_mgmt \- Issue a Namespace management command
 .SH SYNOPSIS
index 896332c07670243179e61317fe493c0725745d46..e1bb3df4cfc98de55c8324e9d0805733f140adf4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_mgmt_create" 9 "nvme_ns_mgmt_create" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_mgmt_create" 9 "nvme_ns_mgmt_create" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_mgmt_create \- Create a non attached namespace
 .SH SYNOPSIS
index b60654b4a1a1b9f46899b1ac717d8ddc6c41febb..3d813e65cf24e7e820abcde2da4a65ea316bf8c6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_mgmt_delete" 9 "nvme_ns_mgmt_delete" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_mgmt_delete" 9 "nvme_ns_mgmt_delete" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_mgmt_delete \- Delete a non attached namespace
 .SH SYNOPSIS
index 947ca7b9efe331c2e8498fa64b5d22e739ed4094..055dcb264f75ecd99c0c40879b5a47375927f540 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ns_mgmt_sel" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ns_mgmt_sel" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ns_mgmt_sel \- Namespace Management - Select
 .SH SYNOPSIS
index 682ca1427a2de44e6f424d215311b2c7ce781794..af85e0aa6f04ac04b479243f079647526127baf8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_read" 9 "nvme_ns_read" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_read" 9 "nvme_ns_read" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_read \- Read from a namespace
 .SH SYNOPSIS
index a483c0b0edf03a51d4d598dc3fd96ca608000c6f..559de472ebc53f3220f5b459a4ee18181e30eb56 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_rescan" 9 "nvme_ns_rescan" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_rescan" 9 "nvme_ns_rescan" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_rescan \- Initiate a controller rescan
 .SH SYNOPSIS
index 48ce2fcc57d5d32705f65136c7a231185cde58ba..3811496fc4283e80cb39dd77abc7ad7c050d674f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_verify" 9 "nvme_ns_verify" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_verify" 9 "nvme_ns_verify" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_verify \- Verify data on a namespace
 .SH SYNOPSIS
index b671d37d203f128be7285e18ef62b65168fa38b8..ddc21cdd610273a3066ff47dff67359abb51be35 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_write" 9 "nvme_ns_write" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_write" 9 "nvme_ns_write" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_write \- Write to a namespace
 .SH SYNOPSIS
index 0987434ffa7f1e27d89bb294eb7a3994cb8c9cdf..eebca9ceddc53772dab2d26c66c5a79f799aa421 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_ns_write_protect_cfg" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_ns_write_protect_cfg" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_ns_write_protect_cfg \- Write Protection - Write Protection State
 .SH SYNOPSIS
index 944b9538ce6fdb051b50c3e29eb76aaa5b182589..c3d3b800167c7ff6df905735cb731907bbeda0ab 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_write_uncorrectable" 9 "nvme_ns_write_uncorrectable" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_write_uncorrectable" 9 "nvme_ns_write_uncorrectable" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_write_uncorrectable \- Issus a 'write uncorrectable' command
 .SH SYNOPSIS
index 132c83aade46b3c1012544dd118ce1009d880748..adecc208f05829700846df938d13f87b609165aa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_ns_write_zeros" 9 "nvme_ns_write_zeros" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_ns_write_zeros" 9 "nvme_ns_write_zeros" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_ns_write_zeros \- Write zeros to a namespace
 .SH SYNOPSIS
index ad38206fc30c7442d3c332e6c97401b32a435a01..1ea21518d067f32082826c4c825e1bd468240f53 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_nss_hw_err_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_nss_hw_err_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_nss_hw_err_event \- NVM Subsystem Hardware Error Event
 .SH SYNOPSIS
index 8bfc16ff8331cb74da6880dc9181c65176055985..4f839de53c4bade7332397cee1c52274cd20a6b7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_nvm_id_ns" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_nvm_id_ns" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_nvm_id_ns \- NVME Command Set I/O Command Set Specific Identify Namespace Data Structure
 .SH SYNOPSIS
index 8e466dd7de8026d07e2a50756e8bf115a90e7dc5..e34c953932ba8753f354a3c7e35f03719322efd3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_nvm_id_ns_elbaf" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_nvm_id_ns_elbaf" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_nvm_id_ns_elbaf \- This field indicates the extended LBA format
 .SH SYNOPSIS
index 541143ffa1d7264b9cf4e204bb6bb7b4a27f62be..48e433f66a09f6544a53632b9af8b8447a52b7de 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_nvm_identify_ctrl" 9 "nvme_nvm_identify_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_nvm_identify_ctrl" 9 "nvme_nvm_identify_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_nvm_identify_ctrl \- Identify controller data
 .SH SYNOPSIS
index fbb2ea4238bb4311f8572766c26c0f5a66e778bb..9ba17bfa22b3586b4e95d679c4ba6ded38c7889e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_nvmeset_pl_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_nvmeset_pl_status" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_nvmeset_pl_status \- Predictable Latency Per NVM Set Log - Status
 .SH SYNOPSIS
index 92210da1a6468cb10beb6c29c836ab4db872df4c..8dae12651db453f2abead11755652d2fd816f42f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_nvmset_attr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_nvmset_attr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_nvmset_attr \- NVM Set Attributes Entry
 .SH SYNOPSIS
index 7f74421715e239b1800f2e58fd08c0aa596c10b9..9ebe44211585ddebf61a13fe8e59f2b90d7fbead 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_nvmset_pl_events" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_nvmset_pl_events" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_nvmset_pl_events \- Predictable Latency Per NVM Set Log - Event Type
 .SH SYNOPSIS
index ec9994b0d1a987fe7f21e3d8a275078d6a0a553e..afe4302abeac5abc25f015b6957e21d404a3f401 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_nvmset_predictable_lat_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_nvmset_predictable_lat_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_nvmset_predictable_lat_log \- Predictable Latency Mode - Deterministic Threshold Configuration Data
 .SH SYNOPSIS
index 370f86ce59957e36ceb9f1bf11f166aea7d25647..d9ae3e73c17786c7edde945c875a3d150daf0167 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_open" 9 "nvme_open" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_open" 9 "nvme_open" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_open \- Open an nvme controller or namespace device
 .SH SYNOPSIS
index 7528ccc49bafbf5aa6d1ff3b0a4a8b9d2ba539cb..4c47164cb2a1572bb517370cfd07b3e79626db8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_passthru_cmd" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_passthru_cmd" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_passthru_cmd \- nvme passthrough command structure
 .SH SYNOPSIS
index 82de2f704eaace853a9ac756d80314fdf8249788..a4cc2f3d370ae42033985ece58f03cfb6179600b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_passthru_cmd64" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_passthru_cmd64" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_passthru_cmd64 \- 64-bit nvme passthrough command structure
 .SH SYNOPSIS
index d99f00f8d4d7c83c090737b3999cbf020c40070a..840d533347a17485d76b40c76014017be9cbbcd4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_path_get_ana_state" 9 "nvme_path_get_ana_state" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_path_get_ana_state" 9 "nvme_path_get_ana_state" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_path_get_ana_state \- ANA state of an nvme_path_t object
 .SH SYNOPSIS
index d4867183e1e8e32f6727428062f0515a6ffe2fee..759d8ba4ea4958ad46bcc834a64d902e7eb98da1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_path_get_ctrl" 9 "nvme_path_get_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_path_get_ctrl" 9 "nvme_path_get_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_path_get_ctrl \- Parent controller of an nvme_path_t object
 .SH SYNOPSIS
index 4c8f4b4dd32432c65d2272fcd31edbf870576509..100556ad1ce08d9993ea83cd05e56f3ccb5dc73d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_path_get_name" 9 "nvme_path_get_name" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_path_get_name" 9 "nvme_path_get_name" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_path_get_name \- sysfs name of an &nvme_path_t object
 .SH SYNOPSIS
index fbd96294099f188896381cb286ec99967a3db5de..515c8892e18a07e4cd5de5499545387a134078f0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_path_get_ns" 9 "nvme_path_get_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_path_get_ns" 9 "nvme_path_get_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_path_get_ns \- Parent namespace of an nvme_path_t object
 .SH SYNOPSIS
index 4c7e01a7216d8c1c9422ef11e68771d5cf32bbee..621d3093c4cd1968d671b4ae38fe14898f3a7b70 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_path_get_sysfs_dir" 9 "nvme_path_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_path_get_sysfs_dir" 9 "nvme_path_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_path_get_sysfs_dir \- sysfs directory of an nvme_path_t object
 .SH SYNOPSIS
index 1825634520c32172bb4ff60a1241807f0c2b9f0a..29514c0e4d06f1e08845376d3800fdbd6dedf565 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_paths_filter" 9 "nvme_paths_filter" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_paths_filter" 9 "nvme_paths_filter" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_paths_filter \- Filter for paths
 .SH SYNOPSIS
index 9a7e795814e386a18d37cdc800e99ce2d9bbf057..24a25fa2bf3f853ef9b8a51656226152bfa198c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_persistent_event_entry" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_persistent_event_entry" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_persistent_event_entry \- Persistent Event
 .SH SYNOPSIS
index 59d4866584fba247a522612ce3e69c6f6a62c59c..f4dfa80eb3bffe1b71e16de8b8f920b7d7d1df77 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_persistent_event_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_persistent_event_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_persistent_event_log \- Persistent Event Log
 .SH SYNOPSIS
index 2b96a9bc184a176aaae417edc7b3dcd930b207b0..e7d8de7570b5b530498831f8ac47054392c5b7f3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_persistent_event_types" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_persistent_event_types" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_persistent_event_types \- Persistent event log events
 .SH SYNOPSIS
index 237333692dccd9704f65591507edc69caad53156..fd80ffdcc68afba7b3ca76cf1867b07239eba645 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_pevent_log_action" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_pevent_log_action" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_pevent_log_action \- Persistent Event Log - Action
 .SH SYNOPSIS
index 7aad2e145463471ead61cd5420a79825b22807b3..62893ed4043d3f963f2af729557dfa9226a2e15e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_plm_config" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_plm_config" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_plm_config \- Predictable Latency Mode - Deterministic Threshold Configuration Data Structure
 .SH SYNOPSIS
index 6c351944822575221d89ce2d7b102cda0596e899..adf55bc79bafe2fdd02266e3602f7a69e26a1594 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_pmr_size" 9 "nvme_pmr_size" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_pmr_size" 9 "nvme_pmr_size" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_pmr_size \- Calculate size of persistent memory region elasticity buffer
 .SH SYNOPSIS
index 807caac92eb48ef6255e75d0f4041a7347394064..364126a659b571b91014617e736ec7b936e0f9e5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_pmr_throughput" 9 "nvme_pmr_throughput" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_pmr_throughput" 9 "nvme_pmr_throughput" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_pmr_throughput \- Calculate throughput of persistent memory buffer
 .SH SYNOPSIS
index ff6d5eb5085ec93c65bfea5acb86b1bd0e3a282e..327cdb3d36947a98ce0d7b1b9ed1e54787ac6883 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_power_on_reset_info_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_power_on_reset_info_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_power_on_reset_info_list \- Controller Reset Information
 .SH SYNOPSIS
index da6a29643987add7645df847497988f1f0892854..8f9c5934b8c2b8df244f2b701ace180deec90044 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_primary_ctrl_cap" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_primary_ctrl_cap" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_primary_ctrl_cap \- Identify - Controller Capabilities Structure
 .SH SYNOPSIS
index aa92507971b3fada818138124ee1301074e7ecd5..e02cde63a0b67e94f5f06f941d350011c2ee44f2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_psd_flags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_psd_flags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_psd_flags \- Possible flag values in nvme power state descriptor
 .SH SYNOPSIS
index 2b95fc2652e66ae91da1e63d50c37a78287cf1b7..3e7c358e613f844c144a37858ba05b4cd51cbc9d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_psd_power_scale" 9 "nvme_psd_power_scale" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_psd_power_scale" 9 "nvme_psd_power_scale" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_psd_power_scale \- power scale occupies the upper 3 bits
 .SH SYNOPSIS
index 4efe647618dd1910dde54610c39a2757c8ad3d83..ed59fcd983a6f45cc6d0a81253fb67a3dfb6a96a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_psd_ps" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_psd_ps" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_psd_ps \- Known values for &struct nvme_psd %ips and %aps. Use with nvme_psd_power_scale() to extract the power scale field to match this enum.
 .SH SYNOPSIS
index 82f156656dd859a909b032c6e292793726620dae..bf6cead9c66bee9083d7146409645bd63bd04fb7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_psd_workload" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_psd_workload" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_psd_workload \- Specifies a workload hint in the Power Management Feature (see &struct nvme_psd.apw) to inform the NVM subsystem or indicate the conditions for the active power level.
 .SH SYNOPSIS
index bfd8bd120667da19df1e3fe4fdc7c7a861c57411..d7de4a9695e6899ddca7e63076447fdc7ce191f5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_read" 9 "nvme_read" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_read" 9 "nvme_read" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_read \- Submit an nvme user read command
 .SH SYNOPSIS
index a262cb37119cf5d027c0a979f54a463ef19471ed..363647f2b65b0241fcccab0dc1597521ace6b552 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_read_config" 9 "nvme_read_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_read_config" 9 "nvme_read_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_read_config \- Read NVMe JSON configuration file
 .SH SYNOPSIS
index 6d71be0e5b7e52f27b948bd2302f383a4e24784e..dac1ee1eb42b6104a06212f38928aa76ba1204eb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_refresh_topology" 9 "nvme_refresh_topology" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_refresh_topology" 9 "nvme_refresh_topology" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_refresh_topology \- Refresh nvme_root_t object contents
 .SH SYNOPSIS
index eb29c1bc57a99e5ca5c8273d4f2387b9f4e23fc9..17d03b79b0169c33d58e51c8b9c574a00d506b0d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_register_offsets" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_register_offsets" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_register_offsets \- controller registers for all transports. This is the layout of BAR0/1 for PCIe, and properties for fabrics.
 .SH SYNOPSIS
index bb0054fd7992578c37e475223112da90d6263ead..7d102151c92826bb26135c1c50073db0eac30b4b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_registered_ctrl" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_registered_ctrl" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_registered_ctrl \- Registered Controller Data Structure
 .SH SYNOPSIS
index 12825b47cc5b4dd3e5a1b32e286305f83aa46829..370a57d1d92aa25a1d61aa18e53a1fd5a234a07c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_registered_ctrl_ext" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_registered_ctrl_ext" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_registered_ctrl_ext \- Registered Controller Extended Data Structure
 .SH SYNOPSIS
index f4ab5eca4ff6b90ae485fe1ca5dc15e270f2e47c..fd7c41776d10a24ccdb4f965c9e46743ed6d0259 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_rescan_ctrl" 9 "nvme_rescan_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_rescan_ctrl" 9 "nvme_rescan_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_rescan_ctrl \- Rescan an existing controller
 .SH SYNOPSIS
index 4374637cc2f59337573466010c7882d908407228..25f9f86bf21d618d6d287a94740d3982499abe57 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_resv_acquire" 9 "nvme_resv_acquire" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_resv_acquire" 9 "nvme_resv_acquire" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_resv_acquire \- Send an nvme reservation acquire
 .SH SYNOPSIS
index 30ea56a368727bc55bd00c15bebdfb078e0cd701..0b7d4f2702f3b8319c56fe1208aa5ce034a63081 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_resv_cptpl" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_resv_cptpl" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_resv_cptpl \- Reservation Register - Change Persist Through Power Loss State
 .SH SYNOPSIS
index de2b0c34877a7b52675e6e7eb9f29ed5dcb2832a..d650b77379c75a03e432597a5adadf3bb1b01ffd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_resv_notification_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_resv_notification_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_resv_notification_log \- Reservation Notification Log
 .SH SYNOPSIS
index 2f3d25bf55dd428976ea0ce7344a0266dabba218..a12923b33dcfab17a60dc242056538efd742d74c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_resv_notify_rnlpt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_resv_notify_rnlpt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_resv_notify_rnlpt \- Reservation Notification Log - Reservation Notification Log Page Type
 .SH SYNOPSIS
index 94351c093328a06a380526d514117297ab2f797f..ba115a2b9db4fe4f21dfdf8a539bb588c0afe1e8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_resv_racqa" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_resv_racqa" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_resv_racqa \- Reservation Acquire - Reservation Acquire Action
 .SH SYNOPSIS
index 1fdfc18d7fa28f73b02511b6c69bc4c74055ce4d..944c6a161957e197489d4d533f614c3dbe5abfb3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_resv_register" 9 "nvme_resv_register" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_resv_register" 9 "nvme_resv_register" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_resv_register \- Send an nvme reservation register
 .SH SYNOPSIS
index cb020963a662e7f1879528bf7949574ed1d97bc9..0b38617d62cb64f1e0c64f99a7710bcfe4e07862 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_resv_release" 9 "nvme_resv_release" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_resv_release" 9 "nvme_resv_release" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_resv_release \- Send an nvme reservation release
 .SH SYNOPSIS
index 2760676e1abdcff7f8ac78a67b9a5e6e9e65bfcb..30c8535c569595071284f5524f68db4d9c16ad6e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_resv_report" 9 "nvme_resv_report" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_resv_report" 9 "nvme_resv_report" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_resv_report \- Send an nvme reservation report
 .SH SYNOPSIS
index 08996f92bd5efe70aa9f616b15ef498e2981f5dd..fe46dca04a4438ba15bd7b86025eeea2f87d96e2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_resv_rrega" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_resv_rrega" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_resv_rrega \- Reservation Register - Reservation Register Action
 .SH SYNOPSIS
index 701772376fcf36379d760ba80704a4d6a960ac03..e215461c55aa2618b3c5c14574fcb43785ecd0e1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_resv_rrela" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_resv_rrela" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_resv_rrela \- Reservation Release - Reservation Release Action
 .SH SYNOPSIS
index 0e4d39226c55058f73a9cf1d34a1bb1397ba7a14..3468eae424c11a5f19579b13123f44e2ab265ecb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_resv_rtype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_resv_rtype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_resv_rtype \- Reservation Type Encoding
 .SH SYNOPSIS
index 241452c0a7c8926d892236f6a2261579bf20abaf..5a1beebfa4ece4cb8694b7fdf5d5e7ad445d19f3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_resv_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_resv_status" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_resv_status \- Reservation Status Data Structure
 .SH SYNOPSIS
index f3c4251ea554d890327c7d8bf34bc03e61aa7405..044d37ed5f9bb794fd25b9792c20219e3f944823 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_sanitize_compln_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_sanitize_compln_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_sanitize_compln_event \- Sanitize Completion Event Data
 .SH SYNOPSIS
index c7fdbd76bf48f9ddbe33d71d092c04a6cb81189e..2c14b0767ee5cd9a8d28111f3751867c70aad35e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_sanitize_log_page" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_sanitize_log_page" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_sanitize_log_page \- Sanitize Status (Log Identifier 81h)
 .SH SYNOPSIS
index 823ee494abe89beb2787cb37c47debd3d266de57..79ecb8bf1c612a0ccb5e8bcd7a4932a090104e84 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_sanitize_nvm" 9 "nvme_sanitize_nvm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_sanitize_nvm" 9 "nvme_sanitize_nvm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_sanitize_nvm \- Start a sanitize operation
 .SH SYNOPSIS
index 668d08f2b8293753a6ee995ec83e9c9aae186323..a57158978b4aa647849f20452ae3225b08139e31 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_sanitize_sanact" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_sanitize_sanact" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_sanitize_sanact \- Sanitize Action
 .SH SYNOPSIS
index c2c078139621b3c8cc24b963ec36bf148a2e0c0e..35fcbefed38b46c9095d7a70c718bf130453bda6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_sanitize_sstat" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_sanitize_sstat" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_sanitize_sstat \- Sanitize Status (SSTAT)
 .SH SYNOPSIS
index 6813feef01cee016ca4e1983fe024cce368d1e97..213e0b4d5cccd0bdcfaf670350e7a3dd27cf6587 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_sanitize_start_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_sanitize_start_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_sanitize_start_event \- Sanitize Start Event Data
 .SH SYNOPSIS
index e4bb31c15b3b4b13bd06099d1c07eeb02099dc01..a3951d6ea253bc35b0109e9f2563dcdcd5e90ee1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan" 9 "nvme_scan" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan" 9 "nvme_scan" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan \- Scan NVMe topology
 .SH SYNOPSIS
index 4d324edc35dc7b7854e88f93adabdde41749e98b..07bef5d180d94c3dc1ef9c3ce40a8fc9e51ec9fb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_ctrl" 9 "nvme_scan_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_ctrl" 9 "nvme_scan_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_ctrl \- Scan on a controller
 .SH SYNOPSIS
index 81cd4c0536b2e79612f75f61c11ed69a0284a8e1..b473d727146634e3a68e2f526108618b9f8c7f1d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_ctrl_namespace_paths" 9 "nvme_scan_ctrl_namespace_paths" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_ctrl_namespace_paths" 9 "nvme_scan_ctrl_namespace_paths" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_ctrl_namespace_paths \- Scan for namespace paths in a controller
 .SH SYNOPSIS
index 2426c0588502cf9db698048f92e7650c175083ff..fb4854de230960b666911cdfcdcfe952eea72306 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_ctrl_namespaces" 9 "nvme_scan_ctrl_namespaces" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_ctrl_namespaces" 9 "nvme_scan_ctrl_namespaces" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_ctrl_namespaces \- Scan for namespaces in a controller
 .SH SYNOPSIS
index 25fd677e96d6061ac1a44df11cc981bc0f8f3c2a..a3065908a5d3e149261745d658213735b74b8889 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_ctrls" 9 "nvme_scan_ctrls" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_ctrls" 9 "nvme_scan_ctrls" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_ctrls \- Scan for controllers
 .SH SYNOPSIS
index 2e2fb617a9672d5fcece64f57ce2fa0e72ea7d71..7fc7523db2ce3923f734612ffd6983d4dc86a602 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_namespace" 9 "nvme_scan_namespace" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_namespace" 9 "nvme_scan_namespace" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_namespace \- scan namespace based on sysfs name
 .SH SYNOPSIS
index 8d7b20888a7cd183f61f6ea7e08766822737144c..1dc7ff7265db07d6c48e4000ce5ffd5786a6876f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_subsystem_namespaces" 9 "nvme_scan_subsystem_namespaces" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_subsystem_namespaces" 9 "nvme_scan_subsystem_namespaces" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_subsystem_namespaces \- Scan for namespaces in a subsystem
 .SH SYNOPSIS
index 00bc922914fbbe468463641df57e46ce93342839..fe7d2cc8da92e48f90c53eed740de8084e6edce9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_subsystems" 9 "nvme_scan_subsystems" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_subsystems" 9 "nvme_scan_subsystems" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_subsystems \- Scan for subsystems
 .SH SYNOPSIS
index c548138cccbc68e7da9c39e1480bf7fdffaf8e75..7c6f4e1b94ef92b84da817d65b5608a62eebbf19 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_scan_topology" 9 "nvme_scan_topology" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_scan_topology" 9 "nvme_scan_topology" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_scan_topology \- Scan NVMe topology and apply filter
 .SH SYNOPSIS
index 40c1601b3324f47c311711e8276808d3a20e7e42..75616e51c8442175a4bbe7c335b1216fb6973e9f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_secondary_ctrl" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_secondary_ctrl" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_secondary_ctrl \- Secondary Controller Entry
 .SH SYNOPSIS
index 42a051051996aca00a8e06c42ab2dcf84b93412a..c2021f5fda043790de22eff0de3ac54eb28b418f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_secondary_ctrl_list" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_secondary_ctrl_list" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_secondary_ctrl_list \- Secondary Controller List
 .SH SYNOPSIS
index 298238efc0f32df60af15d10c403b3e83f4ef617..e2aac0938557bb5edd266583947919aef0917087 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_security_receive" 9 "nvme_security_receive" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_security_receive" 9 "nvme_security_receive" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_security_receive \- Security Receive command
 .SH SYNOPSIS
index fc2fe04a2c4d8ef1b9807d281e5ad7e0a69f92e4..0ece82eed20d0bcb89eb3cb06912d24dde7b322f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_security_send" 9 "nvme_security_send" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_security_send" 9 "nvme_security_send" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_security_send \- Security Send command
 .SH SYNOPSIS
index 1fa2d79266c6ed006ed725ec33048cc59bdb86b3..72431c254aba5b010c29b1703c3147e5c847e9df 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_self_test_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_self_test_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_self_test_log \- Device Self-test (Log Identifier 06h)
 .SH SYNOPSIS
index 54eb128b69604fc653abf95b778230988e10496e..e29c550b85f536dff7847cfe73c71ee63182e820 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_set_feature_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_set_feature_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_set_feature_event \- Set Feature Event Data
 .SH SYNOPSIS
index 818deaad488ed7a6ae1a63f38644e3f4d42dcd6c..8e337e72dd06a9e2b62a14b0296334c6051316af 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features" 9 "nvme_set_features" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features" 9 "nvme_set_features" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features \- Set a feature attribute
 .SH SYNOPSIS
index 0f5179ef35bb33476d312c2cc749a696fd57919b..932b5018d33c42a60adcda122ddc0e9357e90912 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_arbitration" 9 "nvme_set_features_arbitration" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_arbitration" 9 "nvme_set_features_arbitration" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_arbitration \- Set arbitration features
 .SH SYNOPSIS
index 6f3a8998973a884a54505a735b517d793d8b550a..fcf4d750d9d11dcb2c6566720c8918680c509366 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_async_event" 9 "nvme_set_features_async_event" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_async_event" 9 "nvme_set_features_async_event" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_async_event \- Set asynchronous event feature
 .SH SYNOPSIS
index 8a8cc913657d571848c71a540bb340e09d952fce..a88d7b88c5ea211b9a4f04a01761e59c2e1d41be 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_auto_pst" 9 "nvme_set_features_auto_pst" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_auto_pst" 9 "nvme_set_features_auto_pst" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_auto_pst \- Set autonomous power state feature
 .SH SYNOPSIS
index 73c2e690edce1af7298af8a0743f7d4139d779ac..ec7e399ab4d2beec4335b17f9f6abf4f30907a26 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_data" 9 "nvme_set_features_data" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_data" 9 "nvme_set_features_data" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_data \- Helper function for @nvme_set_features()
 .SH SYNOPSIS
index 5c4afcc5cf1561c80ada0f89cf93d0a41a8b23e8..7047b7c6efb568b836d505e304e53b65203b725c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_endurance_evt_cfg" 9 "nvme_set_features_endurance_evt_cfg" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_endurance_evt_cfg" 9 "nvme_set_features_endurance_evt_cfg" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_endurance_evt_cfg \- Set endurance event config feature
 .SH SYNOPSIS
index 3f1646df4ddf1546b9a39d3bb63ed8de72494f5d..c91df19dcfdd9bdae058fd0b28d3a11fa2598ad8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_err_recovery" 9 "nvme_set_features_err_recovery" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_err_recovery" 9 "nvme_set_features_err_recovery" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_err_recovery \- Set error recovery feature
 .SH SYNOPSIS
index 422ba43d54b6ebb406d2a6ca7d0ea366f7dfd854..811da64cfe0e7a40c7d4d72650097da44f829dd3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_hctm" 9 "nvme_set_features_hctm" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_hctm" 9 "nvme_set_features_hctm" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_hctm \- Set thermal management feature
 .SH SYNOPSIS
index af29adf07b52bae73c97e10b3d85d896ffc37219..38699511ed3d5a11a7c914be76f5d0c35ac4dc49 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_host_behavior" 9 "nvme_set_features_host_behavior" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_host_behavior" 9 "nvme_set_features_host_behavior" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_host_behavior \- Set host behavior feature
 .SH SYNOPSIS
index 1d269b31cc26927be405e24eb1d291ea421cceb1..971b72b4da2564e026f6a278ec86656bd702c074 100644 (file)
@@ -1,6 +1,6 @@
-.TH "nvme_set_features_host_id" 9 "nvme_set_features_host_id" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_host_id" 9 "nvme_set_features_host_id" "January 2023" "libnvme API manual" LINUX
 .SH NAME
-nvme_set_features_host_id \- Set enable extended host identifers feature
+nvme_set_features_host_id \- Set enable extended host identifiers feature
 .SH SYNOPSIS
 .B "int" nvme_set_features_host_id
 .BI "(int fd "  ","
index c55dbe6c35c50597e8501bc5e2ceb6137d1a9692..3841853f3a2ee1be9942aff01632cc6ed6b7fdce 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_irq_coalesce" 9 "nvme_set_features_irq_coalesce" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_irq_coalesce" 9 "nvme_set_features_irq_coalesce" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_irq_coalesce \- Set IRQ coalesce feature
 .SH SYNOPSIS
index 2116c43a4987cc32b17531c5b6edbf613cf90e46..a16f51cec721c01726f74f96a0beca4226e3bcf4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_irq_config" 9 "nvme_set_features_irq_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_irq_config" 9 "nvme_set_features_irq_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_irq_config \- Set IRQ config feature
 .SH SYNOPSIS
index f366d15e00a00eede25c338069635c09adb14e83..ab637cac8474f7e5ae59cc782510bb397ca4a39e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_lba_range" 9 "nvme_set_features_lba_range" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_lba_range" 9 "nvme_set_features_lba_range" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_lba_range \- Set LBA range feature
 .SH SYNOPSIS
index ca5238c474000cf57ea268bb33200445ad3c7d47..3391c6e689e8653150f9a2b1a525863cb67c111e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_lba_sts_interval" 9 "nvme_set_features_lba_sts_interval" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_lba_sts_interval" 9 "nvme_set_features_lba_sts_interval" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_lba_sts_interval \- Set LBA status information feature
 .SH SYNOPSIS
index 78370165a47279acf8df6c48071b00d71e2cc138..21eddf14e1d499746b8b38356a1e749e995a57e1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_nopsc" 9 "nvme_set_features_nopsc" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_nopsc" 9 "nvme_set_features_nopsc" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_nopsc \- Set non-operational power state feature
 .SH SYNOPSIS
index acc006286981b2fa21a17c1631f9f29227309875..dec33b58ce817173d63eaeeb9bb8bf74774202cd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_plm_config" 9 "nvme_set_features_plm_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_plm_config" 9 "nvme_set_features_plm_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_plm_config \- Set predictable latency feature
 .SH SYNOPSIS
index dc9e537614ede3fcf68a9ed738d58ef3d69fb56b..39a112e95530f1c384d47ae20ac384eb4d96fefa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_plm_window" 9 "nvme_set_features_plm_window" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_plm_window" 9 "nvme_set_features_plm_window" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_plm_window \- Set window select feature
 .SH SYNOPSIS
index 7a662b6fe1b35d801f3e42fb6d34dfc0df73808c..6a67b4bf4f7d1e73bd8526ce666507f99e10198b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_power_mgmt" 9 "nvme_set_features_power_mgmt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_power_mgmt" 9 "nvme_set_features_power_mgmt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_power_mgmt \- Set power management feature
 .SH SYNOPSIS
index b283bbddd548633f301d8f9da4b825ef6ee88199..0cb6559955b374b69b01522922c0d3c3f763a3ea 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_resv_mask" 9 "nvme_set_features_resv_mask" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_resv_mask" 9 "nvme_set_features_resv_mask" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_resv_mask \- Set reservation notification mask feature
 .SH SYNOPSIS
index 57e9a31255cd98f708a3221bb58e0702897c1529..1561187ae820cabd28ce00246863b44ae8b40948 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_resv_persist" 9 "nvme_set_features_resv_persist" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_resv_persist" 9 "nvme_set_features_resv_persist" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_resv_persist \- Set persist through power loss feature
 .SH SYNOPSIS
index 0b35db18034aa1fd8ac00c6478b336e642d1cb77..1b4f2120871d6b672d3753c67e4cc0da2f0a4cba 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_rrl" 9 "nvme_set_features_rrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_rrl" 9 "nvme_set_features_rrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_rrl \- Set read recovery level feature
 .SH SYNOPSIS
index 5e874dba7b8cbef1a284548faf451a0635cd780e..4b8c0426ac0f1d61ee9b94b12eb0ec01a022a7da 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_sanitize" 9 "nvme_set_features_sanitize" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_sanitize" 9 "nvme_set_features_sanitize" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_sanitize \- Set sanitize feature
 .SH SYNOPSIS
index 1d82a396beaa1bc92536821e5e0dc5cb6bb96e68..b17c500721b6d313c58a950a65b25fa3027bef73 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_simple" 9 "nvme_set_features_simple" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_simple" 9 "nvme_set_features_simple" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_simple \- Helper function for @nvme_set_features()
 .SH SYNOPSIS
index 0350bfdd2ddbaa91a6d4636ee1daffa0c61d965a..642fb205c3f82fa2ec99f216acb9f0418e43c8fa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_sw_progress" 9 "nvme_set_features_sw_progress" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_sw_progress" 9 "nvme_set_features_sw_progress" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_sw_progress \- Set pre-boot software load count feature
 .SH SYNOPSIS
index b04ccbd661a78cc4ce1f6a7d6eceb84525c5099e..8df46381626784ffc319fb2564df6fc102ad9c70 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_temp_thresh" 9 "nvme_set_features_temp_thresh" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_temp_thresh" 9 "nvme_set_features_temp_thresh" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_temp_thresh \- Set temperature threshold feature
 .SH SYNOPSIS
index 3c572cf8dc39d1da68b9b1e932778e97f2f6623f..5ada471cb29f45ac0e48b25177b7d7ef88529d60 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_timestamp" 9 "nvme_set_features_timestamp" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_timestamp" 9 "nvme_set_features_timestamp" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_timestamp \- Set timestamp feature
 .SH SYNOPSIS
index ca05ebc40af180d5cf647a7f2af1989b2348fee2..88658cb75e67cd96d8aab47d9b5bd82a744c4f3f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_volatile_wc" 9 "nvme_set_features_volatile_wc" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_volatile_wc" 9 "nvme_set_features_volatile_wc" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_volatile_wc \- Set volatile write cache feature
 .SH SYNOPSIS
index bf7d80f6d0ef457f8f55511fc2568d0329f8b1b9..94a920836ae7a80126a6372d9f82eedc0f949932 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_write_atomic" 9 "nvme_set_features_write_atomic" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_write_atomic" 9 "nvme_set_features_write_atomic" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_write_atomic \- Set write atomic feature
 .SH SYNOPSIS
index 3106cd7cee75e56cd24775114c7096ee4ad9e7fa..b8af3f808e116fe85abd5ed19a4f51915d3154f4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_features_write_protect" 9 "nvme_set_features_write_protect" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_features_write_protect" 9 "nvme_set_features_write_protect" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_features_write_protect \- Set write protect feature
 .SH SYNOPSIS
index e15b5738e334fa695abdaf8f23c53afeed7d8b16..4ce4d1f98e370e586ab3410c9e43bfee14496585 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_set_property" 9 "nvme_set_property" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_set_property" 9 "nvme_set_property" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_set_property \- Set controller property
 .SH SYNOPSIS
index 5dd636c5dc0fb762282a4993bac0f389719b1954..b9a1c55d42ad1825a6f7b688be00143269ea3765 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_smart_crit" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_smart_crit" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_smart_crit \- Critical Warning
 .SH SYNOPSIS
index 2f191049d2791620f7bbe8fb071f32d390db6bbb..83716ffd12c55cb4387c7af0bca414b2432add45 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_smart_egcw" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_smart_egcw" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_smart_egcw \- Endurance Group Critical Warning Summary
 .SH SYNOPSIS
index 32acefdb8d733e7f30cee38e69c1e8db6eddf168..fe4c65f9413efb37e1ace499fded6d3ce98b2aec 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_smart_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_smart_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_smart_log \- SMART / Health Information Log (Log Identifier 02h)
 .SH SYNOPSIS
index 0bff08d9547e0960fee354bb6c4cab29f2ffaa20..625b0bf0b937edcbcf656b67c42c8f8389e28d45 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_st_code" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_st_code" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_st_code \- Self-test Code value
 .SH SYNOPSIS
@@ -20,6 +20,10 @@ enum nvme_st_code {
 , 
 .br
 .br
+.BI "    NVME_ST_CODE_ABORT"
+, 
+.br
+.br
 .BI "    NVME_ST_CODE_SHIFT"
 
 };
@@ -32,6 +36,8 @@ Short device self-test operation.
 Extended device self-test operation.
 .IP "NVME_ST_CODE_VS" 12
 Vendor specific.
+.IP "NVME_ST_CODE_ABORT" 12
+Abort device self-test operation.
 .IP "NVME_ST_CODE_SHIFT" 12
 Shift amount to get the code value from the
 \fIstruct nvme_st_result\fP.dsts field.
index fc1983030419f48a0b510df6e876e4e7759ca602..11733abb3bcf880bfffbf9d57a63c6c9a18ee0c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_st_curr_op" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_st_curr_op" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_st_curr_op \- Current Device Self-Test Operation
 .SH SYNOPSIS
index e4dca2b5097d376a98c4cc67bd401f7bc92f06d1..bd52e2d83d021c39ceecc9c88e44635ed8ee9350 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_st_result" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_st_result" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_st_result \- Self-test Result
 .SH SYNOPSIS
index 8fc5b96d9adb0c5e95cbf3bf6f2ad8692525b5ae..2267645c31e5086f4cbf8a654c0206e48e059ed9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_st_valid_diag_info" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_st_valid_diag_info" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_st_valid_diag_info \- Valid Diagnostic Information
 .SH SYNOPSIS
index 84e6b7bf55c31d0929e22f24ee9e27b7f463be97..34a4406ce867f380386f63ec762836d7da0ed0d4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_code" 9 "nvme_status_code" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_code" 9 "nvme_status_code" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_code \- Returns the NVMe Status Code
 .SH SYNOPSIS
index eacecb20fd018ea27ff730f17458d684f726ee58..6ba2454d95931424723125da91f41c8e024bb0dd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_code_type" 9 "nvme_status_code_type" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_code_type" 9 "nvme_status_code_type" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_code_type \- Returns the NVMe Status Code Type
 .SH SYNOPSIS
index 55c3def91fb8d8b00d2cad63b86a78dbe87d7b15..3203ee4a24977b6776d0e92e25ea7c540c4ca7d9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_equals" 9 "nvme_status_equals" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_equals" 9 "nvme_status_equals" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_equals \- helper to check a status against a type and value
 .SH SYNOPSIS
index e3234fc397c384aa3bdc2570bb581b3de617bac5..e5df43f2320913fd0948e1399119e68d6c92eab6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_status_field" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_status_field" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_status_field \- Defines all parts of the nvme status field: status code, status code type, and additional flags.
 .SH SYNOPSIS
index addbea4175ec0cea71c2df3afa9e2c7404b6dda2..6e5bfaa4714fe3122f6b10b6bb0cd746c1fadacc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_get_type" 9 "nvme_status_get_type" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_get_type" 9 "nvme_status_get_type" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_get_type \- extract the type from a nvme_* return value
 .SH SYNOPSIS
index fbef5fa1fd63b8755240869b2f22b59e73090a46..4037129b23255a1f2043b099512c62d60e1891c5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_get_value" 9 "nvme_status_get_value" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_get_value" 9 "nvme_status_get_value" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_get_value \- extract the status value from a nvme_* return value
 .SH SYNOPSIS
index df79a397c2ec66c150c2948d767144465ead6674..341cf43daad321333cba249ea5b7509b29b5a5c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_status_result" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_status_result" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_status_result \- Result of the device self-test operation
 .SH SYNOPSIS
index c047ed667b0d3bb96907fdc75b807e9dc54531fd..b244b98e1af561cbc04d3fa4ef60731e31c119c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_to_errno" 9 "nvme_status_to_errno" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_to_errno" 9 "nvme_status_to_errno" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_to_errno \- Converts nvme return status to errno
 .SH SYNOPSIS
index 614224d473d666694dbaba90e441ad8e9e7a55c6..608f3146bf0fa8ecc01143c9777de0bc22050e97 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_status_to_string" 9 "nvme_status_to_string" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_status_to_string" 9 "nvme_status_to_string" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_status_to_string \- Returns string describing nvme return status.
 .SH SYNOPSIS
index 60056eef6c22af2e854bbe1b3e6a890a3b8a17ed..aa761286e3f7583a57ffbdf79f25c93b07d31d81 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_status_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_status_type" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_status_type \- type encoding for NVMe return values, when represented as an int.
 .SH SYNOPSIS
index 3313701dc5709acf8c657c6d2355f77090516b97..f0b44efe9f4c27f06f911325924d6e425a561011 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_streams_directive_params" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_streams_directive_params" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_streams_directive_params \- Streams Directive - Return Parameters Data Structure
 .SH SYNOPSIS
index df9c96dcecaa13ea9c214cdc46e659d77a70e319..9eaa423ede84bd6c7814db3ceff1f1a44033add3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_streams_directive_status" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_streams_directive_status" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_streams_directive_status \- Streams Directive - Get Status Data Structure
 .SH SYNOPSIS
index f507a8cf2c6518de1b37e7286b399e8c1124a8c6..ee20a75886f3d59f23593ab1888af5e4f6420e35 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_submit_admin_passthru" 9 "nvme_submit_admin_passthru" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_submit_admin_passthru" 9 "nvme_submit_admin_passthru" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_submit_admin_passthru \- Submit an nvme passthrough admin command
 .SH SYNOPSIS
index 730eef3ab690a8cffa68c5444d07dc32618ad5be..48d6795bf90098f4303e74af7fbae9c4a1ee7da8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_submit_admin_passthru64" 9 "nvme_submit_admin_passthru64" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_submit_admin_passthru64" 9 "nvme_submit_admin_passthru64" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_submit_admin_passthru64 \- Submit a 64-bit nvme passthrough admin command
 .SH SYNOPSIS
index bacbe3e010ab7c405619e2998e5a1f265ebc2653..b8f70f1a5365edec1b3d2ddabb628f0d749b4f2a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_submit_io_passthru" 9 "nvme_submit_io_passthru" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_submit_io_passthru" 9 "nvme_submit_io_passthru" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_submit_io_passthru \- Submit an nvme passthrough command
 .SH SYNOPSIS
index 3d77f5732978dac61dfae833ab1269cfc1f93fd5..00bfbe0a332bfc9dabf482ee5643a8649ea7dab5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_submit_io_passthru64" 9 "nvme_submit_io_passthru64" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_submit_io_passthru64" 9 "nvme_submit_io_passthru64" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_submit_io_passthru64 \- Submit a 64-bit nvme passthrough command
 .SH SYNOPSIS
index 79322585b2d2d82ca023226535acff7d284aa0e9..d8bee4044b8d38c2d9df9cd7a1def443187600d5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsys_filter" 9 "nvme_subsys_filter" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsys_filter" 9 "nvme_subsys_filter" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsys_filter \- Filter for subsystems
 .SH SYNOPSIS
index dcfe0c8227bea2977656116e2760299e8c042b50..45e90ada7065de3905d5f9420afd4f2e82df3c45 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_subsys_type" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_subsys_type" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_subsys_type \- Type of the NVM subsystem.
 .SH SYNOPSIS
index d87bb62e3f446ef778a6e5b361e8129328c8c44f..84fbf6b42548b71f4e7a12269bc99c123d567175 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_first_ctrl" 9 "nvme_subsystem_first_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_first_ctrl" 9 "nvme_subsystem_first_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_first_ctrl \- First ctrl iterator
 .SH SYNOPSIS
index ac30d574f3986924c9b45914f75ec34f9b4abfab..b0a319303e7313d43681ef63d1b6bf3f18833f10 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_first_ns" 9 "nvme_subsystem_first_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_first_ns" 9 "nvme_subsystem_first_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_first_ns \- Start namespace iterator
 .SH SYNOPSIS
index 7b695c9e26af5c90777326fb8a20e0103f362832..2b286278cd7db4e1b175dafa5a14deeffa7cb0c4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_for_each_ctrl" 9 "nvme_subsystem_for_each_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_for_each_ctrl" 9 "nvme_subsystem_for_each_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_for_each_ctrl \- Traverse controllers
 .SH SYNOPSIS
index 4bfde84b477bfe9dc14f01420b5cfe13c40a7b7b..33efe94953ac88785ee8e8ba4c5b24f1a4c0cf19 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_for_each_ctrl_safe" 9 "nvme_subsystem_for_each_ctrl_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_for_each_ctrl_safe" 9 "nvme_subsystem_for_each_ctrl_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_for_each_ctrl_safe \- Traverse controllers
 .SH SYNOPSIS
index f5d210f53a3dedd2ccdc73a5be768dcf1f5af2e7..111ad1f318a49cb851ee4c28f18d02a48b2e8699 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_for_each_ns" 9 "nvme_subsystem_for_each_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_for_each_ns" 9 "nvme_subsystem_for_each_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_for_each_ns \- Traverse namespaces
 .SH SYNOPSIS
index 19e24805e768a972c37d0449686615376554b0aa..8a82dd3cfe41c88d4b20fd4c533124be34c0828a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_for_each_ns_safe" 9 "nvme_subsystem_for_each_ns_safe" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_for_each_ns_safe" 9 "nvme_subsystem_for_each_ns_safe" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_for_each_ns_safe \- Traverse namespaces
 .SH SYNOPSIS
index 79e7e95043d5e2cda559efd848665235d32526e8..9cea0f2ad785a652f318b92f34115d5e0654da94 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_get_host" 9 "nvme_subsystem_get_host" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_get_host" 9 "nvme_subsystem_get_host" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_get_host \- Returns nvme_host_t object
 .SH SYNOPSIS
index b0138e83cbaec4e1e23caa44cdd1df3ba4651d0c..61a6e65849ba3ed28a4a1e78cce73508988a7599 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_get_name" 9 "nvme_subsystem_get_name" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_get_name" 9 "nvme_subsystem_get_name" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_get_name \- sysfs name of an nvme_subsystem_t object
 .SH SYNOPSIS
index e3cd0ec2d933eab61dc657c7e43acdfdf8c1d9f8..288f25dd6216f04145192feebb64da4429c2e85c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_get_nqn" 9 "nvme_subsystem_get_nqn" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_get_nqn" 9 "nvme_subsystem_get_nqn" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_get_nqn \- Retrieve NQN from subsystem
 .SH SYNOPSIS
index 9e28b43d3f987a61e5df37eb751dbdb4cd84e9fb..ee5e1779c46cd8680d3be83e38a28fee38530abd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_get_sysfs_dir" 9 "nvme_subsystem_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_get_sysfs_dir" 9 "nvme_subsystem_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_get_sysfs_dir \- sysfs directory of an nvme_subsystem_t object
 .SH SYNOPSIS
index 766819f73891b44d2a99cace1aec466c0635e0dc..4ea69501d90904fe13975c26a7dd468a8e690a64 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_get_type" 9 "nvme_subsystem_get_type" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_get_type" 9 "nvme_subsystem_get_type" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_get_type \- Returns the type of a subsystem
 .SH SYNOPSIS
index ad850baa3668f98ede724ac193cd43adfb4a6e62..d7e23dad14b63db6196df38f1e0bcd8497a11f6b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_lookup_namespace" 9 "nvme_subsystem_lookup_namespace" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_lookup_namespace" 9 "nvme_subsystem_lookup_namespace" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_lookup_namespace \- lookup namespace by NSID
 .SH SYNOPSIS
index 8a2d2dcd6849b6910f6bac930b21baf8f001386a..5d874966cfed0ad852626c5fd37d1a73b46609cb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_next_ctrl" 9 "nvme_subsystem_next_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_next_ctrl" 9 "nvme_subsystem_next_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_next_ctrl \- Next ctrl iterator
 .SH SYNOPSIS
index 9ac9d1479b7267553e2c5cefc1ba28f5468bf84e..8c4c2258f133e253b87bf8ce26cd57adc8ca43d6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_next_ns" 9 "nvme_subsystem_next_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_next_ns" 9 "nvme_subsystem_next_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_next_ns \- Next namespace iterator
 .SH SYNOPSIS
index 5e5fb99b21e4e8ea4c7e7c72a8f37af1150ec349..492289a2d423bb089de355762e4a6bcc8ab5abee 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_subsystem_reset" 9 "nvme_subsystem_reset" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_subsystem_reset" 9 "nvme_subsystem_reset" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_subsystem_reset \- Initiate a subsystem reset
 .SH SYNOPSIS
index 2f904db0520287e73db85711e7c5b2bfdae7d2c7..0d71f505703bef9f26bea669aa3522512ec91921 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_supported_cap_config_list_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_supported_cap_config_list_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_supported_cap_config_list_log \- Supported Capacity Configuration list log page
 .SH SYNOPSIS
index 1e083d52d6ccc808737cf368740600942212b29c..541d1aaef3871ddba057facaa04be4bb5e434478 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_supported_log_pages" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_supported_log_pages" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_supported_log_pages \- Supported Log Pages - Log
 .SH SYNOPSIS
index 447f110c890f7ef6ec4ed1a765d52d68f21961a2..609723b74f6743ae53a03435de89315d67d4582d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_telemetry_da" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_telemetry_da" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_telemetry_da \- Telemetry Log Data Area
 .SH SYNOPSIS
index 56e47ca01b87d4ef732745c221399319e54734b8..416b6796755cfbad47e7fcdbc88f08ec6ee3280c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_telemetry_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_telemetry_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_telemetry_log \- Retrieve internal data specific to the manufacturer.
 .SH SYNOPSIS
index 69b9b0863a8f848b917dbb6025c4164956bb5cad..764d28af0963af0ff85ae0a10e66a01b9821d59d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_thermal_exc_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_thermal_exc_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_thermal_exc_event \- Thermal Excursion Event Data
 .SH SYNOPSIS
index 648ab3cf4c0c0641bff6b5bfbf3f3d4a0c24bdbe..f8213663028831ce04c3403f93b61201a1436eaf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_time_stamp_change_event" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_time_stamp_change_event" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_time_stamp_change_event \- Timestamp Change Event
 .SH SYNOPSIS
index 6811763664903e9f0c58d92dde80dc6fbabd284a..9a4d4e0a7e771ceb85fabe40d5f5c055652f51b9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_timestamp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_timestamp" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_timestamp \- Timestamp - Data Structure for Get Features
 .SH SYNOPSIS
index 444fac2a7a8f9999bb30dc5fed28b769504e68eb..452a49d3e1926b20865f8bcc09826059e5df2db9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_unlink_ctrl" 9 "nvme_unlink_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_unlink_ctrl" 9 "nvme_unlink_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_unlink_ctrl \- Unlink controller
 .SH SYNOPSIS
index fe7614a032084aae72ad3e651b0de9e7f5365d06..26883c44e2500d16f591dc15ee5d914e13c0b49d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_update_config" 9 "nvme_update_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_update_config" 9 "nvme_update_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_update_config \- Update JSON configuration
 .SH SYNOPSIS
index 76c70a2db1ae01edc4da802420054e1e16be1f8c..90809f93d135c4eaec21bd4bfeb85dafd7a3134d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_uring_cmd" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_uring_cmd" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_uring_cmd \- nvme uring command structure
 .SH SYNOPSIS
index 3bab7588d645e0da3778c822e5c23614f6c2c429..87013381488197a09d6ab4c514675f98d1037d2a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_verify" 9 "nvme_verify" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_verify" 9 "nvme_verify" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_verify \- Send an nvme verify command
 .SH SYNOPSIS
index dcf837fd0242455ef60da861ae115ddd30d5d806..02a88d50d72849c5e2079d159adb2b7fe2347d69 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_version" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_version" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_version \- Selector for version to be returned by @nvme_get_version
 .SH SYNOPSIS
index 0fe6da000a5ad018ab959e2b2b49db07ac0caedf..c4000aec1a0d1dd2640cba56d1964a004c8e284d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_virt_mgmt_act" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_virt_mgmt_act" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_virt_mgmt_act \- Virtualization Management - Action
 .SH SYNOPSIS
index 31c0996c469fba4c21012771b7876433dc44f25a..f6c0f2c521ea9001bf73cdefeec1c5ec64b97eb3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_virt_mgmt_rt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_virt_mgmt_rt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_virt_mgmt_rt \- Virtualization Management - Resource Type
 .SH SYNOPSIS
index ccce5d0d1905f268801dc9155c7bbf6109c8b33b..a30fce64ce67fae1c1bbb9b080b4fb7100b6b456 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_virtual_mgmt" 9 "nvme_virtual_mgmt" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_virtual_mgmt" 9 "nvme_virtual_mgmt" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_virtual_mgmt \- Virtualization resource management
 .SH SYNOPSIS
index 82b7f4623687931c6c55edb59465373e714441c7..5f93252b7abe29050ff304f092f222da9deae343 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_write" 9 "nvme_write" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_write" 9 "nvme_write" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_write \- Submit an nvme user write command
 .SH SYNOPSIS
index 2c4ff91eea5c69eee762d885e0b6b3b764a1d365..c421bd14efcaced76d69647e6e299ac7c9092cb9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_write_uncorrectable" 9 "nvme_write_uncorrectable" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_write_uncorrectable" 9 "nvme_write_uncorrectable" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_write_uncorrectable \- Submit an nvme write uncorrectable command
 .SH SYNOPSIS
index 0a8a31e235d7bf2e3e492479077e8f4d99989a00..4bd47caee36ef7d7d75d1599ffe5bc34b878c6a2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_write_zeros" 9 "nvme_write_zeros" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_write_zeros" 9 "nvme_write_zeros" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_write_zeros \- Submit an nvme write zeroes command
 .SH SYNOPSIS
index 8c053aaba5896fdce7a780c930e7a49ee144b62b..29d3cdd687ae5ee69519e2a93fc80633bdd090cb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_zns_append" 9 "nvme_zns_append" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_zns_append" 9 "nvme_zns_append" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_zns_append \- Append data to a zone
 .SH SYNOPSIS
index 532d6c8df991299f9eb82ca53e1a1da3ac1a9a51..b3341025794879cbbef80e3d296e26b53b208a33 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_zns_changed_zone_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_zns_changed_zone_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_zns_changed_zone_log \- ZNS Changed Zone List log
 .SH SYNOPSIS
index 61c6faf7e7036e5ea34d57cb5c3599b151275c0b..5628f08173596cf1c64bb80706e810785e473805 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_zns_desc" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_zns_desc" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_zns_desc \- Zone Descriptor Data Structure
 .SH SYNOPSIS
index 9435814c7f63e6154f75a803b58b90d4506ebf5a..0291be219f2998482ec45438968c9a49bc618fc4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_zns_id_ctrl" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_zns_id_ctrl" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_zns_id_ctrl \- I/O Command Set Specific Identify Controller Data Structure for the Zoned Namespace Command Set
 .SH SYNOPSIS
index ca31bcf879952b8467432c1db0af4c2e5349ad64..1bfc0051d629e170730a6d9f7654455635b12b7d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_zns_id_ns" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_zns_id_ns" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_zns_id_ns \- Zoned Namespace Command Set Specific Identify Namespace Data Structure
 .SH SYNOPSIS
index b7aa90826e819ef1cb28fdd184d600cb0e38e36c..0334264cfe1b173e579a4a0a27ad30ef0a1d7770 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_zns_identify_ctrl" 9 "nvme_zns_identify_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_zns_identify_ctrl" 9 "nvme_zns_identify_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_zns_identify_ctrl \- ZNS identify controller data
 .SH SYNOPSIS
index b021df3018f2cb05baf27a2a22ed254d03f7cec2..716939727c2a34db2bb4b173383e1e0b53c1f8ca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_zns_identify_ns" 9 "nvme_zns_identify_ns" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_zns_identify_ns" 9 "nvme_zns_identify_ns" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_zns_identify_ns \- ZNS identify namespace data
 .SH SYNOPSIS
index fe25273d1f21f0a310e96df897904c4a49c45624..0fdb2c5ba7dc5fe6327bfb474d854bc9741c3b28 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_zns_lbafe" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_zns_lbafe" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_zns_lbafe \- LBA Format Extension Data Structure
 .SH SYNOPSIS
index bd0caf62e83f8e7519cef00434309542c83aea1f..2f88f271736327a44bcd77c27e800bd140867f73 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_zns_mgmt_recv" 9 "nvme_zns_mgmt_recv" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_zns_mgmt_recv" 9 "nvme_zns_mgmt_recv" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_zns_mgmt_recv \- ZNS management receive command
 .SH SYNOPSIS
index 017f44f6ef7a78b48bb24829a20fecd1d980cdeb..40d16a4765b3b58944aa0e607abe2a9b1a2502ef 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_zns_mgmt_send" 9 "nvme_zns_mgmt_send" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_zns_mgmt_send" 9 "nvme_zns_mgmt_send" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_zns_mgmt_send \- ZNS management send command
 .SH SYNOPSIS
index b6f249b2906c027253a6fd8720f255c7c99c4d87..4063c74d0753283384ae01966912823b802dfdc3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_zns_recv_action" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_zns_recv_action" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_zns_recv_action \- Zone Management Receive - Zone Receive Action Specific Features
 .SH SYNOPSIS
index 1396181dff94476abe0081bf2d76a4defbee6d3e..c09de4a5b3252cbb7a4c606acca225ec08dcd0cb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_zns_report_options" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_zns_report_options" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_zns_report_options \- Zone Management Receive - Zone Receive Action Specific Field
 .SH SYNOPSIS
index 51f8cd2d3a7dc1e7de16b1d791d361ef485d2e4f..777efbff4b91a5f6ca571fe9ff73cf4ea38dab5a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvme_zns_report_zones" 9 "nvme_zns_report_zones" "October 2022" "libnvme API manual" LINUX
+.TH "nvme_zns_report_zones" 9 "nvme_zns_report_zones" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvme_zns_report_zones \- Return the list of zones
 .SH SYNOPSIS
index 073fa8bbef3dd5198395642e92e8201d1aa86072..afc38fdf20de59b846e3e7c7278a7a6d5f64c0da 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_zns_send_action" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_zns_send_action" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_zns_send_action \- Zone Management Send - Zone Send Action
 .SH SYNOPSIS
index c2d387a8328996c279169b714ae42192f3ccca09..7beb8cb75b72ed69633d791e9e68110af53e906c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_zns_za" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_zns_za" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_zns_za \- Zone Descriptor Data Structure
 .SH SYNOPSIS
index 05fd4f08bb0d3af162409a123917ae2f88ddfa2e..f84a29e94dd7751808f1887bfc51658f92695c28 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_zns_zs" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_zns_zs" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_zns_zs \- Zone Descriptor Data Structure - Zone State
 .SH SYNOPSIS
index 3051a4fa231959268e2033117aa64cbe2718a633..ce74dfe4a016d3d644bbe7490fa0ea3ac130c503 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvme_zns_zt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvme_zns_zt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvme_zns_zt \- Zone Descriptor Data Structure - Zone Type
 .SH SYNOPSIS
index 98cedb1e94ea025342211eab1fdd6e8c06d126d1..f056485ac3a46489f392fce2f842c98ecd2f35cc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvme_zone_report" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvme_zone_report" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvme_zone_report \- Report Zones Data Structure
 .SH SYNOPSIS
index 4da7085c6b32efebee378f5712021ccd0fa60c9a..0bf00930e3299722b94383fe7f45612784f50270 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_add_ctrl" 9 "nvmf_add_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_add_ctrl" 9 "nvmf_add_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_add_ctrl \- Connect a controller and update topology
 .SH SYNOPSIS
index d55d386221c1a0f3cb3bd30b64e8d9e761368436..6de153ab13f4fe641a6b470f63c37cefdeb458e2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_addr_family" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_addr_family" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_addr_family \- Address Family codes for Discovery Log Page entry ADRFAM field
 .SH SYNOPSIS
index f0e7dad07b5fbdfa1ad6b44fa99a79f2353e5c27..e462754c07424cf0472b6c58c58a4a93bbcaae15 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_adrfam_str" 9 "nvmf_adrfam_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_adrfam_str" 9 "nvmf_adrfam_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_adrfam_str \- Decode ADRFAM field
 .SH SYNOPSIS
index b65cc08e5406a2e261758969c17142052e204f09..b7a72aa5bb24b6057799493f8d242b2bdfcc5449 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_cms_str" 9 "nvmf_cms_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_cms_str" 9 "nvmf_cms_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_cms_str \- Decode RDMA connection management service field
 .SH SYNOPSIS
index c32c2a3f06c420c33920b9bfade2209a69870afe..3eec16570e36c92d31960da2f769caa1fd1e3cec 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvmf_connect_data" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvmf_connect_data" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvmf_connect_data \- Data payload for the 'connect' command
 .SH SYNOPSIS
index 5f72f368d4f1e3465f362221dd2de5f4505a6b70..f85bf735dcd34195dd37011fe7a3626973b0bf3e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_connect_disc_entry" 9 "nvmf_connect_disc_entry" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_connect_disc_entry" 9 "nvmf_connect_disc_entry" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_connect_disc_entry \- Connect controller based on the discovery log page entry
 .SH SYNOPSIS
index bd4855c54755e950a237714e7a1460e3a44b0b0f..0261fd3553f06a9e774856f6f3bae95b99f4b79b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_default_config" 9 "nvmf_default_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_default_config" 9 "nvmf_default_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_default_config \- Default values for fabrics configuration
 .SH SYNOPSIS
index 28a56fa1d03353377855f3647885f13aff168305..b4ca81922886157cea3f38c740039f5c965b815e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvmf_dim_data" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvmf_dim_data" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvmf_dim_data \- Discovery Information Management (DIM) - Data
 .SH SYNOPSIS
index 1babab1b3f697304ba2ba40ed3b504516df3b265..eb36feeb9b8e49b5f6afb687f0593fe75b3776ca 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_dim_entfmt" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_dim_entfmt" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_dim_entfmt \- Discovery Information Management Entry Format
 .SH SYNOPSIS
index fd2f7602de19a11a9a2cfa55a6b3dae92f45adc7..dca23112167f9da75f03545c18e8f17c2e751e93 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_dim_etype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_dim_etype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_dim_etype \- Discovery Information Management Entity Type
 .SH SYNOPSIS
index 605c81a27a3ae4a5f6b4799651ecd808bf4608de..8ad29474e42e6aee715cc42edadb20f0d9b593eb 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_dim_tas" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_dim_tas" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_dim_tas \- Discovery Information Management Task
 .SH SYNOPSIS
index ffa91a8e1f183bc331906e10c0eb82c6591467a3..3eaa5828e858d60bf2de1bd523335d0a6edb3daf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_disc_eflags" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_disc_eflags" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_disc_eflags \- Discovery Log Page entry flags.
 .SH SYNOPSIS
index 0faa8b8c04d0472d2ea20cee22e395e81352bac7..e2a53f4044b6dd9a2a06d65793387094ec359036 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvmf_disc_log_entry" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvmf_disc_log_entry" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvmf_disc_log_entry \- Discovery Log Page entry
 .SH SYNOPSIS
index 912644b57157ca5c6a3af5dec3bc6ef26edf2aff..c758fe18bdf0e6568db127118171704a5fb887f7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvmf_discovery_log" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvmf_discovery_log" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvmf_discovery_log \- Discovery Log Page (Log Identifier 70h)
 .SH SYNOPSIS
index 11b9e142abf42dcce23ddef9cce16a17c4f8907c..402bb2b5ebcacc36f08547e3af95a121992cf0a4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_eflags_str" 9 "nvmf_eflags_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_eflags_str" 9 "nvmf_eflags_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_eflags_str \- Decode EFLAGS field
 .SH SYNOPSIS
index b7f9783adc93c482a62ef693b194a785cef9c913..49a393212edf8599d5bce0a2eb953f53d8fc435d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_exat_len" 9 "nvmf_exat_len" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_exat_len" 9 "nvmf_exat_len" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_exat_len \- Return length rounded up by 4
 .SH SYNOPSIS
@@ -6,10 +6,10 @@ nvmf_exat_len \- Return length rounded up by 4
 .BI "(size_t val_len "  ");"
 .SH ARGUMENTS
 .IP "val_len" 12
-Value lenght
+Value length
 .SH "DESCRIPTION"
 Return the size in bytes, rounded to a multiple of 4 (e.g., size of
 __u32), of the buffer needed to hold the exat value of size
 \fIval_len\fP.
 .SH "RETURN"
-Lenght rounded up by 4
+Length rounded up by 4
index 881ec363da11d0a12a23356242987e7c1015da77..16d237b5366ffad93a62f5df283e64a1842e9d52 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_exattype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_exattype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_exattype \- Extended Attribute Type
 .SH SYNOPSIS
index d94b835cf0cde711457d28cf25915489f4a9330e..5d581c86449d88b085244cd0cd2e6b3ede119493 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvmf_ext_attr" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvmf_ext_attr" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvmf_ext_attr \- Extended Attribute (EXAT)
 .SH SYNOPSIS
index c8c1de6f04fcffd2e5784c9b7f6de70df4294333..ccb682f48d81297f6aa8f6839d6f0bd7ed15492e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "struct nvmf_ext_die" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "struct nvmf_ext_die" "January 2023" "API Manual" LINUX
 .SH NAME
 struct nvmf_ext_die \- Extended Discovery Information Entry (DIE)
 .SH SYNOPSIS
index 715fe10edf3de2944a43410b7f095e181386816c..fef0824d00b8be4f079bb52ea29d91d1611f9861 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_get_discovery_log" 9 "nvmf_get_discovery_log" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_get_discovery_log" 9 "nvmf_get_discovery_log" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_get_discovery_log \- Return the discovery log page
 .SH SYNOPSIS
index b07c2f983063e8ec63b226d032277dd657d643c1..d8e77d4aa7b34c521e3a3acbc184fa076771b7e1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_get_discovery_wargs" 9 "nvmf_get_discovery_wargs" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_get_discovery_wargs" 9 "nvmf_get_discovery_wargs" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_get_discovery_wargs \- Get the discovery log page with args
 .SH SYNOPSIS
index 65d6942371f11540715c276a9abc19316b64f1a0..b129ba36857e2ec05487bdbeb0673f7465cdf20b 100644 (file)
@@ -1,6 +1,6 @@
-.TH "nvmf_hostid_from_file" 9 "nvmf_hostid_from_file" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_hostid_from_file" 9 "nvmf_hostid_from_file" "January 2023" "libnvme API manual" LINUX
 .SH NAME
-nvmf_hostid_from_file \- Reads the host identifier from the config default location in /etc/nvme/.
+nvmf_hostid_from_file \- Reads the host identifier from the config default location in /usr/local/etc/nvme/.
 .SH SYNOPSIS
 .B "char *" nvmf_hostid_from_file
 .SH ARGUMENTS
index eaa970113e997b15fab53964b0ab9bf57b4dd591..432322139516a8a39fa3d3d435ce6019521c9761 100644 (file)
@@ -1,6 +1,6 @@
-.TH "nvmf_hostnqn_from_file" 9 "nvmf_hostnqn_from_file" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_hostnqn_from_file" 9 "nvmf_hostnqn_from_file" "January 2023" "libnvme API manual" LINUX
 .SH NAME
-nvmf_hostnqn_from_file \- Reads the host nvm qualified name from the config default location in /etc/nvme/
+nvmf_hostnqn_from_file \- Reads the host nvm qualified name from the config default location in /usr/local/etc/nvme/
 .SH SYNOPSIS
 .B "char *" nvmf_hostnqn_from_file
 .SH ARGUMENTS
index b7a77d6929d3dd4b1f192431bf6310b34c1b05e8..9cb9457e9a6ff05ff072e1c9687ebf8876e29753 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_hostnqn_generate" 9 "nvmf_hostnqn_generate" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_hostnqn_generate" 9 "nvmf_hostnqn_generate" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_hostnqn_generate \- Generate a machine specific host nqn
 .SH SYNOPSIS
index e5bd563cae849e16736b9a6810a68c35f87b01dc..d9c6cc265a9edd2de97741b96a6704bfc4e4d7c4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_log_discovery_lid_support" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_log_discovery_lid_support" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_log_discovery_lid_support \- Discovery log specific support
 .SH SYNOPSIS
index ec2ede118ae956f675c42e33f9d7c25ab7e437b4..e9e91d05d41d25f8be15d6f135a1dc9066368034 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_log_discovery_lsp" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_log_discovery_lsp" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_log_discovery_lsp \- Discovery log specific field
 .SH SYNOPSIS
index 615d854022076b4847f9d2259141f32ff996801b..15d62897a01a9e8a3c3e4d8b66c4120a1ad02e1c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_prtype_str" 9 "nvmf_prtype_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_prtype_str" 9 "nvmf_prtype_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_prtype_str \- Decode RDMA Provider type field
 .SH SYNOPSIS
index b9dea4f3889110e7fc7b6aa8566b736162ba9f2f..d8735730e6d0db4d6ced5f8722bfae7e6cab3f07 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_qptype_str" 9 "nvmf_qptype_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_qptype_str" 9 "nvmf_qptype_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_qptype_str \- Decode RDMA QP Service type field
 .SH SYNOPSIS
index e619dca962819f98c3037ed88bd3bdff6cda9bcd..6c31c01dc9f667c6f0a62a4b6bfbadc4a42ec132 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_rdma_cms" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_rdma_cms" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_rdma_cms \- RDMA Connection Management Service Type codes for Discovery Log Page entry TSAS RDMA_CMS field
 .SH SYNOPSIS
index db1bd066414320beeb8d7f1a1616da97ca4b9295..3ebf9a2b1c830c9dc340203974527b7df45a372b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_rdma_prtype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_rdma_prtype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_rdma_prtype \- RDMA Provider Type codes for Discovery Log Page entry TSAS RDMA_PRTYPE field
 .SH SYNOPSIS
index 06406672e42fc57ec7393344cfbc6c401dcbc606..8be2b64d4365ba9eeb23cf06ff48f67f26b483c0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_rdma_qptype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_rdma_qptype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_rdma_qptype \- RDMA QP Service Type codes for Discovery Log Page entry TSAS RDMA_QPTYPE field
 .SH SYNOPSIS
index 12cab3f0859e3feae9938b2e2e8c3ef290e1c204..43c77d468ebc5fb1a7f1d4bacfce6cc5952d3258 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_register_ctrl" 9 "nvmf_register_ctrl" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_register_ctrl" 9 "nvmf_register_ctrl" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_register_ctrl \- Perform registration task with a DC
 .SH SYNOPSIS
index bd9bc9b8a57bb25e714b29f4da34d4d9fba550d9..d625a349cf6277e58274f3061bd79db600351459 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_sectype_str" 9 "nvmf_sectype_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_sectype_str" 9 "nvmf_sectype_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_sectype_str \- Decode SECTYPE field
 .SH SYNOPSIS
index 13ad38c9deb4f7d149c5cfe49092704a1ae301b2..12ee72846146cbcc153d559a6e19b8fb050de1d4 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_subtype_str" 9 "nvmf_subtype_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_subtype_str" 9 "nvmf_subtype_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_subtype_str \- Decode SUBTYPE field
 .SH SYNOPSIS
index ca97e55e574cfe7d943867eff47239e40329f18b..65c69b12c5b0b7c511a7cf8f414aa1a54a229140 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_tcp_sectype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_tcp_sectype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_tcp_sectype \- Transport Specific Address Subtype Definition for NVMe/TCP Transport
 .SH SYNOPSIS
index f881ecc5467e9ead0bfc1121bbfc757485637f57..200c3ab9f7bd71ce6fbdb38218c877b236c8c7a0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_treq" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_treq" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_treq \- Transport Requirements codes for Discovery Log Page entry TREQ field
 .SH SYNOPSIS
index 8a2b9545be52e86e8f97567d2e8d0e96b6082685..ae02578542ece3e8e3d96095ce2ef8a1322527d6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_treq_str" 9 "nvmf_treq_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_treq_str" 9 "nvmf_treq_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_treq_str \- Decode TREQ field
 .SH SYNOPSIS
index 9db82f19d2769ed276d4a4abe6945f1648099754..b0fe0c246bdafac2c0e37012d93bfaa9a0cd01f9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "libnvme" 9 "enum nvmf_trtype" "October 2022" "API Manual" LINUX
+.TH "libnvme" 9 "enum nvmf_trtype" "January 2023" "API Manual" LINUX
 .SH NAME
 enum nvmf_trtype \- Transport Type codes for Discovery Log Page entry TRTYPE field
 .SH SYNOPSIS
index 53a04c4f3821b5551ccf53967713c492ec94fad7..4926c561f18d61c92219f7afeb0cf35d9d60bc74 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_trtype_str" 9 "nvmf_trtype_str" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_trtype_str" 9 "nvmf_trtype_str" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_trtype_str \- Decode TRTYPE field
 .SH SYNOPSIS
index cc84868eceb8feafd95b0c56c17e0c577a7a0e4f..a4bff1c230dd4e6f25a1d7d201e4fa266be12336 100644 (file)
@@ -1,4 +1,4 @@
-.TH "nvmf_update_config" 9 "nvmf_update_config" "October 2022" "libnvme API manual" LINUX
+.TH "nvmf_update_config" 9 "nvmf_update_config" "January 2023" "libnvme API manual" LINUX
 .SH NAME
 nvmf_update_config \- Update fabrics configuration values
 .SH SYNOPSIS
diff --git a/doc/rst/fabrics.rst b/doc/rst/fabrics.rst
new file mode 100644 (file)
index 0000000..a7e0e60
--- /dev/null
@@ -0,0 +1,521 @@
+.. _fabrics.h:
+
+**fabrics.h**
+
+
+Fabrics-specific definitions.
+
+
+
+.. c:struct:: nvme_fabrics_config
+
+   Defines all linux nvme fabrics initiator options
+
+**Definition**
+
+::
+
+  struct nvme_fabrics_config {
+    char *host_traddr;
+    char *host_iface;
+    int queue_size;
+    int nr_io_queues;
+    int reconnect_delay;
+    int ctrl_loss_tmo;
+    int fast_io_fail_tmo;
+    int keep_alive_tmo;
+    int nr_write_queues;
+    int nr_poll_queues;
+    int tos;
+    bool duplicate_connect;
+    bool disable_sqflow;
+    bool hdr_digest;
+    bool data_digest;
+    bool tls;
+  };
+
+**Members**
+
+``host_traddr``
+  Host transport address
+
+``host_iface``
+  Host interface name
+
+``queue_size``
+  Number of IO queue entries
+
+``nr_io_queues``
+  Number of controller IO queues to establish
+
+``reconnect_delay``
+  Time between two consecutive reconnect attempts.
+
+``ctrl_loss_tmo``
+  Override the default controller reconnect attempt timeout in seconds
+
+``fast_io_fail_tmo``
+  Set the fast I/O fail timeout in seconds.
+
+``keep_alive_tmo``
+  Override the default keep-alive-timeout to this value in seconds
+
+``nr_write_queues``
+  Number of queues to use for exclusively for writing
+
+``nr_poll_queues``
+  Number of queues to reserve for polling completions
+
+``tos``
+  Type of service
+
+``duplicate_connect``
+  Allow multiple connections to the same target
+
+``disable_sqflow``
+  Disable controller sq flow control
+
+``hdr_digest``
+  Generate/verify header digest (TCP)
+
+``data_digest``
+  Generate/verify data digest (TCP)
+
+``tls``
+  Start TLS on the connection (TCP)
+
+
+
+.. c:function:: const char * nvmf_trtype_str (__u8 trtype)
+
+   Decode TRTYPE field
+
+**Parameters**
+
+``__u8 trtype``
+  value to be decoded
+
+**Description**
+
+Decode the transport type field in the discovery
+log page entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_adrfam_str (__u8 adrfam)
+
+   Decode ADRFAM field
+
+**Parameters**
+
+``__u8 adrfam``
+  value to be decoded
+
+**Description**
+
+Decode the address family field in the discovery
+log page entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_subtype_str (__u8 subtype)
+
+   Decode SUBTYPE field
+
+**Parameters**
+
+``__u8 subtype``
+  value to be decoded
+
+**Description**
+
+Decode the subsystem type field in the discovery
+log page entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_treq_str (__u8 treq)
+
+   Decode TREQ field
+
+**Parameters**
+
+``__u8 treq``
+  value to be decoded
+
+**Description**
+
+Decode the transport requirements field in the
+discovery log page entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_eflags_str (__u16 eflags)
+
+   Decode EFLAGS field
+
+**Parameters**
+
+``__u16 eflags``
+  value to be decoded
+
+**Description**
+
+Decode the EFLAGS field in the discovery log page
+entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_sectype_str (__u8 sectype)
+
+   Decode SECTYPE field
+
+**Parameters**
+
+``__u8 sectype``
+  value to be decoded
+
+**Description**
+
+Decode the SECTYPE field in the discovery log page
+entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_prtype_str (__u8 prtype)
+
+   Decode RDMA Provider type field
+
+**Parameters**
+
+``__u8 prtype``
+  value to be decoded
+
+**Description**
+
+Decode the RDMA Provider type field in the discovery
+log page entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_qptype_str (__u8 qptype)
+
+   Decode RDMA QP Service type field
+
+**Parameters**
+
+``__u8 qptype``
+  value to be decoded
+
+**Description**
+
+Decode the RDMA QP Service type field in the discovery log page
+entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: const char * nvmf_cms_str (__u8 cms)
+
+   Decode RDMA connection management service field
+
+**Parameters**
+
+``__u8 cms``
+  value to be decoded
+
+**Description**
+
+Decode the RDMA connection management service field in the discovery
+log page entry.
+
+**Return**
+
+decoded string
+
+
+.. c:function:: void nvmf_default_config (struct nvme_fabrics_config *cfg)
+
+   Default values for fabrics configuration
+
+**Parameters**
+
+``struct nvme_fabrics_config *cfg``
+  config values to set
+
+**Description**
+
+Initializes **cfg** with default values.
+
+
+.. c:function:: void nvmf_update_config (nvme_ctrl_t c, const struct nvme_fabrics_config *cfg)
+
+   Update fabrics configuration values
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to be modified
+
+``const struct nvme_fabrics_config *cfg``
+  Updated configuration values
+
+**Description**
+
+Updates the values from **c** with the configuration values from **cfg**;
+all non-default values from **cfg** will overwrite the values in **c**.
+
+
+.. c:function:: int nvmf_add_ctrl (nvme_host_t h, nvme_ctrl_t c, const struct nvme_fabrics_config *cfg)
+
+   Connect a controller and update topology
+
+**Parameters**
+
+``nvme_host_t h``
+  Host to which the controller should be attached
+
+``nvme_ctrl_t c``
+  Controller to be connected
+
+``const struct nvme_fabrics_config *cfg``
+  Default configuration for the controller
+
+**Description**
+
+Issues a 'connect' command to the NVMe-oF controller and inserts **c**
+into the topology using **h** as parent.
+**c** must be initialized and not connected to the topology.
+
+**Return**
+
+0 on success; on failure errno is set and -1 is returned.
+
+
+.. c:function:: int nvmf_get_discovery_log (nvme_ctrl_t c, struct nvmf_discovery_log **logp, int max_retries)
+
+   Return the discovery log page
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Discovery controller to use
+
+``struct nvmf_discovery_log **logp``
+  Pointer to the log page to be returned
+
+``int max_retries``
+  Number of retries in case of failure
+
+**Description**
+
+The memory allocated for the log page and returned in **logp**
+must be freed by the caller using free().
+
+**Note**
+
+Consider using nvmf_get_discovery_wargs() instead.
+
+**Return**
+
+0 on success; on failure -1 is returned and errno is set
+
+
+
+
+.. c:struct:: nvme_get_discovery_args
+
+   Arguments for nvmf_get_discovery_wargs()
+
+**Definition**
+
+::
+
+  struct nvme_get_discovery_args {
+    nvme_ctrl_t c;
+    int args_size;
+    int max_retries;
+    __u32 *result;
+    __u32 timeout;
+    __u8 lsp;
+  };
+
+**Members**
+
+``c``
+  Discovery controller
+
+``args_size``
+  Length of the structure
+
+``max_retries``
+  Number of retries in case of failure
+
+``result``
+  The command completion result from CQE dword0
+
+``timeout``
+  Timeout in ms (default: NVME_DEFAULT_IOCTL_TIMEOUT)
+
+``lsp``
+  Log specific field (See enum nvmf_log_discovery_lsp)
+
+
+
+.. c:function:: struct nvmf_discovery_log * nvmf_get_discovery_wargs (struct nvme_get_discovery_args *args)
+
+   Get the discovery log page with args
+
+**Parameters**
+
+``struct nvme_get_discovery_args *args``
+  Argument structure
+
+**Description**
+
+This function is similar to nvmf_get_discovery_log(), but
+takes an extensible **args** parameter. **args** provides more
+options than nvmf_get_discovery_log().
+
+This function performs a get discovery log page (DLP) command
+and returns the DLP. The memory allocated for the returned
+DLP must be freed by the caller using free().
+
+**Return**
+
+Pointer to the discovery log page (to be freed). NULL
+on failure and errno is set.
+
+
+.. c:function:: char * nvmf_hostnqn_generate ()
+
+   Generate a machine specific host nqn
+
+**Parameters**
+
+**Return**
+
+An nvm namespace qualified name string based on the machine
+identifier, or NULL if not successful.
+
+
+.. c:function:: char * nvmf_hostnqn_from_file ()
+
+   Reads the host nvm qualified name from the config default location in /usr/local/etc/nvme/
+
+**Parameters**
+
+**Return**
+
+The host nqn, or NULL if unsuccessful. If found, the caller
+is responsible to free the string.
+
+
+.. c:function:: char * nvmf_hostid_from_file ()
+
+   Reads the host identifier from the config default location in /usr/local/etc/nvme/.
+
+**Parameters**
+
+**Return**
+
+The host identifier, or NULL if unsuccessful. If found, the caller
+        is responsible to free the string.
+
+
+.. c:function:: nvme_ctrl_t nvmf_connect_disc_entry (nvme_host_t h, struct nvmf_disc_log_entry *e, const struct nvme_fabrics_config *defcfg, bool *discover)
+
+   Connect controller based on the discovery log page entry
+
+**Parameters**
+
+``nvme_host_t h``
+  Host to which the controller should be connected
+
+``struct nvmf_disc_log_entry *e``
+  Discovery log page entry
+
+``const struct nvme_fabrics_config *defcfg``
+  Default configuration to be used for the new controller
+
+``bool *discover``
+  Set to 'true' if the new controller is a discovery controller
+
+**Return**
+
+Pointer to the new controller
+
+
+.. c:function:: bool nvmf_is_registration_supported (nvme_ctrl_t c)
+
+   check whether registration can be performed.
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Description**
+
+Only discovery controllers (DC) that comply with TP8010 support
+explicit registration with the DIM PDU. These can be identified by
+looking at the value of a dctype in the Identify command
+response. A value of 1 (DDC) or 2 (CDC) indicates that the DC
+supports explicit registration.
+
+**Return**
+
+true if controller supports explicit registration. false
+otherwise.
+
+
+.. c:function:: int nvmf_register_ctrl (nvme_ctrl_t c, enum nvmf_dim_tas tas, __u32 *result)
+
+   Perform registration task with a DC
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+``enum nvmf_dim_tas tas``
+  Task field of the Command Dword 10 (cdw10). Indicates whether to
+  perform a Registration, Deregistration, or Registration-update.
+
+``__u32 *result``
+  The command-specific result returned by the DC upon command
+  completion.
+
+**Description**
+
+Perform registration task with a Discovery Controller (DC). Three
+tasks are supported: register, deregister, and registration update.
+
+**Return**
+
+0 on success; on failure -1 is returned and errno is set
+
+
diff --git a/doc/rst/filters.rst b/doc/rst/filters.rst
new file mode 100644 (file)
index 0000000..3e8c997
--- /dev/null
@@ -0,0 +1,142 @@
+.. _filters.h:
+
+**filters.h**
+
+
+libnvme directory filter
+
+.. c:function:: int nvme_namespace_filter (const struct dirent *d)
+
+   Filter for namespaces
+
+**Parameters**
+
+``const struct dirent *d``
+  dirent to check
+
+**Return**
+
+1 if **d** matches, 0 otherwise
+
+
+.. c:function:: int nvme_paths_filter (const struct dirent *d)
+
+   Filter for paths
+
+**Parameters**
+
+``const struct dirent *d``
+  dirent to check
+
+**Return**
+
+1 if **d** matches, 0 otherwise
+
+
+.. c:function:: int nvme_ctrls_filter (const struct dirent *d)
+
+   Filter for controllers
+
+**Parameters**
+
+``const struct dirent *d``
+  dirent to check
+
+**Return**
+
+1 if **d** matches, 0 otherwise
+
+
+.. c:function:: int nvme_subsys_filter (const struct dirent *d)
+
+   Filter for subsystems
+
+**Parameters**
+
+``const struct dirent *d``
+  dirent to check
+
+**Return**
+
+1 if **d** matches, 0 otherwise
+
+
+.. c:function:: int nvme_scan_subsystems (struct dirent ***subsys)
+
+   Scan for subsystems
+
+**Parameters**
+
+``struct dirent ***subsys``
+  Pointer to array of dirents
+
+**Return**
+
+number of entries in **subsys**
+
+
+.. c:function:: int nvme_scan_subsystem_namespaces (nvme_subsystem_t s, struct dirent ***ns)
+
+   Scan for namespaces in a subsystem
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  Subsystem to scan
+
+``struct dirent ***ns``
+  Pointer to array of dirents
+
+**Return**
+
+number of entries in **ns**
+
+
+.. c:function:: int nvme_scan_ctrls (struct dirent ***ctrls)
+
+   Scan for controllers
+
+**Parameters**
+
+``struct dirent ***ctrls``
+  Pointer to array of dirents
+
+**Return**
+
+number of entries in **ctrls**
+
+
+.. c:function:: int nvme_scan_ctrl_namespace_paths (nvme_ctrl_t c, struct dirent ***paths)
+
+   Scan for namespace paths in a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to scan
+
+``struct dirent ***paths``
+  Pointer to array of dirents
+
+**Return**
+
+number of entries in **paths**
+
+
+.. c:function:: int nvme_scan_ctrl_namespaces (nvme_ctrl_t c, struct dirent ***ns)
+
+   Scan for namespaces in a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to scan
+
+``struct dirent ***ns``
+  Pointer to array of dirents
+
+**Return**
+
+number of entries in **ns**
+
+
diff --git a/doc/rst/ioctl.rst b/doc/rst/ioctl.rst
new file mode 100644 (file)
index 0000000..d0a5173
--- /dev/null
@@ -0,0 +1,4902 @@
+.. _ioctl.h:
+
+**ioctl.h**
+
+
+Linux NVMe ioctl interface functions
+
+
+
+.. c:struct:: nvme_passthru_cmd
+
+   nvme passthrough command structure
+
+**Definition**
+
+::
+
+  struct nvme_passthru_cmd {
+    __u8 opcode;
+    __u8 flags;
+    __u16 rsvd1;
+    __u32 nsid;
+    __u32 cdw2;
+    __u32 cdw3;
+    __u64 metadata;
+    __u64 addr;
+    __u32 metadata_len;
+    __u32 data_len;
+    __u32 cdw10;
+    __u32 cdw11;
+    __u32 cdw12;
+    __u32 cdw13;
+    __u32 cdw14;
+    __u32 cdw15;
+    __u32 timeout_ms;
+    __u32 result;
+  };
+
+**Members**
+
+``opcode``
+  Operation code, see :c:type:`enum nvme_io_opcodes <nvme_io_opcodes>` and :c:type:`enum nvme_admin_opcodes <nvme_admin_opcodes>`
+
+``flags``
+  Not supported: intended for command flags (eg: SGL, FUSE)
+
+``rsvd1``
+  Reserved for future use
+
+``nsid``
+  Namespace Identifier, or Fabrics type
+
+``cdw2``
+  Command Dword 2 (no spec defined use)
+
+``cdw3``
+  Command Dword 3 (no spec defined use)
+
+``metadata``
+  User space address to metadata buffer (NULL if not used)
+
+``addr``
+  User space address to data buffer (NULL if not used)
+
+``metadata_len``
+  Metadata buffer transfer length
+
+``data_len``
+  Data buffer transfer length
+
+``cdw10``
+  Command Dword 10 (command specific)
+
+``cdw11``
+  Command Dword 11 (command specific)
+
+``cdw12``
+  Command Dword 12 (command specific)
+
+``cdw13``
+  Command Dword 13 (command specific)
+
+``cdw14``
+  Command Dword 14 (command specific)
+
+``cdw15``
+  Command Dword 15 (command specific)
+
+``timeout_ms``
+  If non-zero, overrides system default timeout in milliseconds
+
+``result``
+  Set on completion to the command's CQE DWORD 0 controller response
+
+
+
+
+
+.. c:struct:: nvme_passthru_cmd64
+
+   64-bit nvme passthrough command structure
+
+**Definition**
+
+::
+
+  struct nvme_passthru_cmd64 {
+    __u8 opcode;
+    __u8 flags;
+    __u16 rsvd1;
+    __u32 nsid;
+    __u32 cdw2;
+    __u32 cdw3;
+    __u64 metadata;
+    __u64 addr;
+    __u32 metadata_len;
+    __u32 data_len;
+    __u32 cdw10;
+    __u32 cdw11;
+    __u32 cdw12;
+    __u32 cdw13;
+    __u32 cdw14;
+    __u32 cdw15;
+    __u32 timeout_ms;
+    __u32 rsvd2;
+    __u64 result;
+  };
+
+**Members**
+
+``opcode``
+  Operation code, see :c:type:`enum nvme_io_opcodes <nvme_io_opcodes>` and :c:type:`enum nvme_admin_opcodes <nvme_admin_opcodes>`
+
+``flags``
+  Not supported: intended for command flags (eg: SGL, FUSE)
+
+``rsvd1``
+  Reserved for future use
+
+``nsid``
+  Namespace Identifier, or Fabrics type
+
+``cdw2``
+  Command Dword 2 (no spec defined use)
+
+``cdw3``
+  Command Dword 3 (no spec defined use)
+
+``metadata``
+  User space address to metadata buffer (NULL if not used)
+
+``addr``
+  User space address to data buffer (NULL if not used)
+
+``metadata_len``
+  Metadata buffer transfer length
+
+``data_len``
+  Data buffer transfer length
+
+``cdw10``
+  Command Dword 10 (command specific)
+
+``cdw11``
+  Command Dword 11 (command specific)
+
+``cdw12``
+  Command Dword 12 (command specific)
+
+``cdw13``
+  Command Dword 13 (command specific)
+
+``cdw14``
+  Command Dword 14 (command specific)
+
+``cdw15``
+  Command Dword 15 (command specific)
+
+``timeout_ms``
+  If non-zero, overrides system default timeout in milliseconds
+
+``rsvd2``
+  Reserved for future use (and fills an implicit struct pad
+
+``result``
+  Set on completion to the command's CQE DWORD 0-1 controller response
+
+
+
+
+
+.. c:struct:: nvme_uring_cmd
+
+   nvme uring command structure
+
+**Definition**
+
+::
+
+  struct nvme_uring_cmd {
+    __u8 opcode;
+    __u8 flags;
+    __u16 rsvd1;
+    __u32 nsid;
+    __u32 cdw2;
+    __u32 cdw3;
+    __u64 metadata;
+    __u64 addr;
+    __u32 metadata_len;
+    __u32 data_len;
+    __u32 cdw10;
+    __u32 cdw11;
+    __u32 cdw12;
+    __u32 cdw13;
+    __u32 cdw14;
+    __u32 cdw15;
+    __u32 timeout_ms;
+    __u32 rsvd2;
+  };
+
+**Members**
+
+``opcode``
+  Operation code, see :c:type:`enum nvme_io_opcodes <nvme_io_opcodes>` and :c:type:`enum nvme_admin_opcodes <nvme_admin_opcodes>`
+
+``flags``
+  Not supported: intended for command flags (eg: SGL, FUSE)
+
+``rsvd1``
+  Reserved for future use
+
+``nsid``
+  Namespace Identifier, or Fabrics type
+
+``cdw2``
+  Command Dword 2 (no spec defined use)
+
+``cdw3``
+  Command Dword 3 (no spec defined use)
+
+``metadata``
+  User space address to metadata buffer (NULL if not used)
+
+``addr``
+  User space address to data buffer (NULL if not used)
+
+``metadata_len``
+  Metadata buffer transfer length
+
+``data_len``
+  Data buffer transfer length
+
+``cdw10``
+  Command Dword 10 (command specific)
+
+``cdw11``
+  Command Dword 11 (command specific)
+
+``cdw12``
+  Command Dword 12 (command specific)
+
+``cdw13``
+  Command Dword 13 (command specific)
+
+``cdw14``
+  Command Dword 14 (command specific)
+
+``cdw15``
+  Command Dword 15 (command specific)
+
+``timeout_ms``
+  If non-zero, overrides system default timeout in milliseconds
+
+``rsvd2``
+  Reserved for future use (and fills an implicit struct pad
+
+
+
+.. c:macro:: sizeof_args
+
+``sizeof_args (type, member, align)``
+
+   Helper function used to determine structure sizes
+
+**Parameters**
+
+``type``
+  Argument structure type
+
+``member``
+  Member inside the type
+
+``align``
+  Alignment information
+
+
+.. c:function:: int nvme_submit_admin_passthru64 (int fd, struct nvme_passthru_cmd64 *cmd, __u64 *result)
+
+   Submit a 64-bit nvme passthrough admin command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_passthru_cmd64 *cmd``
+  The nvme admin command to send
+
+``__u64 *result``
+  Optional field to return the result from the CQE DW0-1
+
+**Description**
+
+Uses NVME_IOCTL_ADMIN64_CMD for the ioctl request.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_admin_passthru64 (int fd, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13, __u32 cdw14, __u32 cdw15, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u64 *result)
+
+   Submit a 64-bit nvme passthrough command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 opcode``
+  The nvme io command to send
+
+``__u8 flags``
+  NVMe command flags (not used)
+
+``__u16 rsvd``
+  Reserved for future use
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u32 cdw2``
+  Command dword 2
+
+``__u32 cdw3``
+  Command dword 3
+
+``__u32 cdw10``
+  Command dword 10
+
+``__u32 cdw11``
+  Command dword 11
+
+``__u32 cdw12``
+  Command dword 12
+
+``__u32 cdw13``
+  Command dword 13
+
+``__u32 cdw14``
+  Command dword 14
+
+``__u32 cdw15``
+  Command dword 15
+
+``__u32 data_len``
+  Length of the data transferred in this command in bytes
+
+``void *data``
+  Pointer to user address of the data buffer
+
+``__u32 metadata_len``
+  Length of metadata transferred in this command
+
+``void *metadata``
+  Pointer to user address of the metadata buffer
+
+``__u32 timeout_ms``
+  How long the kernel waits for the command to complete
+
+``__u64 *result``
+  Optional field to return the result from the CQE dword 0
+
+**Description**
+
+Parameterized form of nvme_submit_admin_passthru64(). This sets up and
+submits a :c:type:`struct nvme_passthru_cmd64 <nvme_passthru_cmd64>`.
+
+Known values for **opcode** are defined in :c:type:`enum nvme_admin_opcode <nvme_admin_opcode>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_submit_admin_passthru (int fd, struct nvme_passthru_cmd *cmd, __u32 *result)
+
+   Submit an nvme passthrough admin command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_passthru_cmd *cmd``
+  The nvme admin command to send
+
+``__u32 *result``
+  Optional field to return the result from the CQE DW0
+
+**Description**
+
+Uses NVME_IOCTL_ADMIN_CMD for the ioctl request.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_admin_passthru (int fd, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13, __u32 cdw14, __u32 cdw15, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u32 *result)
+
+   Submit an nvme passthrough command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 opcode``
+  The nvme io command to send
+
+``__u8 flags``
+  NVMe command flags (not used)
+
+``__u16 rsvd``
+  Reserved for future use
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u32 cdw2``
+  Command dword 2
+
+``__u32 cdw3``
+  Command dword 3
+
+``__u32 cdw10``
+  Command dword 10
+
+``__u32 cdw11``
+  Command dword 11
+
+``__u32 cdw12``
+  Command dword 12
+
+``__u32 cdw13``
+  Command dword 13
+
+``__u32 cdw14``
+  Command dword 14
+
+``__u32 cdw15``
+  Command dword 15
+
+``__u32 data_len``
+  Length of the data transferred in this command in bytes
+
+``void *data``
+  Pointer to user address of the data buffer
+
+``__u32 metadata_len``
+  Length of metadata transferred in this command
+
+``void *metadata``
+  Pointer to user address of the metadata buffer
+
+``__u32 timeout_ms``
+  How long the kernel waits for the command to complete
+
+``__u32 *result``
+  Optional field to return the result from the CQE dword 0
+
+**Description**
+
+Parameterized form of nvme_submit_admin_passthru(). This sets up and
+submits a :c:type:`struct nvme_passthru_cmd <nvme_passthru_cmd>`.
+
+Known values for **opcode** are defined in :c:type:`enum nvme_admin_opcode <nvme_admin_opcode>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_submit_io_passthru64 (int fd, struct nvme_passthru_cmd64 *cmd, __u64 *result)
+
+   Submit a 64-bit nvme passthrough command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_passthru_cmd64 *cmd``
+  The nvme io command to send
+
+``__u64 *result``
+  Optional field to return the result from the CQE DW0-1
+
+**Description**
+
+Uses NVME_IOCTL_IO64_CMD for the ioctl request.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_io_passthru64 (int fd, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13, __u32 cdw14, __u32 cdw15, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u64 *result)
+
+   Submit an nvme io passthrough command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 opcode``
+  The nvme io command to send
+
+``__u8 flags``
+  NVMe command flags (not used)
+
+``__u16 rsvd``
+  Reserved for future use
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u32 cdw2``
+  Command dword 2
+
+``__u32 cdw3``
+  Command dword 3
+
+``__u32 cdw10``
+  Command dword 10
+
+``__u32 cdw11``
+  Command dword 11
+
+``__u32 cdw12``
+  Command dword 12
+
+``__u32 cdw13``
+  Command dword 13
+
+``__u32 cdw14``
+  Command dword 14
+
+``__u32 cdw15``
+  Command dword 15
+
+``__u32 data_len``
+  Length of the data transferred in this command in bytes
+
+``void *data``
+  Pointer to user address of the data buffer
+
+``__u32 metadata_len``
+  Length of metadata transferred in this command
+
+``void *metadata``
+  Pointer to user address of the metadata buffer
+
+``__u32 timeout_ms``
+  How long the kernel waits for the command to complete
+
+``__u64 *result``
+  Optional field to return the result from the CQE dword 0
+
+**Description**
+
+Parameterized form of nvme_submit_io_passthru64(). This sets up and submits
+a :c:type:`struct nvme_passthru_cmd64 <nvme_passthru_cmd64>`.
+
+Known values for **opcode** are defined in :c:type:`enum nvme_io_opcode <nvme_io_opcode>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_submit_io_passthru (int fd, struct nvme_passthru_cmd *cmd, __u32 *result)
+
+   Submit an nvme passthrough command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_passthru_cmd *cmd``
+  The nvme io command to send
+
+``__u32 *result``
+  Optional field to return the result from the CQE DW0
+
+**Description**
+
+Uses NVME_IOCTL_IO_CMD for the ioctl request.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_io_passthru (int fd, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13, __u32 cdw14, __u32 cdw15, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u32 *result)
+
+   Submit an nvme io passthrough command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 opcode``
+  The nvme io command to send
+
+``__u8 flags``
+  NVMe command flags (not used)
+
+``__u16 rsvd``
+  Reserved for future use
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u32 cdw2``
+  Command dword 2
+
+``__u32 cdw3``
+  Command dword 3
+
+``__u32 cdw10``
+  Command dword 10
+
+``__u32 cdw11``
+  Command dword 11
+
+``__u32 cdw12``
+  Command dword 12
+
+``__u32 cdw13``
+  Command dword 13
+
+``__u32 cdw14``
+  Command dword 14
+
+``__u32 cdw15``
+  Command dword 15
+
+``__u32 data_len``
+  Length of the data transferred in this command in bytes
+
+``void *data``
+  Pointer to user address of the data buffer
+
+``__u32 metadata_len``
+  Length of metadata transferred in this command
+
+``void *metadata``
+  Pointer to user address of the metadata buffer
+
+``__u32 timeout_ms``
+  How long the kernel waits for the command to complete
+
+``__u32 *result``
+  Optional field to return the result from the CQE dword 0
+
+**Description**
+
+Parameterized form of nvme_submit_io_passthru(). This sets up and submits
+a :c:type:`struct nvme_passthru_cmd <nvme_passthru_cmd>`.
+
+Known values for **opcode** are defined in :c:type:`enum nvme_io_opcode <nvme_io_opcode>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_subsystem_reset (int fd)
+
+   Initiate a subsystem reset
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+**Description**
+
+This should only be sent to controller handles, not to namespaces.
+
+**Return**
+
+Zero if a subsystem reset was initiated or -1 with errno set
+otherwise.
+
+
+.. c:function:: int nvme_ctrl_reset (int fd)
+
+   Initiate a controller reset
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+**Description**
+
+This should only be sent to controller handles, not to namespaces.
+
+**Return**
+
+0 if a reset was initiated or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_rescan (int fd)
+
+   Initiate a controller rescan
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+**Description**
+
+This should only be sent to controller handles, not to namespaces.
+
+**Return**
+
+0 if a rescan was initiated or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_nsid (int fd, __u32 *nsid)
+
+   Retrieve the NSID from a namespace file descriptor
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme namespace
+
+``__u32 *nsid``
+  User pointer to namespace id
+
+**Description**
+
+This should only be sent to namespace handles, not to controllers. The
+kernel's interface returns the nsid as the return value. This is unfortunate
+for many architectures that are incapable of allowing distinguishing a
+namespace id > 0x80000000 from a negative error number.
+
+**Return**
+
+0 if **nsid** was set successfully or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify (struct nvme_identify_args *args)
+
+   Send the NVMe Identify command
+
+**Parameters**
+
+``struct nvme_identify_args *args``
+  :c:type:`struct nvme_identify_args <nvme_identify_args>` argument structure
+
+**Description**
+
+The Identify command returns a data buffer that describes information about
+the NVM subsystem, the controller or the namespace(s).
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ctrl (int fd, struct nvme_id_ctrl *id)
+
+   Retrieves nvme identify controller
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_id_ctrl *id``
+  User space destination address to transfer the data,
+
+**Description**
+
+Sends nvme identify with CNS value ``NVME_IDENTIFY_CNS_CTRL``.
+
+See :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>` for details on the data returned.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ns (int fd, __u32 nsid, struct nvme_id_ns *ns)
+
+   Retrieves nvme identify namespace
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace to identify
+
+``struct nvme_id_ns *ns``
+  User space destination address to transfer the data
+
+**Description**
+
+If the Namespace Identifier (NSID) field specifies an active NSID, then the
+Identify Namespace data structure is returned to the host for that specified
+namespace.
+
+If the controller supports the Namespace Management capability and the NSID
+field is set to ``NVME_NSID_ALL``, then the controller returns an Identify Namespace
+data structure that specifies capabilities that are common across namespaces
+for this controller.
+
+See :c:type:`struct nvme_id_ns <nvme_id_ns>` for details on the structure returned.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_allocated_ns (int fd, __u32 nsid, struct nvme_id_ns *ns)
+
+   Same as nvme_identify_ns, but only for allocated namespaces
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace to identify
+
+``struct nvme_id_ns *ns``
+  User space destination address to transfer the data
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_active_ns_list (int fd, __u32 nsid, struct nvme_ns_list *list)
+
+   Retrieves active namespaces id list
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Return namespaces greater than this identifier
+
+``struct nvme_ns_list *list``
+  User space destination address to transfer the data
+
+**Description**
+
+A list of 1024 namespace IDs is returned to the host containing NSIDs in
+increasing order that are greater than the value specified in the Namespace
+Identifier (nsid) field of the command.
+
+See :c:type:`struct nvme_ns_list <nvme_ns_list>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_allocated_ns_list (int fd, __u32 nsid, struct nvme_ns_list *list)
+
+   Retrieves allocated namespace id list
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Return namespaces greater than this identifier
+
+``struct nvme_ns_list *list``
+  User space destination address to transfer the data
+
+**Description**
+
+A list of 1024 namespace IDs is returned to the host containing NSIDs in
+increasing order that are greater than the value specified in the Namespace
+Identifier (nsid) field of the command.
+
+See :c:type:`struct nvme_ns_list <nvme_ns_list>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ctrl_list (int fd, __u16 cntid, struct nvme_ctrl_list *cntlist)
+
+   Retrieves identify controller list
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 cntid``
+  Starting CNTLID to return in the list
+
+``struct nvme_ctrl_list *cntlist``
+  User space destination address to transfer the data
+
+**Description**
+
+Up to 2047 controller identifiers is returned containing a controller
+identifier greater than or equal to the controller identifier  specified in
+**cntid**.
+
+See :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>` for a definition of the structure returned.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_nsid_ctrl_list (int fd, __u32 nsid, __u16 cntid, struct nvme_ctrl_list *cntlist)
+
+   Retrieves controller list attached to an nsid
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Return controllers that are attached to this nsid
+
+``__u16 cntid``
+  Starting CNTLID to return in the list
+
+``struct nvme_ctrl_list *cntlist``
+  User space destination address to transfer the data
+
+**Description**
+
+Up to 2047 controller identifiers are returned containing a controller
+identifier greater than or equal to the controller identifier  specified in
+**cntid** attached to **nsid**.
+
+See :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>` for a definition of the structure returned.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1
+
+
+.. c:function:: int nvme_identify_ns_descs (int fd, __u32 nsid, struct nvme_ns_id_desc *descs)
+
+   Retrieves namespace descriptor list
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  The namespace id to retrieve descriptors
+
+``struct nvme_ns_id_desc *descs``
+  User space destination address to transfer the data
+
+**Description**
+
+A list of Namespace Identification Descriptor structures is returned to the
+host for the namespace specified in the Namespace Identifier (NSID) field if
+it is an active NSID.
+
+The data returned is in the form of an array of 'struct nvme_ns_id_desc'.
+
+See :c:type:`struct nvme_ns_id_desc <nvme_ns_id_desc>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_nvmset_list (int fd, __u16 nvmsetid, struct nvme_id_nvmset_list *nvmset)
+
+   Retrieves NVM Set List
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 nvmsetid``
+  NVM Set Identifier
+
+``struct nvme_id_nvmset_list *nvmset``
+  User space destination address to transfer the data
+
+**Description**
+
+Retrieves an NVM Set List, :c:type:`struct nvme_id_nvmset_list <nvme_id_nvmset_list>`. The data structure
+is an ordered list by NVM Set Identifier, starting with the first NVM Set
+Identifier supported by the NVM subsystem that is equal to or greater than
+the NVM Set Identifier.
+
+See :c:type:`struct nvme_id_nvmset_list <nvme_id_nvmset_list>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_primary_ctrl (int fd, __u16 cntid, struct nvme_primary_ctrl_cap *cap)
+
+   Retrieve NVMe Primary Controller identification
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 cntid``
+  Return controllers starting at this identifier
+
+``struct nvme_primary_ctrl_cap *cap``
+  User space destination buffer address to transfer the data
+
+**Description**
+
+See :c:type:`struct nvme_primary_ctrl_cap <nvme_primary_ctrl_cap>` for the definition of the returned structure, **cap**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_secondary_ctrl_list (int fd, __u32 nsid, __u16 cntid, struct nvme_secondary_ctrl_list *sc_list)
+
+   Retrieves secondary controller list
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u16 cntid``
+  Return controllers starting at this identifier
+
+``struct nvme_secondary_ctrl_list *sc_list``
+  User space destination address to transfer the data
+
+**Description**
+
+A Secondary Controller List is returned to the host for up to 127 secondary
+controllers associated with the primary controller processing this command.
+The list contains entries for controller identifiers greater than or equal
+to the value specified in the Controller Identifier (cntid).
+
+See :c:type:`struct nvme_secondary_ctrls_list <nvme_secondary_ctrls_list>` for a definition of the returned
+structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ns_granularity (int fd, struct nvme_id_ns_granularity_list *gr_list)
+
+   Retrieves namespace granularity identification
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_id_ns_granularity_list *gr_list``
+  User space destination address to transfer the data
+
+**Description**
+
+If the controller supports reporting of Namespace Granularity, then a
+Namespace Granularity List is returned to the host for up to sixteen
+namespace granularity descriptors
+
+See :c:type:`struct nvme_id_ns_granularity_list <nvme_id_ns_granularity_list>` for the definition of the returned
+structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_uuid (int fd, struct nvme_id_uuid_list *uuid_list)
+
+   Retrieves device's UUIDs
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_id_uuid_list *uuid_list``
+  User space destination address to transfer the data
+
+**Description**
+
+Each UUID List entry is either 0h, the NVMe Invalid UUID, or a valid UUID.
+Valid UUIDs are those which are non-zero and are not the NVMe Invalid UUID.
+
+See :c:type:`struct nvme_id_uuid_list <nvme_id_uuid_list>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ns_csi (int fd, __u32 nsid, __u8 uuidx, enum nvme_csi csi, void *data)
+
+   I/O command set specific identify namespace data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace to identify
+
+``__u8 uuidx``
+  UUID Index for differentiating vendor specific encoding
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``void *data``
+  User space destination address to transfer the data
+
+**Description**
+
+An I/O Command Set specific Identify Namespace data structure is returned
+for the namespace specified in **nsid**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ctrl_csi (int fd, enum nvme_csi csi, void *data)
+
+   I/O command set specific Identify Controller data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``void *data``
+  User space destination address to transfer the data
+
+**Description**
+
+An I/O Command Set specific Identify Controller data structure is returned
+to the host for the controller processing the command. The specific Identify
+Controller data structure to be returned is specified by **csi**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_active_ns_list_csi (int fd, __u32 nsid, enum nvme_csi csi, struct nvme_ns_list *ns_list)
+
+   Active namespace ID list associated with a specified I/O command set
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Return namespaces greater than this identifier
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``struct nvme_ns_list *ns_list``
+  User space destination address to transfer the data
+
+**Description**
+
+A list of 1024 namespace IDs is returned to the host containing active
+NSIDs in increasing order that are greater than the value specified in
+the Namespace Identifier (nsid) field of the command and matching the
+I/O Command Set specified in the **csi** argument.
+
+See :c:type:`struct nvme_ns_list <nvme_ns_list>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_allocated_ns_list_csi (int fd, __u32 nsid, enum nvme_csi csi, struct nvme_ns_list *ns_list)
+
+   Allocated namespace ID list associated with a specified I/O command set
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Return namespaces greater than this identifier
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``struct nvme_ns_list *ns_list``
+  User space destination address to transfer the data
+
+**Description**
+
+A list of 1024 namespace IDs is returned to the host containing allocated
+NSIDs in increasing order that are greater than the value specified in
+the **nsid** field of the command and matching the I/O Command Set
+specified in the **csi** argument.
+
+See :c:type:`struct nvme_ns_list <nvme_ns_list>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_independent_identify_ns (int fd, __u32 nsid, struct nvme_id_independent_id_ns *ns)
+
+   I/O command set independent Identify namespace data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Return namespaces greater than this identifier
+
+``struct nvme_id_independent_id_ns *ns``
+  I/O Command Set Independent Identify Namespace data
+  structure
+
+**Description**
+
+The I/O command set independent Identify namespace data structure for
+the namespace identified with **ns** is returned to the host.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_ns_csi_user_data_format (int fd, __u16 user_data_format, __u8 uuidx, enum nvme_csi csi, void *data)
+
+   Identify namespace user data format
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 user_data_format``
+  Return namespaces capability of identifier
+
+``__u8 uuidx``
+  UUID selection, if supported
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``void *data``
+  User space destination address to transfer the data
+
+**Description**
+
+Identify Namespace data structure for the specified User Data Format
+index containing the namespace capabilities for the NVM Command Set.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_iocs_ns_csi_user_data_format (int fd, __u16 user_data_format, __u8 uuidx, enum nvme_csi csi, void *data)
+
+   Identify I/O command set namespace data structure
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 user_data_format``
+  Return namespaces capability of identifier
+
+``__u8 uuidx``
+  UUID selection, if supported
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``void *data``
+  User space destination address to transfer the data
+
+**Description**
+
+I/O Command Set specific Identify Namespace data structure for
+the specified User Data Format index containing the namespace
+capabilities for the I/O Command Set specified in the CSI field.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_nvm_identify_ctrl (int fd, struct nvme_id_ctrl_nvm *id)
+
+   Identify controller data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_id_ctrl_nvm *id``
+  User space destination address to transfer the data
+
+**Description**
+
+Return an identify controller data structure to the host of
+processing controller.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_domain_list (int fd, __u16 domid, struct nvme_id_domain_list *list)
+
+   Domain list data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 domid``
+  Domain ID
+
+``struct nvme_id_domain_list *list``
+  User space destination address to transfer data
+
+**Description**
+
+A list of 31 domain IDs is returned to the host containing domain
+attributes in increasing order that are greater than the value
+specified in the **domid** field.
+
+See :c:type:`struct nvme_identify_domain_attr <nvme_identify_domain_attr>` for the definition of the
+returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_endurance_group_list (int fd, __u16 endgrp_id, struct nvme_id_endurance_group_list *list)
+
+   Endurance group list data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 endgrp_id``
+  Endurance group identifier
+
+``struct nvme_id_endurance_group_list *list``
+  Array of endurance group identifiers
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_identify_iocs (int fd, __u16 cntlid, struct nvme_id_iocs *iocs)
+
+   I/O command set data structure
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 cntlid``
+  Controller ID
+
+``struct nvme_id_iocs *iocs``
+  User space destination address to transfer the data
+
+**Description**
+
+Retrieves list of the controller's supported io command set vectors. See
+:c:type:`struct nvme_id_iocs <nvme_id_iocs>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_zns_identify_ns (int fd, __u32 nsid, struct nvme_zns_id_ns *data)
+
+   ZNS identify namespace data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace to identify
+
+``struct nvme_zns_id_ns *data``
+  User space destination address to transfer the data
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_zns_identify_ctrl (int fd, struct nvme_zns_id_ctrl *id)
+
+   ZNS identify controller data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_zns_id_ctrl *id``
+  User space destination address to transfer the data
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log (struct nvme_get_log_args *args)
+
+   NVMe Admin Get Log command
+
+**Parameters**
+
+``struct nvme_get_log_args *args``
+  :c:type:`struct nvme_get_log_args <nvme_get_log_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_page (int fd, __u32 xfer_len, struct nvme_get_log_args *args)
+
+   Get log page data
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 xfer_len``
+  Max log transfer size per request to split the total.
+
+``struct nvme_get_log_args *args``
+  :c:type:`struct nvme_get_log_args <nvme_get_log_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_supported_log_pages (int fd, bool rae, struct nvme_supported_log_pages *log)
+
+   Retrieve nmve supported log pages
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_supported_log_pages *log``
+  Array of LID supported and Effects data structures
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_error (int fd, unsigned int nr_entries, bool rae, struct nvme_error_log_page *err_log)
+
+   Retrieve nvme error log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``unsigned int nr_entries``
+  Number of error log entries allocated
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_error_log_page *err_log``
+  Array of error logs of size 'entries'
+
+**Description**
+
+This log page describes extended error information for a command that
+completed with error, or may report an error that is not specific to a
+particular command.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_smart (int fd, __u32 nsid, bool rae, struct nvme_smart_log *smart_log)
+
+   Retrieve nvme smart log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Optional namespace identifier
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_smart_log *smart_log``
+  User address to store the smart log
+
+**Description**
+
+This log page provides SMART and general health information. The information
+provided is over the life of the controller and is retained across power
+cycles. To request the controller log page, the namespace identifier
+specified is FFFFFFFFh. The controller may also support requesting the log
+page on a per namespace basis, as indicated by bit 0 of the LPA field in the
+Identify Controller data structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_fw_slot (int fd, bool rae, struct nvme_firmware_slot *fw_log)
+
+   Retrieves the controller firmware log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_firmware_slot *fw_log``
+  User address to store the log page
+
+**Description**
+
+This log page describes the firmware revision stored in each firmware slot
+supported. The firmware revision is indicated as an ASCII string. The log
+page also indicates the active slot number.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_changed_ns_list (int fd, bool rae, struct nvme_ns_list *ns_log)
+
+   Retrieve namespace changed list
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_ns_list *ns_log``
+  User address to store the log page
+
+**Description**
+
+This log page describes namespaces attached to this controller that have
+changed since the last time the namespace was identified, been added, or
+deleted.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_cmd_effects (int fd, enum nvme_csi csi, struct nvme_cmd_effects_log *effects_log)
+
+   Retrieve nvme command effects log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``struct nvme_cmd_effects_log *effects_log``
+  User address to store the effects log
+
+**Description**
+
+This log page describes the commands that the controller supports and the
+effects of those commands on the state of the NVM subsystem.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_device_self_test (int fd, struct nvme_self_test_log *log)
+
+   Retrieve the device self test log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_self_test_log *log``
+  Userspace address of the log payload
+
+**Description**
+
+The log page indicates the status of an in progress self test and the
+percent complete of that operation, and the results of the previous 20
+self-test operations.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_create_telemetry_host (int fd, struct nvme_telemetry_log *log)
+
+   Create host telemetry log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_telemetry_log *log``
+  Userspace address of the log payload
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_telemetry_host (int fd, __u64 offset, __u32 len, void *log)
+
+   Get Telemetry Host-Initiated log page
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u64 offset``
+  Offset into the telemetry data
+
+``__u32 len``
+  Length of provided user buffer to hold the log data in bytes
+
+``void *log``
+  User address for log page data
+
+**Description**
+
+Retrieves the Telemetry Host-Initiated log page at the requested offset
+using the previously existing capture.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_telemetry_ctrl (int fd, bool rae, __u64 offset, __u32 len, void *log)
+
+   Get Telemetry Controller-Initiated log page
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u64 offset``
+  Offset into the telemetry data
+
+``__u32 len``
+  Length of provided user buffer to hold the log data in bytes
+
+``void *log``
+  User address for log page data
+
+**Description**
+
+Retrieves the Telemetry Controller-Initiated log page at the requested offset
+using the previously existing capture.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_endurance_group (int fd, __u16 endgid, struct nvme_endurance_group_log *log)
+
+   Get Endurance Group log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 endgid``
+  Starting group identifier to return in the list
+
+``struct nvme_endurance_group_log *log``
+  User address to store the endurance log
+
+**Description**
+
+This log page indicates if an Endurance Group Event has occurred for a
+particular Endurance Group. If an Endurance Group Event has occurred, the
+details of the particular event are included in the Endurance Group
+Information log page for that Endurance Group. An asynchronous event is
+generated when an entry for an Endurance Group is newly added to this log
+page.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_predictable_lat_nvmset (int fd, __u16 nvmsetid, struct nvme_nvmset_predictable_lat_log *log)
+
+   Predictable Latency Per NVM Set
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 nvmsetid``
+  NVM set id
+
+``struct nvme_nvmset_predictable_lat_log *log``
+  User address to store the predictable latency log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_predictable_lat_event (int fd, bool rae, __u32 offset, __u32 len, void *log)
+
+   Retrieve Predictable Latency Event Aggregate Log Page
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 offset``
+  Offset into the predictable latency event
+
+``__u32 len``
+  Length of provided user buffer to hold the log data in bytes
+
+``void *log``
+  User address for log page data
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_fdp_configurations (int fd, __u16 egid, __u32 offset, __u32 len, void *log)
+
+   Get list of Flexible Data Placement configurations
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 egid``
+  Endurance group identifier
+
+``__u32 offset``
+  Offset into log page
+
+``__u32 len``
+  Length (in bytes) of provided user buffer to hold the log data
+
+``void *log``
+  Log page data buffer
+
+
+.. c:function:: int nvme_get_log_reclaim_unit_handle_usage (int fd, __u16 egid, __u32 offset, __u32 len, void *log)
+
+   Get reclaim unit handle usage
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 egid``
+  Endurance group identifier
+
+``__u32 offset``
+  Offset into log page
+
+``__u32 len``
+  Length (in bytes) of provided user buffer to hold the log data
+
+``void *log``
+  Log page data buffer
+
+
+.. c:function:: int nvme_get_log_fdp_stats (int fd, __u16 egid, __u32 offset, __u32 len, void *log)
+
+   Get Flexible Data Placement statistics
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 egid``
+  Endurance group identifier
+
+``__u32 offset``
+  Offset into log page
+
+``__u32 len``
+  Length (in bytes) of provided user buffer to hold the log data
+
+``void *log``
+  Log page data buffer
+
+
+.. c:function:: int nvme_get_log_fdp_events (int fd, __u16 egid, bool host_events, __u32 offset, __u32 len, void *log)
+
+   Get Flexible Data Placement events
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 egid``
+  Endurance group identifier
+
+``bool host_events``
+  Whether to report host or controller events
+
+``__u32 offset``
+  Offset into log page
+
+``__u32 len``
+  Length (in bytes) of provided user buffer to hold the log data
+
+``void *log``
+  Log page data buffer
+
+
+.. c:function:: int nvme_get_log_ana (int fd, enum nvme_log_ana_lsp lsp, bool rae, __u64 offset, __u32 len, void *log)
+
+   Retrieve Asymmetric Namespace Access log page
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_log_ana_lsp lsp``
+  Log specific, see :c:type:`enum nvme_get_log_ana_lsp <nvme_get_log_ana_lsp>`
+
+``bool rae``
+  Retain asynchronous events
+
+``__u64 offset``
+  Offset to the start of the log page
+
+``__u32 len``
+  The allocated length of the log page
+
+``void *log``
+  User address to store the ana log
+
+**Description**
+
+This log consists of a header describing the log and descriptors containing
+the asymmetric namespace access information for ANA Groups that contain
+namespaces that are attached to the controller processing the command.
+
+See :c:type:`struct nvme_ana_rsp_hdr <nvme_ana_rsp_hdr>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_ana_groups (int fd, bool rae, __u32 len, struct nvme_ana_group_desc *log)
+
+   Retrieve Asymmetric Namespace Access groups only log page
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 len``
+  The allocated length of the log page
+
+``struct nvme_ana_group_desc *log``
+  User address to store the ana group log
+
+**Description**
+
+See :c:type:`struct nvme_ana_group_desc <nvme_ana_group_desc>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_lba_status (int fd, bool rae, __u64 offset, __u32 len, void *log)
+
+   Retrieve LBA Status
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u64 offset``
+  Offset to the start of the log page
+
+``__u32 len``
+  The allocated length of the log page
+
+``void *log``
+  User address to store the log page
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_endurance_grp_evt (int fd, bool rae, __u32 offset, __u32 len, void *log)
+
+   Retrieve Rotational Media Information
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 offset``
+  Offset to the start of the log page
+
+``__u32 len``
+  The allocated length of the log page
+
+``void *log``
+  User address to store the log page
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_fid_supported_effects (int fd, bool rae, struct nvme_fid_supported_effects_log *log)
+
+   Retrieve Feature Identifiers Supported and Effects
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_fid_supported_effects_log *log``
+  FID Supported and Effects data structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise
+
+
+.. c:function:: int nvme_get_log_mi_cmd_supported_effects (int fd, bool rae, struct nvme_mi_cmd_supported_effects_log *log)
+
+   displays the MI Commands Supported by the controller
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_mi_cmd_supported_effects_log *log``
+  MI Command Supported and Effects data structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise
+
+
+.. c:function:: int nvme_get_log_boot_partition (int fd, bool rae, __u8 lsp, __u32 len, struct nvme_boot_partition *part)
+
+   Retrieve Boot Partition
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u8 lsp``
+  The log specified field of LID
+
+``__u32 len``
+  The allocated size, minimum
+  struct nvme_boot_partition
+
+``struct nvme_boot_partition *part``
+  User address to store the log page
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise
+
+
+.. c:function:: int nvme_get_log_discovery (int fd, bool rae, __u32 offset, __u32 len, void *log)
+
+   Retrieve Discovery log page
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 offset``
+  Offset of this log to retrieve
+
+``__u32 len``
+  The allocated size for this portion of the log
+
+``void *log``
+  User address to store the discovery log
+
+**Description**
+
+Supported only by fabrics discovery controllers, returning discovery
+records.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_media_unit_stat (int fd, __u16 domid, struct nvme_media_unit_stat_log *mus)
+
+   Retrieve Media Unit Status
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 domid``
+  Domain Identifier selection, if supported
+
+``struct nvme_media_unit_stat_log *mus``
+  User address to store the Media Unit statistics log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise
+
+
+.. c:function:: int nvme_get_log_support_cap_config_list (int fd, __u16 domid, struct nvme_supported_cap_config_list_log *cap)
+
+   Retrieve Supported Capacity Configuration List
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 domid``
+  Domain Identifier selection, if supported
+
+``struct nvme_supported_cap_config_list_log *cap``
+  User address to store supported capabilities config list
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise
+
+
+.. c:function:: int nvme_get_log_reservation (int fd, bool rae, struct nvme_resv_notification_log *log)
+
+   Retrieve Reservation Notification
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_resv_notification_log *log``
+  User address to store the reservation log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise
+
+
+.. c:function:: int nvme_get_log_sanitize (int fd, bool rae, struct nvme_sanitize_log_page *log)
+
+   Retrieve Sanitize Status
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_sanitize_log_page *log``
+  User address to store the sanitize log
+
+**Description**
+
+The Sanitize Status log page reports sanitize operation time estimates and
+information about the most recent sanitize operation.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_zns_changed_zones (int fd, __u32 nsid, bool rae, struct nvme_zns_changed_zone_log *log)
+
+   Retrieve list of zones that have changed
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_zns_changed_zone_log *log``
+  User address to store the changed zone log
+
+**Description**
+
+The list of zones that have changed state due to an exceptional event.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_log_persistent_event (int fd, enum nvme_pevent_log_action action, __u32 size, void *pevent_log)
+
+   Retrieve Persistent Event Log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_pevent_log_action action``
+  Action the controller should take during processing this command
+
+``__u32 size``
+  Size of **pevent_log**
+
+``void *pevent_log``
+  User address to store the persistent event log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features (struct nvme_set_features_args *args)
+
+   Set a feature attribute
+
+**Parameters**
+
+``struct nvme_set_features_args *args``
+  :c:type:`struct nvme_set_features_args <nvme_set_features_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_data (int fd, __u8 fid, __u32 nsid, __u32 cdw11, bool save, __u32 data_len, void *data, __u32 *result)
+
+   Helper function for **nvme_set_features\(\)**
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 fid``
+  Feature identifier
+
+``__u32 nsid``
+  Namespace ID, if applicable
+
+``__u32 cdw11``
+  Value to set the feature to
+
+``bool save``
+  Save value across power states
+
+``__u32 data_len``
+  Length of feature data, if applicable, in bytes
+
+``void *data``
+  User address of feature data, if applicable
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_simple (int fd, __u8 fid, __u32 nsid, __u32 cdw11, bool save, __u32 *result)
+
+   Helper function for **nvme_set_features\(\)**
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 fid``
+  Feature identifier
+
+``__u32 nsid``
+  Namespace ID, if applicable
+
+``__u32 cdw11``
+  Value to set the feature to
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_arbitration (int fd, __u8 ab, __u8 lpw, __u8 mpw, __u8 hpw, bool save, __u32 *result)
+
+   Set arbitration features
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 ab``
+  Arbitration Burst
+
+``__u8 lpw``
+  Low Priority Weight
+
+``__u8 mpw``
+  Medium Priority Weight
+
+``__u8 hpw``
+  High Priority Weight
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_power_mgmt (int fd, __u8 ps, __u8 wh, bool save, __u32 *result)
+
+   Set power management feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 ps``
+  Power State
+
+``__u8 wh``
+  Workload Hint
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_lba_range (int fd, __u32 nsid, __u32 nr_ranges, bool save, struct nvme_lba_range_type *data, __u32 *result)
+
+   Set LBA range feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``__u32 nr_ranges``
+  Number of ranges in **data**
+
+``bool save``
+  Save value across power states
+
+``struct nvme_lba_range_type *data``
+  User address of feature data
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_temp_thresh (int fd, __u16 tmpth, __u8 tmpsel, enum nvme_feat_tmpthresh_thsel thsel, bool save, __u32 *result)
+
+   Set temperature threshold feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 tmpth``
+  Temperature Threshold
+
+``__u8 tmpsel``
+  Threshold Temperature Select
+
+``enum nvme_feat_tmpthresh_thsel thsel``
+  Threshold Type Select
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_err_recovery (int fd, __u32 nsid, __u16 tler, bool dulbe, bool save, __u32 *result)
+
+   Set error recovery feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``__u16 tler``
+  Time-limited error recovery value
+
+``bool dulbe``
+  Deallocated or Unwritten Logical Block Error Enable
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_volatile_wc (int fd, bool wce, bool save, __u32 *result)
+
+   Set volatile write cache feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool wce``
+  Write cache enable
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_irq_coalesce (int fd, __u8 thr, __u8 time, bool save, __u32 *result)
+
+   Set IRQ coalesce feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 thr``
+  Aggregation Threshold
+
+``__u8 time``
+  Aggregation Time
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_irq_config (int fd, __u16 iv, bool cd, bool save, __u32 *result)
+
+   Set IRQ config feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 iv``
+  Interrupt Vector
+
+``bool cd``
+  Coalescing Disable
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_write_atomic (int fd, bool dn, bool save, __u32 *result)
+
+   Set write atomic feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool dn``
+  Disable Normal
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_async_event (int fd, __u32 events, bool save, __u32 *result)
+
+   Set asynchronous event feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 events``
+  Events to enable
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_auto_pst (int fd, bool apste, bool save, struct nvme_feat_auto_pst *apst, __u32 *result)
+
+   Set autonomous power state feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool apste``
+  Autonomous Power State Transition Enable
+
+``bool save``
+  Save value across power states
+
+``struct nvme_feat_auto_pst *apst``
+  Autonomous Power State Transition
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_timestamp (int fd, bool save, __u64 timestamp)
+
+   Set timestamp feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool save``
+  Save value across power states
+
+``__u64 timestamp``
+  The current timestamp value to assign to this feature
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_hctm (int fd, __u16 tmt2, __u16 tmt1, bool save, __u32 *result)
+
+   Set thermal management feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 tmt2``
+  Thermal Management Temperature 2
+
+``__u16 tmt1``
+  Thermal Management Temperature 1
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_nopsc (int fd, bool noppme, bool save, __u32 *result)
+
+   Set non-operational power state feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool noppme``
+  Non-Operational Power State Permissive Mode Enable
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_rrl (int fd, __u8 rrl, __u16 nvmsetid, bool save, __u32 *result)
+
+   Set read recovery level feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 rrl``
+  Read recovery level setting
+
+``__u16 nvmsetid``
+  NVM set id
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_plm_config (int fd, bool enable, __u16 nvmsetid, bool save, struct nvme_plm_config *data, __u32 *result)
+
+   Set predictable latency feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool enable``
+  Predictable Latency Enable
+
+``__u16 nvmsetid``
+  NVM Set Identifier
+
+``bool save``
+  Save value across power states
+
+``struct nvme_plm_config *data``
+  Pointer to structure nvme_plm_config
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_plm_window (int fd, enum nvme_feat_plm_window_select sel, __u16 nvmsetid, bool save, __u32 *result)
+
+   Set window select feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_feat_plm_window_select sel``
+  Window Select
+
+``__u16 nvmsetid``
+  NVM Set Identifier
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_lba_sts_interval (int fd, __u16 lsiri, __u16 lsipi, bool save, __u32 *result)
+
+   Set LBA status information feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 lsiri``
+  LBA Status Information Report Interval
+
+``__u16 lsipi``
+  LBA Status Information Poll Interval
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_host_behavior (int fd, bool save, struct nvme_feat_host_behavior *data)
+
+   Set host behavior feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool save``
+  Save value across power states
+
+``struct nvme_feat_host_behavior *data``
+  Pointer to structure nvme_feat_host_behavior
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_sanitize (int fd, bool nodrm, bool save, __u32 *result)
+
+   Set sanitize feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool nodrm``
+  No-Deallocate Response Mode
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_endurance_evt_cfg (int fd, __u16 endgid, __u8 egwarn, bool save, __u32 *result)
+
+   Set endurance event config feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u16 endgid``
+  Endurance Group Identifier
+
+``__u8 egwarn``
+  Flags to enable warning, see :c:type:`enum nvme_eg_critical_warning_flags <nvme_eg_critical_warning_flags>`
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_sw_progress (int fd, __u8 pbslc, bool save, __u32 *result)
+
+   Set pre-boot software load count feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u8 pbslc``
+  Pre-boot Software Load Count
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_host_id (int fd, bool exhid, bool save, __u8 *hostid)
+
+   Set enable extended host identifiers feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool exhid``
+  Enable Extended Host Identifier
+
+``bool save``
+  Save value across power states
+
+``__u8 *hostid``
+  Host ID to set
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_resv_mask (int fd, __u32 mask, bool save, __u32 *result)
+
+   Set reservation notification mask feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 mask``
+  Reservation Notification Mask Field
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_resv_persist (int fd, bool ptpl, bool save, __u32 *result)
+
+   Set persist through power loss feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool ptpl``
+  Persist Through Power Loss
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_features_write_protect (int fd, enum nvme_feat_nswpcfg_state state, bool save, __u32 *result)
+
+   Set write protect feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_feat_nswpcfg_state state``
+  Write Protection State
+
+``bool save``
+  Save value across power states
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features (struct nvme_get_features_args *args)
+
+   Retrieve a feature attribute
+
+**Parameters**
+
+``struct nvme_get_features_args *args``
+  :c:type:`struct nvme_get_features_args <nvme_get_features_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_data (int fd, enum nvme_features_id fid, __u32 nsid, __u32 data_len, void *data, __u32 *result)
+
+   Helper function for **nvme_get_features\(\)**
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_features_id fid``
+  Feature identifier
+
+``__u32 nsid``
+  Namespace ID, if applicable
+
+``__u32 data_len``
+  Length of feature data, if applicable, in bytes
+
+``void *data``
+  User address of feature data, if applicable
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_simple (int fd, enum nvme_features_id fid, __u32 nsid, __u32 *result)
+
+   Helper function for **nvme_get_features\(\)**
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_features_id fid``
+  Feature identifier
+
+``__u32 nsid``
+  Namespace ID, if applicable
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_arbitration (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get arbitration feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_power_mgmt (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get power management feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_lba_range (int fd, enum nvme_get_features_sel sel, struct nvme_lba_range_type *data, __u32 *result)
+
+   Get LBA range feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``struct nvme_lba_range_type *data``
+  User address of feature data, if applicable
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_temp_thresh (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get temperature threshold feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_err_recovery (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get error recovery feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_volatile_wc (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get volatile write cache feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_num_queues (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get number of queues feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_irq_coalesce (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get IRQ coalesce feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_irq_config (int fd, enum nvme_get_features_sel sel, __u16 iv, __u32 *result)
+
+   Get IRQ config feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u16 iv``
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_write_atomic (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get write atomic feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_async_event (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get asynchronous event feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_auto_pst (int fd, enum nvme_get_features_sel sel, struct nvme_feat_auto_pst *apst, __u32 *result)
+
+   Get autonomous power state feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``struct nvme_feat_auto_pst *apst``
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_host_mem_buf (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get host memory buffer feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_timestamp (int fd, enum nvme_get_features_sel sel, struct nvme_timestamp *ts)
+
+   Get timestamp feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``struct nvme_timestamp *ts``
+  Current timestamp
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_kato (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get keep alive timeout feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_hctm (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get thermal management feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_nopsc (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get non-operational power state feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_rrl (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get read recovery level feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_plm_config (int fd, enum nvme_get_features_sel sel, __u16 nvmsetid, struct nvme_plm_config *data, __u32 *result)
+
+   Get predictable latency feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u16 nvmsetid``
+  NVM set id
+
+``struct nvme_plm_config *data``
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_plm_window (int fd, enum nvme_get_features_sel sel, __u16 nvmsetid, __u32 *result)
+
+   Get window select feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u16 nvmsetid``
+  NVM set id
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_lba_sts_interval (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get LBA status information feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_host_behavior (int fd, enum nvme_get_features_sel sel, struct nvme_feat_host_behavior *data, __u32 *result)
+
+   Get host behavior feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``struct nvme_feat_host_behavior *data``
+  Pointer to structure nvme_feat_host_behavior
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_sanitize (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get sanitize feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_endurance_event_cfg (int fd, enum nvme_get_features_sel sel, __u16 endgid, __u32 *result)
+
+   Get endurance event config feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u16 endgid``
+  Endurance Group Identifier
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_sw_progress (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get software progress feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_host_id (int fd, enum nvme_get_features_sel sel, bool exhid, __u32 len, __u8 *hostid)
+
+   Get host id feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``bool exhid``
+  Enable Extended Host Identifier
+
+``__u32 len``
+  Length of **hostid**
+
+``__u8 *hostid``
+  Buffer for returned host ID
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_resv_mask (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get reservation mask feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_resv_persist (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get reservation persist feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_write_protect (int fd, __u32 nsid, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get write protect feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_features_iocs_profile (int fd, enum nvme_get_features_sel sel, __u32 *result)
+
+   Get IOCS profile feature
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``enum nvme_get_features_sel sel``
+  Select which type of attribute to return, see :c:type:`enum nvme_get_features_sel <nvme_get_features_sel>`
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_format_nvm (struct nvme_format_nvm_args *args)
+
+   Format nvme namespace(s)
+
+**Parameters**
+
+``struct nvme_format_nvm_args *args``
+  :c:type:`struct nvme_format_nvme_args <nvme_format_nvme_args>` argument structure
+
+**Description**
+
+The Format NVM command low level formats the NVM media. This command is used
+by the host to change the LBA data size and/or metadata size. A low level
+format may destroy all data and metadata associated with all namespaces or
+only the specific namespace associated with the command
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_mgmt (struct nvme_ns_mgmt_args *args)
+
+   Issue a Namespace management command
+
+**Parameters**
+
+``struct nvme_ns_mgmt_args *args``
+  :c:type:`struct nvme_ns_mgmt_args <nvme_ns_mgmt_args>` Argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_mgmt_create (int fd, struct nvme_id_ns *ns, __u32 *nsid, __u32 timeout, __u8 csi)
+
+   Create a non attached namespace
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_id_ns *ns``
+  Namespace identification that defines ns creation parameters
+
+``__u32 *nsid``
+  On success, set to the namespace id that was created
+
+``__u32 timeout``
+  Override the default timeout to this value in milliseconds;
+  set to 0 to use the system default.
+
+``__u8 csi``
+  Command Set Identifier
+
+**Description**
+
+On successful creation, the namespace exists in the subsystem, but is not
+attached to any controller. Use the nvme_ns_attach_ctrls() to assign the
+namespace to one or more controllers.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_mgmt_delete (int fd, __u32 nsid)
+
+   Delete a non attached namespace
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace identifier to delete
+
+**Description**
+
+It is recommended that a namespace being deleted is not attached to any
+controller. Use the nvme_ns_detach_ctrls() first if the namespace is still
+attached.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_attach (struct nvme_ns_attach_args *args)
+
+   Attach or detach namespace to controller(s)
+
+**Parameters**
+
+``struct nvme_ns_attach_args *args``
+  :c:type:`struct nvme_ns_attach_args <nvme_ns_attach_args>` Argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_attach_ctrls (int fd, __u32 nsid, struct nvme_ctrl_list *ctrlist)
+
+   Attach namespace to controllers
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID to attach
+
+``struct nvme_ctrl_list *ctrlist``
+  Controller list to modify attachment state of nsid
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_ns_detach_ctrls (int fd, __u32 nsid, struct nvme_ctrl_list *ctrlist)
+
+   Detach namespace from controllers
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID to detach
+
+``struct nvme_ctrl_list *ctrlist``
+  Controller list to modify attachment state of nsid
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_fw_download (struct nvme_fw_download_args *args)
+
+   Download part or all of a firmware image to the controller
+
+**Parameters**
+
+``struct nvme_fw_download_args *args``
+  :c:type:`struct nvme_fw_download_args <nvme_fw_download_args>` argument structure
+
+**Description**
+
+The Firmware Image Download command downloads all or a portion of an image
+for a future update to the controller. The Firmware Image Download command
+downloads a new image (in whole or in part) to the controller.
+
+The image may be constructed of multiple pieces that are individually
+downloaded with separate Firmware Image Download commands. Each Firmware
+Image Download command includes a Dword Offset and Number of Dwords that
+specify a dword range.
+
+The new firmware image is not activated as part of the Firmware Image
+Download command. Use the nvme_fw_commit() to activate a newly downloaded
+image.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_fw_commit (struct nvme_fw_commit_args *args)
+
+   Commit firmware using the specified action
+
+**Parameters**
+
+``struct nvme_fw_commit_args *args``
+  :c:type:`struct nvme_fw_commit_args <nvme_fw_commit_args>` argument structure
+
+**Description**
+
+The Firmware Commit command modifies the firmware image or Boot Partitions.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. The command
+status response may specify additional reset actions required to complete
+the commit process.
+
+
+.. c:function:: int nvme_security_send (struct nvme_security_send_args *args)
+
+   Security Send command
+
+**Parameters**
+
+``struct nvme_security_send_args *args``
+  :c:type:`struct nvme_security_send <nvme_security_send>` argument structure
+
+**Description**
+
+The Security Send command transfers security protocol data to the
+controller. The data structure transferred to the controller as part of this
+command contains security protocol specific commands to be performed by the
+controller. The data structure transferred may also contain data or
+parameters associated with the security protocol commands.
+
+The security data is protocol specific and is not defined by the NVMe
+specification.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_security_receive (struct nvme_security_receive_args *args)
+
+   Security Receive command
+
+**Parameters**
+
+``struct nvme_security_receive_args *args``
+  :c:type:`struct nvme_security_receive <nvme_security_receive>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_lba_status (struct nvme_get_lba_status_args *args)
+
+   Retrieve information on possibly unrecoverable LBAs
+
+**Parameters**
+
+``struct nvme_get_lba_status_args *args``
+  :c:type:`struct nvme_get_lba_status_args <nvme_get_lba_status_args>` argument structure
+
+**Description**
+
+The Get LBA Status command requests information about Potentially
+Unrecoverable LBAs. Refer to the specification for action type descriptions.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_send (struct nvme_directive_send_args *args)
+
+   Send directive command
+
+**Parameters**
+
+``struct nvme_directive_send_args *args``
+  :c:type:`struct nvme_directive_send_args <nvme_directive_send_args>` argument structure
+
+**Description**
+
+Directives is a mechanism to enable host and NVM subsystem or controller
+information exchange. The Directive Send command transfers data related to a
+specific Directive Type from the host to the controller.
+
+See the NVMe specification for more information.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_send_id_endir (int fd, __u32 nsid, bool endir, enum nvme_directive_dtype dtype, struct nvme_id_directives *id)
+
+   Directive Send Enable Directive
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace Identifier
+
+``bool endir``
+  Enable Directive
+
+``enum nvme_directive_dtype dtype``
+  Directive Type
+
+``struct nvme_id_directives *id``
+  Pointer to structure nvme_id_directives
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_send_stream_release_identifier (int fd, __u32 nsid, __u16 stream_id)
+
+   Directive Send Stream release
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``__u16 stream_id``
+  Stream identifier
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_send_stream_release_resource (int fd, __u32 nsid)
+
+   Directive Send Stream release resources
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_recv (struct nvme_directive_recv_args *args)
+
+   Receive directive specific data
+
+**Parameters**
+
+``struct nvme_directive_recv_args *args``
+  :c:type:`struct nvme_directive_recv_args <nvme_directive_recv_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_recv_identify_parameters (int fd, __u32 nsid, struct nvme_id_directives *id)
+
+   Directive receive identifier parameters
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``struct nvme_id_directives *id``
+  Identify parameters buffer
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_recv_stream_parameters (int fd, __u32 nsid, struct nvme_streams_directive_params *parms)
+
+   Directive receive stream parameters
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``struct nvme_streams_directive_params *parms``
+  Streams directive parameters buffer
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_recv_stream_status (int fd, __u32 nsid, unsigned int nr_entries, struct nvme_streams_directive_status *id)
+
+   Directive receive stream status
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``unsigned int nr_entries``
+  Number of streams to receive
+
+``struct nvme_streams_directive_status *id``
+  Stream status buffer
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_directive_recv_stream_allocate (int fd, __u32 nsid, __u16 nsr, __u32 *result)
+
+   Directive receive stream allocate
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``__u16 nsr``
+  Namespace Streams Requested
+
+``__u32 *result``
+  If successful, the CQE dword0 value
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_capacity_mgmt (struct nvme_capacity_mgmt_args *args)
+
+   Capacity management command
+
+**Parameters**
+
+``struct nvme_capacity_mgmt_args *args``
+  :c:type:`struct nvme_capacity_mgmt_args <nvme_capacity_mgmt_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_lockdown (struct nvme_lockdown_args *args)
+
+   Issue lockdown command
+
+**Parameters**
+
+``struct nvme_lockdown_args *args``
+  :c:type:`struct nvme_lockdown_args <nvme_lockdown_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_set_property (struct nvme_set_property_args *args)
+
+   Set controller property
+
+**Parameters**
+
+``struct nvme_set_property_args *args``
+  :c:type:`struct nvme_set_property_args <nvme_set_property_args>` argument structure
+
+**Description**
+
+This is an NVMe-over-Fabrics specific command, not applicable to PCIe. These
+properties align to the PCI MMIO controller registers.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_property (struct nvme_get_property_args *args)
+
+   Get a controller property
+
+**Parameters**
+
+``struct nvme_get_property_args *args``
+  :c:type:`struct nvme_get_propert_args <nvme_get_propert_args>` argument structure
+
+**Description**
+
+This is an NVMe-over-Fabrics specific command, not applicable to PCIe. These
+properties align to the PCI MMIO controller registers.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_sanitize_nvm (struct nvme_sanitize_nvm_args *args)
+
+   Start a sanitize operation
+
+**Parameters**
+
+``struct nvme_sanitize_nvm_args *args``
+  :c:type:`struct nvme_sanitize_nvm_args <nvme_sanitize_nvm_args>` argument structure
+
+**Description**
+
+A sanitize operation alters all user data in the NVM subsystem such that
+recovery of any previous user data from any cache, the non-volatile media,
+or any Controller Memory Buffer is not possible.
+
+The Sanitize command starts a sanitize operation or to recover from a
+previously failed sanitize operation. The sanitize operation types that may
+be supported are Block Erase, Crypto Erase, and Overwrite. All sanitize
+operations are processed in the background, i.e., completion of the sanitize
+command does not indicate completion of the sanitize operation.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_dev_self_test (struct nvme_dev_self_test_args *args)
+
+   Start or abort a self test
+
+**Parameters**
+
+``struct nvme_dev_self_test_args *args``
+  :c:type:`struct nvme_dev_self_test <nvme_dev_self_test>` argument structure
+
+**Description**
+
+The Device Self-test command starts a device self-test operation or abort a
+device self-test operation. A device self-test operation is a diagnostic
+testing sequence that tests the integrity and functionality of the
+controller and may include testing of the media associated with namespaces.
+The controller may return a response to this command immediately while
+running the self-test in the background.
+
+Set the 'nsid' field to 0 to not include namespaces in the test. Set to
+0xffffffff to test all namespaces. All other values tests a specific
+namespace, if present.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_virtual_mgmt (struct nvme_virtual_mgmt_args *args)
+
+   Virtualization resource management
+
+**Parameters**
+
+``struct nvme_virtual_mgmt_args *args``
+  :c:type:`struct nvme_virtual_mgmt_args <nvme_virtual_mgmt_args>` argument structure
+
+**Description**
+
+The Virtualization Management command is supported by primary controllers
+that support the Virtualization Enhancements capability. This command is
+used for several functions:
+
+     - Modifying Flexible Resource allocation for the primary controller
+     - Assigning Flexible Resources for secondary controllers
+     - Setting the Online and Offline state for secondary controllers
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_flush (int fd, __u32 nsid)
+
+   Send an nvme flush command
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace identifier
+
+**Description**
+
+The Flush command requests that the contents of volatile write cache be made
+non-volatile.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_io (struct nvme_io_args *args, __u8 opcode)
+
+   Submit an nvme user I/O command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+``__u8 opcode``
+  Opcode to execute
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_read (struct nvme_io_args *args)
+
+   Submit an nvme user read command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_write (struct nvme_io_args *args)
+
+   Submit an nvme user write command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_compare (struct nvme_io_args *args)
+
+   Submit an nvme user compare command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_write_zeros (struct nvme_io_args *args)
+
+   Submit an nvme write zeroes command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+**Description**
+
+The Write Zeroes command sets a range of logical blocks to zero.  After
+successful completion of this command, the value returned by subsequent
+reads of logical blocks in this range shall be all bytes cleared to 0h until
+a write occurs to this LBA range.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_write_uncorrectable (struct nvme_io_args *args)
+
+   Submit an nvme write uncorrectable command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+**Description**
+
+The Write Uncorrectable command marks a range of logical blocks as invalid.
+When the specified logical block(s) are read after this operation, a failure
+is returned with Unrecovered Read Error status. To clear the invalid logical
+block status, a write operation on those logical blocks is required.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_verify (struct nvme_io_args *args)
+
+   Send an nvme verify command
+
+**Parameters**
+
+``struct nvme_io_args *args``
+  :c:type:`struct nvme_io_args <nvme_io_args>` argument structure
+
+**Description**
+
+The Verify command verifies integrity of stored information by reading data
+and metadata, if applicable, for the LBAs indicated without transferring any
+data or metadata to the host.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_dsm (struct nvme_dsm_args *args)
+
+   Send an nvme data set management command
+
+**Parameters**
+
+``struct nvme_dsm_args *args``
+  :c:type:`struct nvme_dsm_args <nvme_dsm_args>` argument structure
+
+**Description**
+
+The Dataset Management command is used by the host to indicate attributes
+for ranges of logical blocks. This includes attributes like frequency that
+data is read or written, access size, and other information that may be used
+to optimize performance and reliability, and may be used to
+deallocate/unmap/trim those logical blocks.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_copy (struct nvme_copy_args *args)
+
+   Copy command
+
+**Parameters**
+
+``struct nvme_copy_args *args``
+  :c:type:`struct nvme_copy_args <nvme_copy_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_resv_acquire (struct nvme_resv_acquire_args *args)
+
+   Send an nvme reservation acquire
+
+**Parameters**
+
+``struct nvme_resv_acquire_args *args``
+  :c:type:`struct nvme_resv_acquire <nvme_resv_acquire>` argument structure
+
+**Description**
+
+The Reservation Acquire command acquires a reservation on a namespace,
+preempt a reservation held on a namespace, and abort a reservation held on a
+namespace.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_resv_register (struct nvme_resv_register_args *args)
+
+   Send an nvme reservation register
+
+**Parameters**
+
+``struct nvme_resv_register_args *args``
+  :c:type:`struct nvme_resv_register_args <nvme_resv_register_args>` argument structure
+
+**Description**
+
+The Reservation Register command registers, unregisters, or replaces a
+reservation key.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_resv_release (struct nvme_resv_release_args *args)
+
+   Send an nvme reservation release
+
+**Parameters**
+
+``struct nvme_resv_release_args *args``
+  :c:type:`struct nvme_resv_release_args <nvme_resv_release_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_resv_report (struct nvme_resv_report_args *args)
+
+   Send an nvme reservation report
+
+**Parameters**
+
+``struct nvme_resv_report_args *args``
+  struct nvme_resv_report_args argument structure
+
+**Description**
+
+Returns a Reservation Status data structure to memory that describes the
+registration and reservation status of a namespace. See the definition for
+the returned structure, :c:type:`struct nvme_reservation_status <nvme_reservation_status>`, for more details.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_io_mgmt_recv (struct nvme_io_mgmt_recv_args *args)
+
+   I/O Management Receive command
+
+**Parameters**
+
+``struct nvme_io_mgmt_recv_args *args``
+  :c:type:`struct nvme_io_mgmt_recv_args <nvme_io_mgmt_recv_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_fdp_reclaim_unit_handle_status (int fd, __u32 nsid, __u32 data_len, void *data)
+
+   Get reclaim unit handle status
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u32 data_len``
+  Length of response buffer
+
+``void *data``
+  Response buffer
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_io_mgmt_send (struct nvme_io_mgmt_send_args *args)
+
+   I/O Management Send command
+
+**Parameters**
+
+``struct nvme_io_mgmt_send_args *args``
+  :c:type:`struct nvme_io_mgmt_send_args <nvme_io_mgmt_send_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_fdp_reclaim_unit_handle_update (int fd, __u32 nsid, unsigned int npids, __u16 *pids)
+
+   Update a list of reclaim unit handles
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace identifier
+
+``unsigned int npids``
+  Number of placement identifiers
+
+``__u16 *pids``
+  List of placement identifiers
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_zns_mgmt_send (struct nvme_zns_mgmt_send_args *args)
+
+   ZNS management send command
+
+**Parameters**
+
+``struct nvme_zns_mgmt_send_args *args``
+  :c:type:`struct nvme_zns_mgmt_send_args <nvme_zns_mgmt_send_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_zns_mgmt_recv (struct nvme_zns_mgmt_recv_args *args)
+
+   ZNS management receive command
+
+**Parameters**
+
+``struct nvme_zns_mgmt_recv_args *args``
+  :c:type:`struct nvme_zns_mgmt_recv_args <nvme_zns_mgmt_recv_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_zns_report_zones (int fd, __u32 nsid, __u64 slba, enum nvme_zns_report_options opts, bool extended, bool partial, __u32 data_len, void *data, __u32 timeout, __u32 *result)
+
+   Return the list of zones
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID
+
+``__u64 slba``
+  Starting LBA
+
+``enum nvme_zns_report_options opts``
+  Reporting options
+
+``bool extended``
+  Extended report
+
+``bool partial``
+  Partial report requested
+
+``__u32 data_len``
+  Length of the data buffer
+
+``void *data``
+  Userspace address of the report zones data
+
+``__u32 timeout``
+  timeout in ms
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_zns_append (struct nvme_zns_append_args *args)
+
+   Append data to a zone
+
+**Parameters**
+
+``struct nvme_zns_append_args *args``
+  :c:type:`struct nvme_zns_append_args <nvme_zns_append_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_dim_send (struct nvme_dim_args *args)
+
+   Send a Discovery Information Management (DIM) command
+
+**Parameters**
+
+``struct nvme_dim_args *args``
+  :c:type:`struct nvme_dim_args <nvme_dim_args>` argument structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
diff --git a/doc/rst/linux.rst b/doc/rst/linux.rst
new file mode 100644 (file)
index 0000000..4f159f1
--- /dev/null
@@ -0,0 +1,321 @@
+.. _linux.h:
+
+**linux.h**
+
+
+linux-specific utility functions
+
+.. c:function:: int nvme_fw_download_seq (int fd, __u32 size, __u32 xfer, __u32 offset, void *buf)
+
+   Firmware download sequence
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 size``
+  Total size of the firmware image to transfer
+
+``__u32 xfer``
+  Maximum size to send with each partial transfer
+
+``__u32 offset``
+  Starting offset to send with this firmware download
+
+``void *buf``
+  Address of buffer containing all or part of the firmware image.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+
+
+.. c:enum:: nvme_telemetry_da
+
+   Telemetry Log Data Area
+
+**Constants**
+
+``NVME_TELEMETRY_DA_1``
+  Data Area 1
+
+``NVME_TELEMETRY_DA_2``
+  Data Area 2
+
+``NVME_TELEMETRY_DA_3``
+  Data Area 3
+
+``NVME_TELEMETRY_DA_4``
+  Data Area 4
+
+
+.. c:function:: int nvme_get_ctrl_telemetry (int fd, bool rae, struct nvme_telemetry_log **log, enum nvme_telemetry_da da, size_t *size)
+
+   Get controller telemetry log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_telemetry_log **log``
+  On success, set to the value of the allocated and retrieved log.
+
+``enum nvme_telemetry_da da``
+  Log page data area, valid values: :c:type:`enum nvme_telemetry_da <nvme_telemetry_da>`
+
+``size_t *size``
+  Ptr to the telemetry log size, so it can be returned
+
+**Description**
+
+The total size allocated can be calculated as:
+  (nvme_telemetry_log da size  + 1) * NVME_LOG_TELEM_BLOCK_SIZE.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_host_telemetry (int fd, struct nvme_telemetry_log **log, enum nvme_telemetry_da da, size_t *size)
+
+   Get host telemetry log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_telemetry_log **log``
+  On success, set to the value of the allocated and retrieved log.
+
+``enum nvme_telemetry_da da``
+  Log page data area, valid values: :c:type:`enum nvme_telemetry_da <nvme_telemetry_da>`
+
+``size_t *size``
+  Ptr to the telemetry log size, so it can be returned
+
+**Description**
+
+The total size allocated can be calculated as:
+  (nvme_telemetry_log da size  + 1) * NVME_LOG_TELEM_BLOCK_SIZE.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_new_host_telemetry (int fd, struct nvme_telemetry_log **log, enum nvme_telemetry_da da, size_t *size)
+
+   Get new host telemetry log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``struct nvme_telemetry_log **log``
+  On success, set to the value of the allocated and retrieved log.
+
+``enum nvme_telemetry_da da``
+  Log page data area, valid values: :c:type:`enum nvme_telemetry_da <nvme_telemetry_da>`
+
+``size_t *size``
+  Ptr to the telemetry log size, so it can be returned
+
+**Description**
+
+The total size allocated can be calculated as:
+  (nvme_telemetry_log da size  + 1) * NVME_LOG_TELEM_BLOCK_SIZE.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_ana_log_len (int fd, size_t *analen)
+
+   Retrieve size of the current ANA log
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``size_t *analen``
+  Pointer to where the length will be set on success
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_logical_block_size (int fd, __u32 nsid, int *blksize)
+
+   Retrieve block size
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace id
+
+``int *blksize``
+  Pointer to where the block size will be set on success
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_get_lba_status_log (int fd, bool rae, struct nvme_lba_status_log **log)
+
+   Retrieve the LBA Status log page
+
+**Parameters**
+
+``int fd``
+  File descriptor of the nvme device
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_lba_status_log **log``
+  On success, set to the value of the allocated and retrieved log.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_namespace_attach_ctrls (int fd, __u32 nsid, __u16 num_ctrls, __u16 *ctrlist)
+
+   Attach namespace to controller(s)
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID to attach
+
+``__u16 num_ctrls``
+  Number of controllers in ctrlist
+
+``__u16 *ctrlist``
+  List of controller IDs to perform the attach action
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_namespace_detach_ctrls (int fd, __u32 nsid, __u16 num_ctrls, __u16 *ctrlist)
+
+   Detach namespace from controller(s)
+
+**Parameters**
+
+``int fd``
+  File descriptor of nvme device
+
+``__u32 nsid``
+  Namespace ID to detach
+
+``__u16 num_ctrls``
+  Number of controllers in ctrlist
+
+``__u16 *ctrlist``
+  List of controller IDs to perform the detach action
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_open (const char *name)
+
+   Open an nvme controller or namespace device
+
+**Parameters**
+
+``const char *name``
+  The basename of the device to open
+
+**Description**
+
+This will look for the handle in /dev/ and validate the name and filetype
+match linux conventions.
+
+**Return**
+
+A file descriptor for the device on a successful open, or -1 with
+errno set otherwise.
+
+
+
+
+.. c:enum:: nvme_hmac_alg
+
+   HMAC algorithm
+
+**Constants**
+
+``NVME_HMAC_ALG_NONE``
+  No HMAC algorithm
+
+``NVME_HMAC_ALG_SHA2_256``
+  SHA2-256
+
+``NVME_HMAC_ALG_SHA2_384``
+  SHA2-384
+
+``NVME_HMAC_ALG_SHA2_512``
+  SHA2-512
+
+
+.. c:function:: int nvme_gen_dhchap_key (char *hostnqn, enum nvme_hmac_alg hmac, unsigned int key_len, unsigned char *secret, unsigned char *key)
+
+   DH-HMAC-CHAP key generation
+
+**Parameters**
+
+``char *hostnqn``
+  Host NVMe Qualified Name
+
+``enum nvme_hmac_alg hmac``
+  HMAC algorithm
+
+``unsigned int key_len``
+  Output key length
+
+``unsigned char *secret``
+  Secret to used for digest
+
+``unsigned char *key``
+  Generated DH-HMAC-CHAP key
+
+**Return**
+
+If key generation was successful the function returns 0 or
+-1 with errno set otherwise.
+
+
diff --git a/doc/rst/log.rst b/doc/rst/log.rst
new file mode 100644 (file)
index 0000000..45b4689
--- /dev/null
@@ -0,0 +1,30 @@
+.. _log.h:
+
+**log.h**
+
+
+logging functions
+
+.. c:function:: void nvme_init_logging (nvme_root_t r, int lvl, bool log_pid, bool log_tstamp)
+
+   Initialize logging
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t context
+
+``int lvl``
+  Logging level to set
+
+``bool log_pid``
+  Boolean to enable logging of the PID
+
+``bool log_tstamp``
+  Boolean to enable logging of the timestamp
+
+**Description**
+
+Sets the default logging variables for the library.
+
+
diff --git a/doc/rst/mi.rst b/doc/rst/mi.rst
new file mode 100644 (file)
index 0000000..7e82918
--- /dev/null
@@ -0,0 +1,3157 @@
+.. _mi.h - NVMe Management Interface library (libnvme-mi) definitions.:
+
+**mi.h - NVMe Management Interface library (libnvme-mi) definitions.**
+
+
+These provide an abstraction for the MI messaging between controllers
+and a host, typically over an MCTP-over-i2c link to a NVMe device, used
+as part of the out-of-band management of a system.
+
+We have a few data structures define here to reflect the topology
+of a MI connection with an NVMe subsystem:
+
+ - :c:type:`nvme_mi_ep_t`: an MI endpoint - our mechanism of communication with a
+   NVMe subsystem. For MCTP, an endpoint will be the component that
+   holds the MCTP address (EID), and receives our request message.
+
+   endpoints are defined in the NVMe-MI spec, and are specific to the MI
+   interface.
+
+   Each endpoint will provide access to one or more of:
+
+ - :c:type:`nvme_mi_ctrl_t`: a NVMe controller, as defined by the NVMe base spec.
+   The controllers are responsible for processing any NVMe standard
+   commands (eg, the Admin command set). An endpoint (:c:type:`nvme_mi_ep_t`)
+   may provide access to multiple controllers - so each of the controller-
+   type commands will require a :c:type:`nvme_mi_ctrl_t` to be specified, rather than
+   an endpoint
+
+A couple of conventions with the libnvme-mi API:
+
+ - All types and functions have the nvme_mi prefix, to distinguish from
+   the libnvme core.
+
+ - We currently support either MI commands and Admin commands. The
+   former adds a _mi prefix, the latter an _admin prefix. [This does
+   result in the MI functions having a double _mi, like
+   :c:type:`nvme_mi_mi_subsystem_health_status_poll`, which is apparently amusing
+   for our German-speaking readers]
+
+For return values: unless specified in the per-function documentation,
+all functions:
+
+ - return 0 on success
+
+ - return -1, with errno set, for errors communicating with the MI device,
+   either in request or response data
+
+ - return >1 on MI status errors. This value is the 8-bit MI status
+   value, represented by :c:type:`enum nvme_mi_resp_status <nvme_mi_resp_status>`. Note that the
+   status values may be vendor-defined above 0xe0.
+
+For the second case, we have a few conventions for errno values:
+
+ - EPROTO: response data violated the MI protocol, and libnvme cannot
+   validly interpret the response
+
+ - EIO: Other I/O error communicating with device (eg., valid but
+   unexpected response data)
+
+ - EINVAL: invalid input arguments for a command
+
+In line with the core NVMe API, the Admin command functions take an
+`_args` structure to provide the command-specific parameters. However,
+for the MI interface, the fd and timeout members of these _args structs
+are ignored.
+
+References to the specifications here will either to be the NVM Express
+Management Interface ("NVMe-MI") or the NVM Express Base specification
+("NVMe"). At the time of writing, the versions we're referencing here
+are:
+ - NVMe-MI 1.2b
+ - NVMe 2.0b
+with a couple of accommodations for older spec types, particularly NVMe-MI
+1.1, where possible.
+
+.. c:macro:: NVME_MI_MSGTYPE_NVME
+
+``NVME_MI_MSGTYPE_NVME ()``
+
+   MCTP message type for NVMe-MI messages.
+
+**Parameters**
+
+**Description**
+
+
+This is defined by MCTP, but is referenced as part of the NVMe-MI message
+spec. This is the MCTP NVMe message type (0x4), with the message-integrity
+bit (0x80) set.
+
+
+
+
+.. c:enum:: nvme_mi_message_type
+
+   NVMe-MI message type field.
+
+**Constants**
+
+``NVME_MI_MT_CONTROL``
+  NVME-MI Control Primitive
+
+``NVME_MI_MT_MI``
+  NVMe-MI command
+
+``NVME_MI_MT_ADMIN``
+  NVMe Admin command
+
+``NVME_MI_MT_PCIE``
+  PCIe command
+
+**Description**
+
+Used as byte 1 of both request and response messages (NMIMT bits of NMP
+byte). Not to be confused with the MCTP message type in byte 0.
+
+
+
+
+.. c:enum:: nvme_mi_ror
+
+   Request or response field.
+
+**Constants**
+
+``NVME_MI_ROR_REQ``
+  request message
+
+``NVME_MI_ROR_RSP``
+  response message
+
+
+
+
+.. c:enum:: nvme_mi_resp_status
+
+   values for the response status field
+
+**Constants**
+
+``NVME_MI_RESP_SUCCESS``
+  success
+
+``NVME_MI_RESP_MPR``
+  More Processing Required
+
+``NVME_MI_RESP_INTERNAL_ERR``
+  Internal Error
+
+``NVME_MI_RESP_INVALID_OPCODE``
+  Invalid command opcode
+
+``NVME_MI_RESP_INVALID_PARAM``
+  Invalid command parameter
+
+``NVME_MI_RESP_INVALID_CMD_SIZE``
+  Invalid command size
+
+``NVME_MI_RESP_INVALID_INPUT_SIZE``
+  Invalid command input data size
+
+``NVME_MI_RESP_ACCESS_DENIED``
+  Access Denied
+
+``NVME_MI_RESP_VPD_UPDATES_EXCEEDED``
+  More VPD updates than allowed
+
+``NVME_MI_RESP_PCIE_INACCESSIBLE``
+  PCIe functionality currently unavailable
+
+``NVME_MI_RESP_MEB_SANITIZED``
+  MEB has been cleared due to sanitize
+
+``NVME_MI_RESP_ENC_SERV_FAILURE``
+  Enclosure services process failed
+
+``NVME_MI_RESP_ENC_SERV_XFER_FAILURE``
+  Transfer with enclosure services failed
+
+``NVME_MI_RESP_ENC_FAILURE``
+  Unreoverable enclosure failure
+
+``NVME_MI_RESP_ENC_XFER_REFUSED``
+  Enclosure services transfer refused
+
+``NVME_MI_RESP_ENC_FUNC_UNSUP``
+  Unsupported enclosure services function
+
+``NVME_MI_RESP_ENC_SERV_UNAVAIL``
+  Enclosure services unavailable
+
+``NVME_MI_RESP_ENC_DEGRADED``
+  Noncritical failure detected by enc. services
+
+``NVME_MI_RESP_SANITIZE_IN_PROGRESS``
+  Command prohibited during sanitize
+
+
+
+
+.. c:struct:: nvme_mi_msg_hdr
+
+   General MI message header.
+
+**Definition**
+
+::
+
+  struct nvme_mi_msg_hdr {
+    __u8 type;
+    __u8 nmp;
+    __u8 meb;
+    __u8 rsvd0;
+  };
+
+**Members**
+
+``type``
+  MCTP message type, will always be NVME_MI_MSGTYPE_NVME
+
+``nmp``
+  NVMe-MI message parameters (including MI message type)
+
+``meb``
+  Management Endpoint Buffer flag; unused for libnvme-mi implementation
+
+``rsvd0``
+  currently reserved
+
+
+**Description**
+
+Wire format shared by both request and response messages, per NVMe-MI
+section 3.1. This is used for all message types, MI and Admin.
+
+
+
+
+.. c:struct:: nvme_mi_msg_resp
+
+   Generic response type.
+
+**Definition**
+
+::
+
+  struct nvme_mi_msg_resp {
+    struct nvme_mi_msg_hdr hdr;
+    __u8 status;
+    __u8 rsvd0[3];
+  };
+
+**Members**
+
+``hdr``
+  the general request/response message header
+
+``status``
+  response status value (see :c:type:`enum nvme_mi_resp_status <nvme_mi_resp_status>`)
+
+``rsvd0``
+  reserved data, may be defined by specific response
+
+
+**Description**
+
+Every response will start with one of these; command-specific responses
+will define parts of the reserved data, and may add further fields.
+
+
+
+
+.. c:enum:: nvme_mi_mi_opcode
+
+   Operation code for supported NVMe-MI commands.
+
+**Constants**
+
+``nvme_mi_mi_opcode_mi_data_read``
+  Read NVMe-MI Data Structure
+
+``nvme_mi_mi_opcode_subsys_health_status_poll``
+  Subsystem Health Status Poll
+
+``nvme_mi_mi_opcode_configuration_set``
+  MI Configuration Set
+
+``nvme_mi_mi_opcode_configuration_get``
+  MI Configuration Get
+
+
+
+
+.. c:struct:: nvme_mi_mi_req_hdr
+
+   MI request message header.
+
+**Definition**
+
+::
+
+  struct nvme_mi_mi_req_hdr {
+    struct nvme_mi_msg_hdr hdr;
+    __u8 opcode;
+    __u8 rsvd0[3];
+    __le32 cdw0, cdw1;
+  };
+
+**Members**
+
+``hdr``
+  generic MI message header
+
+``opcode``
+  opcode (OPC) for the specific MI command
+
+``rsvd0``
+  reserved bytes
+
+``cdw0``
+  Management Request Doubleword 0 - command specific usage
+
+``cdw1``
+  Management Request Doubleword 1 - command specific usage
+
+
+**Description**
+
+Wire format for MI request message headers, defined in section 5 of NVMe-MI.
+
+
+
+
+.. c:struct:: nvme_mi_mi_resp_hdr
+
+   MI response message header.
+
+**Definition**
+
+::
+
+  struct nvme_mi_mi_resp_hdr {
+    struct nvme_mi_msg_hdr hdr;
+    __u8 status;
+    __u8 nmresp[3];
+  };
+
+**Members**
+
+``hdr``
+  generic MI message header
+
+``status``
+  generic response status from command; non-zero on failure.
+
+``nmresp``
+  NVMe Management Response: command-type-specific response data
+
+
+**Description**
+
+Wire format for MI response message header, defined in section 5 of NVMe-MI.
+
+
+
+
+.. c:enum:: nvme_mi_dtyp
+
+   Data Structure Type field.
+
+**Constants**
+
+``nvme_mi_dtyp_subsys_info``
+  NVM Subsystem Information
+
+``nvme_mi_dtyp_port_info``
+  Port information
+
+``nvme_mi_dtyp_ctrl_list``
+  Controller List
+
+``nvme_mi_dtyp_ctrl_info``
+  Controller Information
+
+``nvme_mi_dtyp_opt_cmd_support``
+  Optionally Supported Command List
+
+``nvme_mi_dtyp_meb_support``
+  Management Endpoint Buffer Command Support List
+
+**Description**
+
+Data Structure Type field for Read NVMe-MI Data Structure command, used to
+indicate the particular structure to query from the endpoint.
+
+
+
+
+.. c:enum:: nvme_mi_config_id
+
+   NVMe-MI Configuration identifier.
+
+**Constants**
+
+``NVME_MI_CONFIG_SMBUS_FREQ``
+  Current SMBus/I2C frequency
+
+``NVME_MI_CONFIG_HEALTH_STATUS_CHANGE``
+  Health Status change - used to clear
+  health status bits in CCS bits of
+  status poll. Only for Set ops.
+
+``NVME_MI_CONFIG_MCTP_MTU``
+  MCTP maximum transmission unit size of port
+  specified in dw 0
+
+**Description**
+
+Configuration parameters for the MI Get/Set Configuration commands.
+
+See :c:type:`nvme_mi_mi_config_get`() and :c:type:`nvme_mi_config_set`().
+
+
+
+
+.. c:enum:: nvme_mi_config_smbus_freq
+
+   SMBus/I2C frequency values
+
+**Constants**
+
+``NVME_MI_CONFIG_SMBUS_FREQ_100kHz``
+  100kHz
+
+``NVME_MI_CONFIG_SMBUS_FREQ_400kHz``
+  400kHz
+
+``NVME_MI_CONFIG_SMBUS_FREQ_1MHz``
+  1MHz
+
+**Description**
+
+Values used in the SMBus Frequency device configuration. See
+:c:type:`nvme_mi_mi_config_get_smbus_freq`() and :c:type:`nvme_mi_mi_config_set_smbus_freq`().
+
+
+
+
+.. c:struct:: nvme_mi_admin_req_hdr
+
+   Admin command request header.
+
+**Definition**
+
+::
+
+  struct nvme_mi_admin_req_hdr {
+    struct nvme_mi_msg_hdr hdr;
+    __u8 opcode;
+    __u8 flags;
+    __le16 ctrl_id;
+    __le32 cdw1, cdw2, cdw3, cdw4, cdw5;
+    __le32 doff;
+    __le32 dlen;
+    __le32 rsvd0, rsvd1;
+    __le32 cdw10, cdw11, cdw12, cdw13, cdw14, cdw15;
+  };
+
+**Members**
+
+``hdr``
+  Generic MI message header
+
+``opcode``
+  Admin command opcode (using enum nvme_admin_opcode)
+
+``flags``
+  Command Flags, indicating dlen and doff validity; Only defined in
+  NVMe-MI version 1.1, no fields defined in 1.2 (where the dlen/doff
+  are always considered valid).
+
+``ctrl_id``
+  Controller ID target of command
+
+``cdw1``
+  Submission Queue Entry doubleword 1
+
+``cdw2``
+  Submission Queue Entry doubleword 2
+
+``cdw3``
+  Submission Queue Entry doubleword 3
+
+``cdw4``
+  Submission Queue Entry doubleword 4
+
+``cdw5``
+  Submission Queue Entry doubleword 5
+
+``doff``
+  Offset of data to return from command
+
+``dlen``
+  Length of sent/returned data
+
+``rsvd0``
+  Reserved
+
+``rsvd1``
+  Reserved
+
+``cdw10``
+  Submission Queue Entry doubleword 10
+
+``cdw11``
+  Submission Queue Entry doubleword 11
+
+``cdw12``
+  Submission Queue Entry doubleword 12
+
+``cdw13``
+  Submission Queue Entry doubleword 13
+
+``cdw14``
+  Submission Queue Entry doubleword 14
+
+``cdw15``
+  Submission Queue Entry doubleword 15
+
+
+**Description**
+
+Wire format for Admin command message headers, defined in section 6 of
+NVMe-MI.
+
+
+
+
+.. c:struct:: nvme_mi_admin_resp_hdr
+
+   Admin command response header.
+
+**Definition**
+
+::
+
+  struct nvme_mi_admin_resp_hdr {
+    struct nvme_mi_msg_hdr hdr;
+    __u8 status;
+    __u8 rsvd0[3];
+    __le32 cdw0, cdw1, cdw3;
+  };
+
+**Members**
+
+``hdr``
+  Generic MI message header
+
+``status``
+  Generic response code, non-zero on failure
+
+``rsvd0``
+  Reserved
+
+``cdw0``
+  Completion Queue Entry doubleword 0
+
+``cdw1``
+  Completion Queue Entry doubleword 1
+
+``cdw3``
+  Completion Queue Entry doubleword 3
+
+
+**Description**
+
+This is the generic response format with the three doublewords of completion
+queue data, plus optional response data.
+
+
+.. c:function:: const char * nvme_mi_status_to_string (int status)
+
+   return a string representation of the MI status.
+
+**Parameters**
+
+``int status``
+  MI response status
+
+**Description**
+
+Gives a string description of **status**, as per section 4.1.2 of the NVMe-MI
+spec. The status value should be of type NVME_STATUS_MI, and extracted
+from the return value using nvme_status_get_value().
+
+Returned string is const, and should not be free()ed.
+
+**Return**
+
+A string representing the status value
+
+
+.. c:function:: nvme_root_t nvme_mi_create_root (FILE *fp, int log_level)
+
+   Create top-level MI (root) handle.
+
+**Parameters**
+
+``FILE *fp``
+  File descriptor for logging messages
+
+``int log_level``
+  Logging level to use
+
+**Description**
+
+Create the top-level (library) handle for creating subsequent endpoint
+objects. Similar to nvme_create_root(), but we provide this to allow linking
+without the core libnvme.
+
+See :c:type:`nvme_create_root`.
+
+**Return**
+
+new root object, or NULL on failure.
+
+
+.. c:function:: void nvme_mi_free_root (nvme_root_t root)
+
+   Free root object.
+
+**Parameters**
+
+``nvme_root_t root``
+  root to free
+
+
+.. c:function:: void nvme_mi_set_probe_enabled (nvme_root_t root, bool enabled)
+
+   enable/disable the probe for new endpoints
+
+**Parameters**
+
+``nvme_root_t root``
+  :c:type:`nvme_root_t` object
+
+``bool enabled``
+  whether to probe new endpoints
+
+**Description**
+
+Controls whether newly-created endpoints are probed for quirks on creation.
+Defaults to enabled, which results in some initial messaging with the
+endpoint to determine model-specific details.
+
+
+
+
+.. c:type:: nvme_mi_ep_t
+
+   MI Endpoint object.
+
+**Description**
+
+
+Represents our communication endpoint on the remote MI-capable device.
+To be used for direct MI commands for the endpoint (through the
+nvme_mi_mi_* functions(), or to communicate with individual controllers
+(see :c:type:`nvme_mi_init_ctrl`).
+
+Endpoints are created through a transport-specific constructor; currently
+only MCTP-connected endpoints are supported, through :c:type:`nvme_mi_open_mctp`.
+Subsequent operations on the endpoint (and related controllers) are
+transport-independent.
+
+
+.. c:function:: nvme_mi_ep_t nvme_mi_first_endpoint (nvme_root_t m)
+
+   Start endpoint iterator
+
+**Parameters**
+
+``nvme_root_t m``
+  :c:type:`nvme_root_t` object
+
+**Return**
+
+first MI endpoint object under this root, or NULL if no endpoints
+        are present.
+
+**Description**
+
+See: :c:type:`nvme_mi_next_endpoint`, :c:type:`nvme_mi_for_each_endpoint`
+
+
+.. c:function:: nvme_mi_ep_t nvme_mi_next_endpoint (nvme_root_t m, nvme_mi_ep_t e)
+
+   Continue endpoint iterator
+
+**Parameters**
+
+``nvme_root_t m``
+  :c:type:`nvme_root_t` object
+
+``nvme_mi_ep_t e``
+  :c:type:`nvme_mi_ep_t` current position of iterator
+
+**Return**
+
+next endpoint MI endpoint object after **e** under this root, or NULL
+        if no further endpoints are present.
+
+**Description**
+
+See: :c:type:`nvme_mi_first_endpoint`, :c:type:`nvme_mi_for_each_endpoint`
+
+
+.. c:macro:: nvme_mi_for_each_endpoint
+
+``nvme_mi_for_each_endpoint (m, e)``
+
+   Iterator for NVMe-MI endpoints.
+
+**Parameters**
+
+``m``
+  :c:type:`nvme_root_t` containing endpoints
+
+``e``
+  :c:type:`nvme_mi_ep_t` object, set on each iteration
+
+
+.. c:macro:: nvme_mi_for_each_endpoint_safe
+
+``nvme_mi_for_each_endpoint_safe (m, e, _e)``
+
+   Iterator for NVMe-MI endpoints, allowing deletion during traversal
+
+**Parameters**
+
+``m``
+  :c:type:`nvme_root_t` containing endpoints
+
+``e``
+  :c:type:`nvme_mi_ep_t` object, set on each iteration
+
+``_e``
+  :c:type:`nvme_mi_ep_t` object used as temporary storage
+
+
+.. c:function:: int nvme_mi_ep_set_timeout (nvme_mi_ep_t ep, unsigned int timeout_ms)
+
+   set a timeout for NVMe-MI responses
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  MI endpoint object
+
+``unsigned int timeout_ms``
+  Timeout for MI responses, given in milliseconds
+
+
+.. c:function:: void nvme_mi_ep_set_mprt_max (nvme_mi_ep_t ep, unsigned int mprt_max_ms)
+
+   set the maximum wait time for a More Processing Required response
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  MI endpoint object
+
+``unsigned int mprt_max_ms``
+  Maximum more processing required wait time
+
+**Description**
+
+NVMe-MI endpoints may respond to a request with a "More Processing Required"
+response; this also includes a hint on the worst-case processing time for
+the eventual response data, with a specification-defined maximum of 65.535
+seconds.
+
+This function provides a way to limit the maximum time we're prepared to
+wait for the final response. Specify zero in **mprt_max_ms** for no limit.
+This should be larger than the command/response timeout set in
+:c:type:`nvme_mi_ep_set_timeout`().
+
+
+.. c:function:: unsigned int nvme_mi_ep_get_timeout (nvme_mi_ep_t ep)
+
+   get the current timeout value for NVMe-MI responses
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  MI endpoint object
+
+**Description**
+
+Returns the current timeout value, in milliseconds, for this endpoint.
+
+
+
+
+.. c:type:: nvme_mi_ctrl_t
+
+   NVMe-MI Controller object.
+
+**Description**
+
+
+Provides NVMe command functionality, through the MI interface.
+
+
+.. c:function:: nvme_mi_ctrl_t nvme_mi_first_ctrl (nvme_mi_ep_t ep)
+
+   Start controller iterator
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  :c:type:`nvme_mi_ep_t` object
+
+**Return**
+
+first MI controller object under this root, or NULL if no controllers
+        are present.
+
+**Description**
+
+See: :c:type:`nvme_mi_next_ctrl`, :c:type:`nvme_mi_for_each_ctrl`
+
+
+.. c:function:: nvme_mi_ctrl_t nvme_mi_next_ctrl (nvme_mi_ep_t ep, nvme_mi_ctrl_t c)
+
+   Continue ctrl iterator
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  :c:type:`nvme_mi_ep_t` object
+
+``nvme_mi_ctrl_t c``
+  :c:type:`nvme_mi_ctrl_t` current position of iterator
+
+**Return**
+
+next MI controller object after **c** under this endpoint, or NULL
+        if no further controllers are present.
+
+**Description**
+
+See: :c:type:`nvme_mi_first_ctrl`, :c:type:`nvme_mi_for_each_ctrl`
+
+
+.. c:macro:: nvme_mi_for_each_ctrl
+
+``nvme_mi_for_each_ctrl (ep, c)``
+
+   Iterator for NVMe-MI controllers.
+
+**Parameters**
+
+``ep``
+  :c:type:`nvme_mi_ep_t` containing endpoints
+
+``c``
+  :c:type:`nvme_mi_ctrl_t` object, set on each iteration
+
+**Description**
+
+Allows iteration of the list of controllers behind an endpoint. Unless the
+controllers have already been created explicitly, you'll probably want to
+call :c:type:`nvme_mi_scan_ep`() to scan for the controllers first.
+
+See: :c:type:`nvme_mi_scan_ep`()
+
+
+.. c:macro:: nvme_mi_for_each_ctrl_safe
+
+``nvme_mi_for_each_ctrl_safe (ep, c, _c)``
+
+   Iterator for NVMe-MI controllers, allowing deletion during traversal
+
+**Parameters**
+
+``ep``
+  :c:type:`nvme_mi_ep_t` containing controllers
+
+``c``
+  :c:type:`nvme_mi_ctrl_t` object, set on each iteration
+
+``_c``
+  :c:type:`nvme_mi_ctrl_t` object used as temporary storage
+
+**Description**
+
+Allows iteration of the list of controllers behind an endpoint, safe against
+deletion during iteration. Unless the controllers have already been created
+explicitly (or you're just iterating to destroy controllers) you'll probably
+want to call :c:type:`nvme_mi_scan_ep`() to scan for the controllers first.
+
+See: :c:type:`nvme_mi_scan_ep`()
+
+
+.. c:function:: nvme_mi_ep_t nvme_mi_open_mctp (nvme_root_t root, unsigned int netid, uint8_t eid)
+
+   Create an endpoint using a MCTP connection.
+
+**Parameters**
+
+``nvme_root_t root``
+  root object to create under
+
+``unsigned int netid``
+  MCTP network ID on this system
+
+``uint8_t eid``
+  MCTP endpoint ID
+
+**Description**
+
+Transport-specific endpoint initialization for MI-connected endpoints. Once
+an endpoint is created, the rest of the API is transport-independent.
+
+See :c:type:`nvme_mi_close`
+
+**Return**
+
+New endpoint object for **netid** & **eid**, or NULL on failure.
+
+
+.. c:function:: void nvme_mi_close (nvme_mi_ep_t ep)
+
+   Close an endpoint connection and release resources, including controller objects.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  Endpoint object to close
+
+
+.. c:function:: nvme_root_t nvme_mi_scan_mctp (void)
+
+   look for MCTP-connected NVMe-MI endpoints.
+
+**Parameters**
+
+``void``
+  no arguments
+
+**Description**
+
+This function queries the system MCTP daemon ("mctpd") over
+D-Bus, to find MCTP endpoints that report support for NVMe-MI over MCTP.
+
+This requires libvnme-mi to be compiled with D-Bus support; if not, this
+will return NULL.
+
+**Return**
+
+A **nvme_root_t** populated with a set of MCTP-connected endpoints,
+        or NULL on failure
+
+
+.. c:function:: int nvme_mi_scan_ep (nvme_mi_ep_t ep, bool force_rescan)
+
+   query an endpoint for its NVMe controllers.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  Endpoint to scan
+
+``bool force_rescan``
+  close existing controllers and rescan
+
+**Description**
+
+This function queries an MI endpoint for the controllers available, by
+performing an MI Read MI Data Structure command (requesting the
+controller list). The controllers are stored in the endpoint's internal
+list, and can be iterated with nvme_mi_for_each_ctrl.
+
+This will only scan the endpoint once, unless **force_rescan** is set. If
+so, all existing controller objects will be freed - the caller must not
+hold a reference to those across this call.
+
+See: :c:type:`nvme_mi_for_each_ctrl`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: nvme_mi_ctrl_t nvme_mi_init_ctrl (nvme_mi_ep_t ep, __u16 ctrl_id)
+
+   initialise a NVMe controller.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  Endpoint to create under
+
+``__u16 ctrl_id``
+  ID of controller to initialize.
+
+**Description**
+
+Create a connection to a controller behind the endpoint specified in **ep**.
+Controller IDs may be queried from the endpoint through
+:c:type:`nvme_mi_mi_read_mi_data_ctrl_list`.
+
+See :c:type:`nvme_mi_close_ctrl`
+
+**Return**
+
+New controller object, or NULL on failure.
+
+
+.. c:function:: void nvme_mi_close_ctrl (nvme_mi_ctrl_t ctrl)
+
+   free a controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  controller to free
+
+
+.. c:function:: char * nvme_mi_endpoint_desc (nvme_mi_ep_t ep)
+
+   Get a string describing a MI endpoint.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint to describe
+
+**Description**
+
+Generates a human-readable string describing the endpoint, with possibly
+transport-specific data. The string is allocated during the call, and the
+caller is responsible for free()-ing the string.
+
+**Return**
+
+a newly-allocated string containing the endpoint description, or
+        NULL on failure.
+
+
+.. c:function:: int nvme_mi_mi_read_mi_data_subsys (nvme_mi_ep_t ep, struct nvme_mi_read_nvm_ss_info *s)
+
+   Perform a Read MI Data Structure command, retrieving subsystem data.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``struct nvme_mi_read_nvm_ss_info *s``
+  subsystem information to populate
+
+**Description**
+
+Retrieves the Subsystem information - number of external ports and
+NVMe version information. See :c:type:`struct nvme_mi_read_nvm_ss_info <nvme_mi_read_nvm_ss_info>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_read_mi_data_port (nvme_mi_ep_t ep, __u8 portid, struct nvme_mi_read_port_info *p)
+
+   Perform a Read MI Data Structure command, retrieving port data.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u8 portid``
+  id of port data to retrieve
+
+``struct nvme_mi_read_port_info *p``
+  port information to populate
+
+**Description**
+
+Retrieves the Port information, for the specified port ID. The subsystem
+data (from :c:type:`nvme_mi_mi_read_mi_data_subsys`) nmp field contains the allowed
+range of port IDs.
+
+See :c:type:`struct nvme_mi_read_port_info <nvme_mi_read_port_info>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_read_mi_data_ctrl_list (nvme_mi_ep_t ep, __u8 start_ctrlid, struct nvme_ctrl_list *list)
+
+   Perform a Read MI Data Structure command, retrieving the list of attached controllers.
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u8 start_ctrlid``
+  starting controller ID
+
+``struct nvme_ctrl_list *list``
+  controller list to populate
+
+**Description**
+
+Retrieves the list of attached controllers, with IDs greater than or
+equal to **start_ctrlid**.
+
+See :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_read_mi_data_ctrl (nvme_mi_ep_t ep, __u16 ctrl_id, struct nvme_mi_read_ctrl_info *ctrl)
+
+   Perform a Read MI Data Structure command, retrieving controller information
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u16 ctrl_id``
+  ID of controller to query
+
+``struct nvme_mi_read_ctrl_info *ctrl``
+  controller data to populate
+
+**Description**
+
+Retrieves the Controller Information Data Structure for the attached
+controller with ID **ctrlid**.
+
+See :c:type:`struct nvme_mi_read_ctrl_info <nvme_mi_read_ctrl_info>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_subsystem_health_status_poll (nvme_mi_ep_t ep, bool clear, struct nvme_mi_nvm_ss_health_status *nshds)
+
+   Read the Subsystem Health Data Structure from the NVM subsystem
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``bool clear``
+  flag to clear the Composite Controller Status state
+
+``struct nvme_mi_nvm_ss_health_status *nshds``
+  subsystem health status data to populate
+
+**Description**
+
+Retrieves the Subsystem Health Data Structure into **nshds**. If **clear** is
+set, requests that the Composite Controller Status bits are cleared after
+the read. See NVMe-MI section 5.6 for details on the CCS bits.
+
+See :c:type:`struct nvme_mi_nvm_ss_health_status <nvme_mi_nvm_ss_health_status>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_get (nvme_mi_ep_t ep, __u32 dw0, __u32 dw1, __u32 *nmresp)
+
+   query a configuration parameter
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u32 dw0``
+  management doubleword 0, containing configuration identifier, plus
+  config-specific fields
+
+``__u32 dw1``
+  management doubleword 0, config-specific.
+
+``__u32 *nmresp``
+  set to queried configuration data in NMRESP field of response.
+
+**Description**
+
+Performs a MI Configuration Get command, with the configuration identifier
+as the LSB of **dw0**. Other **dw0** and **dw1** data is configuration-identifier
+specific.
+
+On a successful Configuration Get, the **nmresp** pointer will be populated with
+the bytes from the 3-byte NMRESP field, converted to native endian.
+
+See :c:type:`enum nvme_mi_config_id <nvme_mi_config_id>` for identifiers.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_set (nvme_mi_ep_t ep, __u32 dw0, __u32 dw1)
+
+   set a configuration parameter
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u32 dw0``
+  management doubleword 0, containing configuration identifier, plus
+  config-specific fields
+
+``__u32 dw1``
+  management doubleword 0, config-specific.
+
+**Description**
+
+Performs a MI Configuration Set command, with the command as the LSB of
+**dw0**. Other **dw0** and **dw1** data is configuration-identifier specific.
+
+See :c:type:`enum nvme_mi_config_id <nvme_mi_config_id>` for identifiers.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_get_smbus_freq (nvme_mi_ep_t ep, __u8 port, enum nvme_mi_config_smbus_freq *freq)
+
+   get configuration: SMBus port frequency
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u8 port``
+  port ID to query
+
+``enum nvme_mi_config_smbus_freq *freq``
+  output value for current frequency configuration
+
+**Description**
+
+Performs a MI Configuration Get, to query the current SMBus frequency of
+the port specified in **port**. On success, populates **freq** with the port
+frequency
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_set_smbus_freq (nvme_mi_ep_t ep, __u8 port, enum nvme_mi_config_smbus_freq freq)
+
+   set configuration: SMBus port frequency
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u8 port``
+  port ID to set
+
+``enum nvme_mi_config_smbus_freq freq``
+  new frequency configuration
+
+**Description**
+
+Performs a MI Configuration Set, to update the current SMBus frequency of
+the port specified in **port**.
+
+See :c:type:`struct nvme_mi_read_port_info <nvme_mi_read_port_info>` for the maximum supported SMBus frequency
+for the port.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_set_health_status_change (nvme_mi_ep_t ep, __u32 mask)
+
+   clear CCS bits in health status
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u32 mask``
+  bitmask to clear
+
+**Description**
+
+Performs a MI Configuration Set, to update the current health status poll
+values of the Composite Controller Status bits. Bits set in **mask** will
+be cleared from future health status poll data, and may be re-triggered by
+a future health change event.
+
+See :c:type:`nvme_mi_mi_subsystem_health_status_poll`(), :c:type:`enum nvme_mi_ccs <nvme_mi_ccs>` for
+values in **mask**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_get_mctp_mtu (nvme_mi_ep_t ep, __u8 port, __u16 *mtu)
+
+   get configuration: MCTP MTU
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u8 port``
+  port ID to query
+
+``__u16 *mtu``
+  output value for current MCTP MTU configuration
+
+**Description**
+
+Performs a MI Configuration Get, to query the current MCTP Maximum
+Transmission Unit size (MTU) of the port specified in **port**. On success,
+populates **mtu** with the MTU.
+
+The default reset value is 64, corresponding to the MCTP baseline MTU.
+
+Some controllers may also use this as the maximum receive unit size, and
+may not accept MCTP messages larger than the configured MTU.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_mi_config_set_mctp_mtu (nvme_mi_ep_t ep, __u8 port, __u16 mtu)
+
+   set configuration: MCTP MTU
+
+**Parameters**
+
+``nvme_mi_ep_t ep``
+  endpoint for MI communication
+
+``__u8 port``
+  port ID to set
+
+``__u16 mtu``
+  new MTU configuration
+
+**Description**
+
+Performs a MI Configuration Set, to update the current MCTP MTU value for
+the port specified in **port**.
+
+Some controllers may also use this as the maximum receive unit size, and
+may not accept MCTP messages larger than the configured MTU. When setting
+this value, you will likely need to change the MTU of the local MCTP
+interface(s) to match.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_admin_xfer (nvme_mi_ctrl_t ctrl, struct nvme_mi_admin_req_hdr *admin_req, size_t req_data_size, struct nvme_mi_admin_resp_hdr *admin_resp, off_t resp_data_offset, size_t *resp_data_size)
+
+   Raw admin transfer interface.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  controller to send the admin command to
+
+``struct nvme_mi_admin_req_hdr *admin_req``
+  request data
+
+``size_t req_data_size``
+  size of request data payload
+
+``struct nvme_mi_admin_resp_hdr *admin_resp``
+  buffer for response data
+
+``off_t resp_data_offset``
+  offset into request data to retrieve from controller
+
+``size_t *resp_data_size``
+  size of response data buffer, updated to received size
+
+**Description**
+
+Performs an arbitrary NVMe Admin command, using the provided request data,
+in **admin_req**. The size of the request data *payload* is specified in
+**req_data_size** - this does not include the standard header length (so a
+header-only request would have a size of 0).
+
+On success, response data is stored in **admin_resp**, which has an optional
+appended payload buffer of **resp_data_size** bytes. The actual payload
+transferred will be stored in **resp_data_size**. These sizes do not include
+the Admin request header, so 0 represents no payload.
+
+As with all Admin commands, we can request partial data from the Admin
+Response payload, offset by **resp_data_offset**.
+
+See: :c:type:`struct nvme_mi_admin_req_hdr <nvme_mi_admin_req_hdr>` and :c:type:`struct nvme_mi_admin_resp_hdr <nvme_mi_admin_resp_hdr>`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise..
+
+
+.. c:function:: int nvme_mi_admin_admin_passthru (nvme_mi_ctrl_t ctrl, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13, __u32 cdw14, __u32 cdw15, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u32 *result)
+
+   Submit an nvme admin passthrough command
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``__u8 opcode``
+  The nvme admin command to send
+
+``__u8 flags``
+  NVMe command flags (not used)
+
+``__u16 rsvd``
+  Reserved for future use
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u32 cdw2``
+  Command dword 2
+
+``__u32 cdw3``
+  Command dword 3
+
+``__u32 cdw10``
+  Command dword 10
+
+``__u32 cdw11``
+  Command dword 11
+
+``__u32 cdw12``
+  Command dword 12
+
+``__u32 cdw13``
+  Command dword 13
+
+``__u32 cdw14``
+  Command dword 14
+
+``__u32 cdw15``
+  Command dword 15
+
+``__u32 data_len``
+  Length of the data transferred in this command in bytes
+
+``void *data``
+  Pointer to user address of the data buffer
+
+``__u32 metadata_len``
+  Length of metadata transferred in this command(not used)
+
+``void *metadata``
+  Pointer to user address of the metadata buffer(not used)
+
+``__u32 timeout_ms``
+  How long to wait for the command to complete
+
+``__u32 *result``
+  Optional field to return the result from the CQE dword 0
+
+**Description**
+
+Send a customized NVMe Admin command request message and get the corresponding
+response message.
+
+This interface supports no data, host to controller and controller to
+host but it doesn't support bidirectional data transfer.
+Also this interface only supports data transfer size range [0, 4096] (bytes)
+so the & data_len parameter must be less than 4097.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_partial (nvme_mi_ctrl_t ctrl, struct nvme_identify_args *args, off_t offset, size_t size)
+
+   Perform an Admin identify command, and retrieve partial response data.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``struct nvme_identify_args *args``
+  Identify command arguments
+
+``off_t offset``
+  offset of identify data to retrieve from response
+
+``size_t size``
+  size of identify data to return
+
+**Description**
+
+Perform an Identify command, using the Identify command parameters in **args**.
+The **offset** and **size** arguments allow the caller to retrieve part of
+the identify response. See NVMe-MI section 6.2 for the semantics (and some
+handy diagrams) of the offset & size parameters.
+
+Will return an error if the length of the response data (from the controller)
+did not match **size**.
+
+Unless you're performing a vendor-unique identify command, You'll probably
+want to use one of the identify helpers (nvme_mi_admin_identify,
+nvme_mi_admin_identify_cns_nsid, or nvme_mi_admin_identify_<type>) instead
+of this. If the type of your identify command is standardized but not
+yet supported by libnvme-mi, please contact the maintainers.
+
+See: :c:type:`struct nvme_identify_args <nvme_identify_args>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify (nvme_mi_ctrl_t ctrl, struct nvme_identify_args *args)
+
+   Perform an Admin identify command.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``struct nvme_identify_args *args``
+  Identify command arguments
+
+**Description**
+
+Perform an Identify command, using the Identify command parameters in **args**.
+Stores the identify data in ->data, and (if set) the result from cdw0
+into args->result.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`.
+
+See: :c:type:`struct nvme_identify_args <nvme_identify_args>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_cns_nsid (nvme_mi_ctrl_t ctrl, enum nvme_identify_cns cns, __u32 nsid, void *data)
+
+   Perform an Admin identify command using specific CNS/NSID parameters.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``enum nvme_identify_cns cns``
+  Controller or Namespace Structure, specifying identified object
+
+``__u32 nsid``
+  namespace ID
+
+``void *data``
+  buffer for identify data response
+
+**Description**
+
+Perform an Identify command, using the CNS specifier **cns**, and the
+namespace ID **nsid** if required by the CNS type.
+
+Stores the identify data in **data**, which is expected to be a buffer of
+:c:type:`NVME_IDENTIFY_DATA_SIZE` bytes.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_ns (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_id_ns *ns)
+
+   Perform an Admin identify command for a namespace
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  namespace ID
+
+``struct nvme_id_ns *ns``
+  Namespace identification to populate
+
+**Description**
+
+Perform an Identify (namespace) command, setting the namespace id data
+in **ns**. The namespace is expected to active and allocated.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_ns_descs (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ns_id_desc *descs)
+
+   Perform an Admin identify Namespace Identification Descriptor list command for a namespace
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  Namespace ID
+
+``struct nvme_ns_id_desc *descs``
+  Namespace Identification Descriptor list to populate
+
+**Description**
+
+Perform an Identify namespace identification description list command,
+setting the namespace identification description list in **descs**
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_allocated_ns (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_id_ns *ns)
+
+   Perform an Admin identify command for an allocated namespace
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  namespace ID
+
+``struct nvme_id_ns *ns``
+  Namespace identification to populate
+
+**Description**
+
+Perform an Identify (namespace) command, setting the namespace id data
+in **ns**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_ctrl (nvme_mi_ctrl_t ctrl, struct nvme_id_ctrl *id)
+
+   Perform an Admin identify for a controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``struct nvme_id_ctrl *id``
+  Controller identify data to populate
+
+**Description**
+
+Perform an Identify command, for the controller specified by **ctrl**,
+writing identify data to **id**.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **id** will be
+fully populated on success.
+
+See: :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_ctrl_list (nvme_mi_ctrl_t ctrl, __u16 cntid, struct nvme_ctrl_list *list)
+
+   Perform an Admin identify for a controller list.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u16 cntid``
+  Controller ID to specify list start
+
+``struct nvme_ctrl_list *list``
+  List data to populate
+
+**Description**
+
+Perform an Identify command, for the controller list starting with
+IDs greater than or equal to **cntid**.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **id** will be
+fully populated on success.
+
+See: :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_nsid_ctrl_list (nvme_mi_ctrl_t ctrl, __u32 nsid, __u16 cntid, struct nvme_ctrl_list *list)
+
+   Perform an Admin identify for a controller list with specific namespace ID
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  Namespace identifier
+
+``__u16 cntid``
+  Controller ID to specify list start
+
+``struct nvme_ctrl_list *list``
+  List data to populate
+
+**Description**
+
+Perform an Identify command, for the controller list for **nsid**, starting
+with IDs greater than or equal to **cntid**.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **id** will be
+fully populated on success.
+
+See: :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_allocated_ns_list (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ns_list *list)
+
+   Perform an Admin identify for an allocated namespace list
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  Namespace ID to specify list start
+
+``struct nvme_ns_list *list``
+  List data to populate
+
+**Description**
+
+Perform an Identify command, for the allocated namespace list starting with
+IDs greater than or equal to **nsid**. Specify :c:type:`NVME_NSID_NONE` for the start
+of the list.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **list** will be
+be fully populated on success.
+
+See: :c:type:`struct nvme_ns_list <nvme_ns_list>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_active_ns_list (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ns_list *list)
+
+   Perform an Admin identify for an active namespace list
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  Namespace ID to specify list start
+
+``struct nvme_ns_list *list``
+  List data to populate
+
+**Description**
+
+Perform an Identify command, for the active namespace list starting with
+IDs greater than or equal to **nsid**. Specify :c:type:`NVME_NSID_NONE` for the start
+of the list.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **list** will be
+be fully populated on success.
+
+See: :c:type:`struct nvme_ns_list <nvme_ns_list>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_identify_primary_ctrl (nvme_mi_ctrl_t ctrl, __u16 cntid, struct nvme_primary_ctrl_cap *cap)
+
+   Perform an Admin identify for primary controller capabilities data structure.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u16 cntid``
+  Controller ID to specify
+
+``struct nvme_primary_ctrl_cap *cap``
+  Primary Controller Capabilities data structure to populate
+
+**Description**
+
+Perform an Identify command to get the Primary Controller Capabilities data
+for the controller specified by **cntid**
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **cap** will be
+be fully populated on success.
+
+See: :c:type:`struct nvme_primary_ctrl_cap <nvme_primary_ctrl_cap>`
+
+**Return**
+
+0 on success, non-zero on failure
+
+
+.. c:function:: int nvme_mi_admin_identify_secondary_ctrl_list (nvme_mi_ctrl_t ctrl, __u32 nsid, __u16 cntid, struct nvme_secondary_ctrl_list *list)
+
+   Perform an Admin identify for a secondary controller list.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to process identify command
+
+``__u32 nsid``
+  Namespace ID to specify list start
+
+``__u16 cntid``
+  Controller ID to specify list start
+
+``struct nvme_secondary_ctrl_list *list``
+  List data to populate
+
+**Description**
+
+Perform an Identify command, for the secondary controllers associated with
+the current primary controller. Only entries with IDs greater than or
+equal to **cntid** are returned.
+
+Will return an error if the length of the response data (from the
+controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **list** will be
+be fully populated on success.
+
+See: :c:type:`struct nvme_secondary_ctrl_list <nvme_secondary_ctrl_list>`
+
+**Return**
+
+0 on success, non-zero on failure
+
+
+.. c:function:: int nvme_mi_admin_get_log (nvme_mi_ctrl_t ctrl, struct nvme_get_log_args *args)
+
+   Retrieve log page data from controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``struct nvme_get_log_args *args``
+  Get Log Page command arguments
+
+**Description**
+
+Performs a Get Log Page Admin command as specified by **args**. Response data
+is stored in **args->data**, which should be a buffer of **args->data_len** bytes.
+Resulting data length is stored in **args->data_len** on successful
+command completion.
+
+This request may be implemented as multiple log page commands, in order
+to fit within MI message-size limits.
+
+See: :c:type:`struct nvme_get_log_args <nvme_get_log_args>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_nsid_log (nvme_mi_ctrl_t ctrl, bool rae, enum nvme_cmd_get_log_lid lid, __u32 nsid, __u32 len, void *log)
+
+   Helper for Get Log Page functions
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain Asynchronous Events
+
+``enum nvme_cmd_get_log_lid lid``
+  Log identifier
+
+``__u32 nsid``
+  Namespace ID
+
+``__u32 len``
+  length of log buffer
+
+``void *log``
+  pointer for resulting log data
+
+**Description**
+
+Performs a Get Log Page Admin command for a specific log ID **lid** and
+namespace ID **nsid**. Log data is expected to be **len** bytes, and is stored
+in **log** on success. The **rae** flag is passed as-is to the Get Log Page
+command, and is specific to the Log Page requested.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_simple (nvme_mi_ctrl_t ctrl, enum nvme_cmd_get_log_lid lid, __u32 len, void *log)
+
+   Helper for Get Log Page functions with no NSID or RAE requirements
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``enum nvme_cmd_get_log_lid lid``
+  Log identifier
+
+``__u32 len``
+  length of log buffer
+
+``void *log``
+  pointer for resulting log data
+
+**Description**
+
+Performs a Get Log Page Admin command for a specific log ID **lid**, using
+NVME_NSID_ALL for the namespace identifier, and rae set to false.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_supported_log_pages (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_supported_log_pages *log)
+
+   Retrieve nmve supported log pages
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_supported_log_pages *log``
+  Array of LID supported and Effects data structures
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_error (nvme_mi_ctrl_t ctrl, unsigned int nr_entries, bool rae, struct nvme_error_log_page *err_log)
+
+   Retrieve nvme error log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``unsigned int nr_entries``
+  Number of error log entries allocated
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_error_log_page *err_log``
+  Array of error logs of size 'entries'
+
+**Description**
+
+This log page describes extended error information for a command that
+completed with error, or may report an error that is not specific to a
+particular command.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_smart (nvme_mi_ctrl_t ctrl, __u32 nsid, bool rae, struct nvme_smart_log *smart_log)
+
+   Retrieve nvme smart log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u32 nsid``
+  Optional namespace identifier
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_smart_log *smart_log``
+  User address to store the smart log
+
+**Description**
+
+This log page provides SMART and general health information. The information
+provided is over the life of the controller and is retained across power
+cycles. To request the controller log page, the namespace identifier
+specified is FFFFFFFFh. The controller may also support requesting the log
+page on a per namespace basis, as indicated by bit 0 of the LPA field in the
+Identify Controller data structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_fw_slot (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_firmware_slot *fw_log)
+
+   Retrieves the controller firmware log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_firmware_slot *fw_log``
+  User address to store the log page
+
+**Description**
+
+This log page describes the firmware revision stored in each firmware slot
+supported. The firmware revision is indicated as an ASCII string. The log
+page also indicates the active slot number.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_changed_ns_list (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_ns_list *ns_log)
+
+   Retrieve namespace changed list
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_ns_list *ns_log``
+  User address to store the log page
+
+**Description**
+
+This log page describes namespaces attached to this controller that have
+changed since the last time the namespace was identified, been added, or
+deleted.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_cmd_effects (nvme_mi_ctrl_t ctrl, enum nvme_csi csi, struct nvme_cmd_effects_log *effects_log)
+
+   Retrieve nvme command effects log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``enum nvme_csi csi``
+  Command Set Identifier
+
+``struct nvme_cmd_effects_log *effects_log``
+  User address to store the effects log
+
+**Description**
+
+This log page describes the commands that the controller supports and the
+effects of those commands on the state of the NVM subsystem.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_device_self_test (nvme_mi_ctrl_t ctrl, struct nvme_self_test_log *log)
+
+   Retrieve the device self test log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``struct nvme_self_test_log *log``
+  Userspace address of the log payload
+
+**Description**
+
+The log page indicates the status of an in progress self test and the
+percent complete of that operation, and the results of the previous 20
+self-test operations.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_create_telemetry_host (nvme_mi_ctrl_t ctrl, struct nvme_telemetry_log *log)
+
+   Create host telemetry log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``struct nvme_telemetry_log *log``
+  Userspace address of the log payload
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_telemetry_host (nvme_mi_ctrl_t ctrl, __u64 offset, __u32 len, void *log)
+
+   Get Telemetry Host-Initiated log page
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u64 offset``
+  Offset into the telemetry data
+
+``__u32 len``
+  Length of provided user buffer to hold the log data in bytes
+
+``void *log``
+  User address for log page data
+
+**Description**
+
+Retrieves the Telemetry Host-Initiated log page at the requested offset
+using the previously existing capture.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_telemetry_ctrl (nvme_mi_ctrl_t ctrl, bool rae, __u64 offset, __u32 len, void *log)
+
+   Get Telemetry Controller-Initiated log page
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u64 offset``
+  Offset into the telemetry data
+
+``__u32 len``
+  Length of provided user buffer to hold the log data in bytes
+
+``void *log``
+  User address for log page data
+
+**Description**
+
+Retrieves the Telemetry Controller-Initiated log page at the requested offset
+using the previously existing capture.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_endurance_group (nvme_mi_ctrl_t ctrl, __u16 endgid, struct nvme_endurance_group_log *log)
+
+   Get Endurance Group log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u16 endgid``
+  Starting group identifier to return in the list
+
+``struct nvme_endurance_group_log *log``
+  User address to store the endurance log
+
+**Description**
+
+This log page indicates if an Endurance Group Event has occurred for a
+particular Endurance Group. If an Endurance Group Event has occurred, the
+details of the particular event are included in the Endurance Group
+Information log page for that Endurance Group. An asynchronous event is
+generated when an entry for an Endurance Group is newly added to this log
+page.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_predictable_lat_nvmset (nvme_mi_ctrl_t ctrl, __u16 nvmsetid, struct nvme_nvmset_predictable_lat_log *log)
+
+   Predictable Latency Per NVM Set
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u16 nvmsetid``
+  NVM set id
+
+``struct nvme_nvmset_predictable_lat_log *log``
+  User address to store the predictable latency log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_predictable_lat_event (nvme_mi_ctrl_t ctrl, bool rae, __u32 offset, __u32 len, void *log)
+
+   Retrieve Predictable Latency Event Aggregate Log Page
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 offset``
+  Offset into the predictable latency event
+
+``__u32 len``
+  Length of provided user buffer to hold the log data in bytes
+
+``void *log``
+  User address for log page data
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_ana (nvme_mi_ctrl_t ctrl, enum nvme_log_ana_lsp lsp, bool rae, __u64 offset, __u32 len, void *log)
+
+   Retrieve Asymmetric Namespace Access log page
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``enum nvme_log_ana_lsp lsp``
+  Log specific, see :c:type:`enum nvme_get_log_ana_lsp <nvme_get_log_ana_lsp>`
+
+``bool rae``
+  Retain asynchronous events
+
+``__u64 offset``
+  Offset to the start of the log page
+
+``__u32 len``
+  The allocated length of the log page
+
+``void *log``
+  User address to store the ana log
+
+**Description**
+
+This log consists of a header describing the log and descriptors containing
+the asymmetric namespace access information for ANA Groups that contain
+namespaces that are attached to the controller processing the command.
+
+See :c:type:`struct nvme_ana_rsp_hdr <nvme_ana_rsp_hdr>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_ana_groups (nvme_mi_ctrl_t ctrl, bool rae, __u32 len, struct nvme_ana_group_desc *log)
+
+   Retrieve Asymmetric Namespace Access groups only log page
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 len``
+  The allocated length of the log page
+
+``struct nvme_ana_group_desc *log``
+  User address to store the ana group log
+
+**Description**
+
+See :c:type:`struct nvme_ana_group_desc <nvme_ana_group_desc>` for the definition of the returned structure.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_lba_status (nvme_mi_ctrl_t ctrl, bool rae, __u64 offset, __u32 len, void *log)
+
+   Retrieve LBA Status
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u64 offset``
+  Offset to the start of the log page
+
+``__u32 len``
+  The allocated length of the log page
+
+``void *log``
+  User address to store the log page
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_endurance_grp_evt (nvme_mi_ctrl_t ctrl, bool rae, __u32 offset, __u32 len, void *log)
+
+   Retrieve Rotational Media Information
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 offset``
+  Offset to the start of the log page
+
+``__u32 len``
+  The allocated length of the log page
+
+``void *log``
+  User address to store the log page
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_fid_supported_effects (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_fid_supported_effects_log *log)
+
+   Retrieve Feature Identifiers Supported and Effects
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_fid_supported_effects_log *log``
+  FID Supported and Effects data structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_mi_cmd_supported_effects (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_mi_cmd_supported_effects_log *log)
+
+   displays the MI Commands Supported by the controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_mi_cmd_supported_effects_log *log``
+  MI Command Supported and Effects data structure
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_boot_partition (nvme_mi_ctrl_t ctrl, bool rae, __u8 lsp, __u32 len, struct nvme_boot_partition *part)
+
+   Retrieve Boot Partition
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u8 lsp``
+  The log specified field of LID
+
+``__u32 len``
+  The allocated size, minimum
+  struct nvme_boot_partition
+
+``struct nvme_boot_partition *part``
+  User address to store the log page
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_discovery (nvme_mi_ctrl_t ctrl, bool rae, __u32 offset, __u32 len, void *log)
+
+   Retrieve Discovery log page
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``__u32 offset``
+  Offset of this log to retrieve
+
+``__u32 len``
+  The allocated size for this portion of the log
+
+``void *log``
+  User address to store the discovery log
+
+**Description**
+
+Supported only by fabrics discovery controllers, returning discovery
+records.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_media_unit_stat (nvme_mi_ctrl_t ctrl, __u16 domid, struct nvme_media_unit_stat_log *mus)
+
+   Retrieve Media Unit Status
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u16 domid``
+  Domain Identifier selection, if supported
+
+``struct nvme_media_unit_stat_log *mus``
+  User address to store the Media Unit statistics log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_support_cap_config_list (nvme_mi_ctrl_t ctrl, __u16 domid, struct nvme_supported_cap_config_list_log *cap)
+
+   Retrieve Supported Capacity Configuration List
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u16 domid``
+  Domain Identifier selection, if supported
+
+``struct nvme_supported_cap_config_list_log *cap``
+  User address to store supported capabilities config list
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_reservation (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_resv_notification_log *log)
+
+   Retrieve Reservation Notification
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_resv_notification_log *log``
+  User address to store the reservation log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_sanitize (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_sanitize_log_page *log)
+
+   Retrieve Sanitize Status
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_sanitize_log_page *log``
+  User address to store the sanitize log
+
+**Description**
+
+The Sanitize Status log page reports sanitize operation time estimates and
+information about the most recent sanitize operation.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_zns_changed_zones (nvme_mi_ctrl_t ctrl, __u32 nsid, bool rae, struct nvme_zns_changed_zone_log *log)
+
+   Retrieve list of zones that have changed
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``__u32 nsid``
+  Namespace ID
+
+``bool rae``
+  Retain asynchronous events
+
+``struct nvme_zns_changed_zone_log *log``
+  User address to store the changed zone log
+
+**Description**
+
+The list of zones that have changed state due to an exceptional event.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_log_persistent_event (nvme_mi_ctrl_t ctrl, enum nvme_pevent_log_action action, __u32 size, void *pevent_log)
+
+   Retrieve Persistent Event Log
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to query
+
+``enum nvme_pevent_log_action action``
+  Action the controller should take during processing this command
+
+``__u32 size``
+  Size of **pevent_log**
+
+``void *pevent_log``
+  User address to store the persistent event log
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_security_send (nvme_mi_ctrl_t ctrl, struct nvme_security_send_args *args)
+
+   Perform a Security Send command on a controller.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_security_send_args *args``
+  Security Send command arguments
+
+**Description**
+
+Performs a Security Send Admin command as specified by **args**. Response data
+is stored in **args->data**, which should be a buffer of **args->data_len** bytes.
+Resulting data length is stored in **args->data_len** on successful
+command completion.
+
+Security Send data length should not be greater than 4096 bytes to
+comply with specification limits.
+
+See: :c:type:`struct nvme_get_log_args <nvme_get_log_args>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_security_recv (nvme_mi_ctrl_t ctrl, struct nvme_security_receive_args *args)
+
+   Perform a Security Receive command on a controller.
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_security_receive_args *args``
+  Security Receive command arguments
+
+**Description**
+
+Performs a Security Receive Admin command as specified by **args**. Response
+data is stored in **args->data**, which should be a buffer of **args->data_len**
+bytes. Resulting data length is stored in **args->data_len** on successful
+command completion.
+
+Security Receive data length should not be greater than 4096 bytes to
+comply with specification limits.
+
+See: :c:type:`struct nvme_get_log_args <nvme_get_log_args>`
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_features (nvme_mi_ctrl_t ctrl, struct nvme_get_features_args *args)
+
+   Perform a Get Feature command on a controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_get_features_args *args``
+  Get Features command arguments
+
+**Description**
+
+Performs a Get Features Admin command as specified by **args**. Returned
+feature data will be stored in **args->result** and **args->data**, depending
+on the specification of the feature itself; most features do not return
+additional data. See section 5.27.1 of the NVMe spec (v2.0b) for
+feature-specific information.
+
+On success, **args->data_len** will be updated with the actual data length
+received.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_features_data (nvme_mi_ctrl_t ctrl, enum nvme_features_id fid, __u32 nsid, __u32 data_len, void *data, __u32 *result)
+
+   Helper function for :c:type:`nvme_mi_admin_get_features`()
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``enum nvme_features_id fid``
+  Feature identifier
+
+``__u32 nsid``
+  Namespace ID, if applicable for **fid**
+
+``__u32 data_len``
+  Length of feature data, if applicable for **fid**, in bytes
+
+``void *data``
+  User address of feature data, if applicable
+
+``__u32 *result``
+  The command completion result from CQE dword0
+
+**Description**
+
+Helper for optionally features that optionally return data, using the
+SEL_CURRENT selector value.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_get_features_simple (nvme_mi_ctrl_t ctrl, enum nvme_features_id fid, __u32 nsid, __u32 *result)
+
+   Get a simple feature value with no data
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``enum nvme_features_id fid``
+  Feature identifier
+
+``__u32 nsid``
+  Namespace id, if required by **fid**
+
+``__u32 *result``
+  output feature data
+
+
+.. c:function:: int nvme_mi_admin_set_features (nvme_mi_ctrl_t ctrl, struct nvme_set_features_args *args)
+
+   Perform a Set Features command on a controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_set_features_args *args``
+  Set Features command arguments
+
+**Description**
+
+Performs a Set Features Admin command as specified by **args**. Result
+data will be stored in **args->result**.
+on the specification of the feature itself; most features do not return
+additional data. See section 5.27.1 of the NVMe spec (v2.0b) for
+feature-specific information.
+
+On success, **args->data_len** will be updated with the actual data length
+received.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_ns_mgmt (nvme_mi_ctrl_t ctrl, struct nvme_ns_mgmt_args *args)
+
+   Issue a Namespace Management command
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_ns_mgmt_args *args``
+  Namespace management command arguments
+
+**Description**
+
+Issues a Namespace Management command to **ctrl**, with arguments specified
+from **args**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_ns_mgmt_create (nvme_mi_ctrl_t ctrl, struct nvme_id_ns *ns, __u8 csi, __u32 *nsid)
+
+   Helper for Namespace Management Create command
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_id_ns *ns``
+  New namespace parameters
+
+``__u8 csi``
+  Command Set Identifier for new NS
+
+``__u32 *nsid``
+  Set to new namespace ID on create
+
+**Description**
+
+Issues a Namespace Management (Create) command to **ctrl**, to create a
+new namespace specified by **ns**, using command set **csi**. On success,
+the new namespace ID will be written to **nsid**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_ns_mgmt_delete (nvme_mi_ctrl_t ctrl, __u32 nsid)
+
+   Helper for Namespace Management Delete command
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``__u32 nsid``
+  Namespace ID to delete
+
+**Description**
+
+Issues a Namespace Management (Delete) command to **ctrl**, to delete the
+namespace with id **nsid**.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_ns_attach (nvme_mi_ctrl_t ctrl, struct nvme_ns_attach_args *args)
+
+   Attach or detach namespace to controller(s)
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_ns_attach_args *args``
+  Namespace Attach command arguments
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_ns_attach_ctrls (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ctrl_list *ctrlist)
+
+   Attach namespace to controllers
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``__u32 nsid``
+  Namespace ID to attach
+
+``struct nvme_ctrl_list *ctrlist``
+  Controller list to modify attachment state of nsid
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_ns_detach_ctrls (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ctrl_list *ctrlist)
+
+   Detach namespace from controllers
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``__u32 nsid``
+  Namespace ID to detach
+
+``struct nvme_ctrl_list *ctrlist``
+  Controller list to modify attachment state of nsid
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_fw_download (nvme_mi_ctrl_t ctrl, struct nvme_fw_download_args *args)
+
+   Download part or all of a firmware image to the controller
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send firmware data to
+
+``struct nvme_fw_download_args *args``
+  :c:type:`struct nvme_fw_download_args <nvme_fw_download_args>` argument structure
+
+**Description**
+
+The Firmware Image Download command downloads all or a portion of an image
+for a future update to the controller. The Firmware Image Download command
+downloads a new image (in whole or in part) to the controller.
+
+The image may be constructed of multiple pieces that are individually
+downloaded with separate Firmware Image Download commands. Each Firmware
+Image Download command includes a Dword Offset and Number of Dwords that
+specify a dword range.
+
+The new firmware image is not activated as part of the Firmware Image
+Download command. Use the nvme_mi_admin_fw_commit() to activate a newly
+downloaded image.
+
+**Return**
+
+0 on success, non-zero on failure
+
+
+.. c:function:: int nvme_mi_admin_fw_commit (nvme_mi_ctrl_t ctrl, struct nvme_fw_commit_args *args)
+
+   Commit firmware using the specified action
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send firmware data to
+
+``struct nvme_fw_commit_args *args``
+  :c:type:`struct nvme_fw_download_args <nvme_fw_download_args>` argument structure
+
+**Description**
+
+The Firmware Commit command modifies the firmware image or Boot Partitions.
+
+**Return**
+
+0 on success, non-zero on failure
+
+
+.. c:function:: int nvme_mi_admin_format_nvm (nvme_mi_ctrl_t ctrl, struct nvme_format_nvm_args *args)
+
+   Format NVMe namespace
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_format_nvm_args *args``
+  Format NVM command arguments
+
+**Description**
+
+Perform a low-level format to set the LBA data & metadata size. May destroy
+data & metadata on the specified namespaces
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
+.. c:function:: int nvme_mi_admin_sanitize_nvm (nvme_mi_ctrl_t ctrl, struct nvme_sanitize_nvm_args *args)
+
+   Start a subsystem Sanitize operation
+
+**Parameters**
+
+``nvme_mi_ctrl_t ctrl``
+  Controller to send command to
+
+``struct nvme_sanitize_nvm_args *args``
+  Sanitize command arguments
+
+**Description**
+
+A sanitize operation alters all user data in the NVM subsystem such that
+recovery of any previous user data from any cache, the non-volatile media,
+or any Controller Memory Buffer is not possible.
+
+The Sanitize command starts a sanitize operation or to recover from a
+previously failed sanitize operation. The sanitize operation types that may
+be supported are Block Erase, Crypto Erase, and Overwrite. All sanitize
+operations are processed in the background, i.e., completion of the sanitize
+command does not indicate completion of the sanitize operation.
+
+**Return**
+
+The nvme command status if a response was received (see
+:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.
+
+
diff --git a/doc/rst/tree.rst b/doc/rst/tree.rst
new file mode 100644 (file)
index 0000000..9a8bb3f
--- /dev/null
@@ -0,0 +1,2205 @@
+.. _tree.h:
+
+**tree.h**
+
+
+libnvme tree object interface
+
+.. c:function:: nvme_root_t nvme_create_root (FILE *fp, int log_level)
+
+   Initialize root object
+
+**Parameters**
+
+``FILE *fp``
+  File descriptor for logging messages
+
+``int log_level``
+  Logging level to use
+
+**Return**
+
+Initialized :c:type:`nvme_root_t` object
+
+
+.. c:function:: void nvme_free_tree (nvme_root_t r)
+
+   Free root object
+
+**Parameters**
+
+``nvme_root_t r``
+  :c:type:`nvme_root_t` object
+
+**Description**
+
+Free an :c:type:`nvme_root_t` object and all attached objects
+
+
+.. c:function:: nvme_host_t nvme_first_host (nvme_root_t r)
+
+   Start host iterator
+
+**Parameters**
+
+``nvme_root_t r``
+  :c:type:`nvme_root_t` object
+
+**Return**
+
+First :c:type:`nvme_host_t` object in an iterator
+
+
+.. c:function:: nvme_host_t nvme_next_host (nvme_root_t r, nvme_host_t h)
+
+   Next host iterator
+
+**Parameters**
+
+``nvme_root_t r``
+  :c:type:`nvme_root_t` object
+
+``nvme_host_t h``
+  Previous :c:type:`nvme_host_t` iterator
+
+**Return**
+
+Next :c:type:`nvme_host_t` object in an iterator
+
+
+.. c:function:: nvme_root_t nvme_host_get_root (nvme_host_t h)
+
+   Returns nvme_root_t object
+
+**Parameters**
+
+``nvme_host_t h``
+  :c:type:`nvme_host_t` object
+
+**Return**
+
+:c:type:`nvme_root_t` object from **h**
+
+
+.. c:function:: nvme_host_t nvme_lookup_host (nvme_root_t r, const char *hostnqn, const char *hostid)
+
+   Lookup nvme_host_t object
+
+**Parameters**
+
+``nvme_root_t r``
+  :c:type:`nvme_root_t` object
+
+``const char *hostnqn``
+  Host NQN
+
+``const char *hostid``
+  Host ID
+
+**Description**
+
+Lookup a nvme_host_t object based on **hostnqn** and **hostid**
+or create one if not found.
+
+**Return**
+
+:c:type:`nvme_host_t` object
+
+
+.. c:function:: const char * nvme_host_get_dhchap_key (nvme_host_t h)
+
+   Return host key
+
+**Parameters**
+
+``nvme_host_t h``
+  Host for which the key should be returned
+
+**Return**
+
+DH-HMAC-CHAP host key or NULL if not set
+
+
+.. c:function:: void nvme_host_set_dhchap_key (nvme_host_t h, const char *key)
+
+   set host key
+
+**Parameters**
+
+``nvme_host_t h``
+  Host for which the key should be set
+
+``const char *key``
+  DH-HMAC-CHAP Key to set or NULL to clear existing key
+
+
+.. c:function:: void nvme_host_set_pdc_enabled (nvme_host_t h, bool enabled)
+
+   Set Persistent Discovery Controller flag
+
+**Parameters**
+
+``nvme_host_t h``
+  Host for which the falg should be set
+
+``bool enabled``
+  The bool to set the enabled flag
+
+**Description**
+
+When nvme_host_set_pdc_enabled() is not used to set the PDC flag,
+nvme_host_is_pdc_enabled() will return the default value which was
+passed into the function and not the undefined flag value.
+
+
+.. c:function:: bool nvme_host_is_pdc_enabled (nvme_host_t h, bool fallback)
+
+   Is Persistenct Discovery Controller enabled
+
+**Parameters**
+
+``nvme_host_t h``
+  Host which to check if PDC is enabled
+
+``bool fallback``
+  The fallback default value of the flag when
+  **nvme_host_set_pdc_enabled** has not be used
+  to set the flag.
+
+**Return**
+
+true if PDC is enabled for **h**, else false
+
+
+.. c:function:: nvme_host_t nvme_default_host (nvme_root_t r)
+
+   Initializes the default host
+
+**Parameters**
+
+``nvme_root_t r``
+  :c:type:`nvme_root_t` object
+
+**Description**
+
+Initializes the default host object based on the values in
+/etc/nvme/hostnqn and /etc/nvme/hostid and attaches it to **r**.
+
+**Return**
+
+:c:type:`nvme_host_t` object
+
+
+.. c:function:: nvme_subsystem_t nvme_first_subsystem (nvme_host_t h)
+
+   Start subsystem iterator
+
+**Parameters**
+
+``nvme_host_t h``
+  :c:type:`nvme_host_t` object
+
+**Return**
+
+first :c:type:`nvme_subsystem_t` object in an iterator
+
+
+.. c:function:: nvme_subsystem_t nvme_next_subsystem (nvme_host_t h, nvme_subsystem_t s)
+
+   Next subsystem iterator
+
+**Parameters**
+
+``nvme_host_t h``
+  :c:type:`nvme_host_t` object
+
+``nvme_subsystem_t s``
+  Previous :c:type:`nvme_subsystem_t` iterator
+
+**Return**
+
+next :c:type:`nvme_subsystem_t` object in an iterator
+
+
+.. c:function:: nvme_subsystem_t nvme_lookup_subsystem (struct nvme_host *h, const char *name, const char *subsysnqn)
+
+   Lookup nvme_subsystem_t object
+
+**Parameters**
+
+``struct nvme_host *h``
+  :c:type:`nvme_host_t` object
+
+``const char *name``
+  Name of the subsystem (may be NULL)
+
+``const char *subsysnqn``
+  Subsystem NQN
+
+**Description**
+
+Lookup a :c:type:`nvme_subsystem_t` object in **h** base on **name** (if present)
+and **subsysnqn** or create one if not found.
+
+**Return**
+
+nvme_subsystem_t object
+
+
+.. c:function:: void nvme_free_subsystem (struct nvme_subsystem *s)
+
+   Free a subsystem
+
+**Parameters**
+
+``struct nvme_subsystem *s``
+  subsystem
+
+**Description**
+
+Frees **s** and all related objects.
+
+
+.. c:function:: nvme_host_t nvme_subsystem_get_host (nvme_subsystem_t s)
+
+   Returns nvme_host_t object
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  subsystem
+
+**Return**
+
+:c:type:`nvme_host_t` object from **s**
+
+
+.. c:function:: nvme_ns_t nvme_ctrl_first_ns (nvme_ctrl_t c)
+
+   Start namespace iterator
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+First :c:type:`nvme_ns_t` object of an **c** iterator
+
+
+.. c:function:: nvme_ns_t nvme_ctrl_next_ns (nvme_ctrl_t c, nvme_ns_t n)
+
+   Next namespace iterator
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+``nvme_ns_t n``
+  Previous nvme_ns_t iterator
+
+**Return**
+
+Next nvme_ns_t object of an **c** iterator
+
+
+.. c:function:: nvme_path_t nvme_ctrl_first_path (nvme_ctrl_t c)
+
+   Start path iterator
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+First :c:type:`nvme_path_t` object of an **c** iterator
+
+
+.. c:function:: nvme_path_t nvme_ctrl_next_path (nvme_ctrl_t c, nvme_path_t p)
+
+   Next path iterator
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+``nvme_path_t p``
+  Previous :c:type:`nvme_path_t` object of an **c** iterator
+
+**Return**
+
+Next :c:type:`nvme_path_t` object of an **c** iterator
+
+
+.. c:function:: nvme_ctrl_t nvme_subsystem_first_ctrl (nvme_subsystem_t s)
+
+   First ctrl iterator
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  :c:type:`nvme_subsystem_t` object
+
+**Return**
+
+First controller of an **s** iterator
+
+
+.. c:function:: nvme_ctrl_t nvme_subsystem_next_ctrl (nvme_subsystem_t s, nvme_ctrl_t c)
+
+   Next ctrl iterator
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  :c:type:`nvme_subsystem_t` object
+
+``nvme_ctrl_t c``
+  Previous controller instance of an **s** iterator
+
+**Return**
+
+Next controller of an **s** iterator
+
+
+.. c:function:: nvme_path_t nvme_namespace_first_path (nvme_ns_t ns)
+
+   Start path iterator
+
+**Parameters**
+
+``nvme_ns_t ns``
+  Namespace instance
+
+**Return**
+
+First :c:type:`nvme_path_t` object of an **ns** iterator
+
+
+.. c:function:: nvme_path_t nvme_namespace_next_path (nvme_ns_t ns, nvme_path_t p)
+
+   Next path iterator
+
+**Parameters**
+
+``nvme_ns_t ns``
+  Namespace instance
+
+``nvme_path_t p``
+  Previous :c:type:`nvme_path_t` object of an **ns** iterator
+
+**Return**
+
+Next :c:type:`nvme_path_t` object of an **ns** iterator
+
+
+.. c:function:: nvme_ctrl_t nvme_lookup_ctrl (nvme_subsystem_t s, const char *transport, const char *traddr, const char *host_traddr, const char *host_iface, const char *trsvcid, nvme_ctrl_t p)
+
+   Lookup nvme_ctrl_t object
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  :c:type:`nvme_subsystem_t` object
+
+``const char *transport``
+  Transport name
+
+``const char *traddr``
+  Transport address
+
+``const char *host_traddr``
+  Host transport address
+
+``const char *host_iface``
+  Host interface name
+
+``const char *trsvcid``
+  Transport service identifier
+
+``nvme_ctrl_t p``
+  Previous controller instance
+
+**Description**
+
+Lookup a controller in **s** based on **transport**, **traddr**,
+**host_traddr**, **host_iface**, and **trsvcid**. **transport** must be specified,
+other fields may be required depending on the transport. A new
+object is created if none is found. If **p** is specified the lookup
+will start at **p** instead of the first controller.
+
+**Return**
+
+Controller instance
+
+
+.. c:function:: nvme_ctrl_t nvme_create_ctrl (nvme_root_t r, const char *subsysnqn, const char *transport, const char *traddr, const char *host_traddr, const char *host_iface, const char *trsvcid)
+
+   Allocate an unconnected NVMe controller
+
+**Parameters**
+
+``nvme_root_t r``
+  NVMe root element
+
+``const char *subsysnqn``
+  Subsystem NQN
+
+``const char *transport``
+  Transport type
+
+``const char *traddr``
+  Transport address
+
+``const char *host_traddr``
+  Host transport address
+
+``const char *host_iface``
+  Host interface name
+
+``const char *trsvcid``
+  Transport service ID
+
+**Description**
+
+Creates an unconnected controller to be used for nvme_add_ctrl().
+
+**Return**
+
+Controller instance
+
+
+.. c:function:: nvme_ns_t nvme_subsystem_first_ns (nvme_subsystem_t s)
+
+   Start namespace iterator
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  :c:type:`nvme_subsystem_t` object
+
+**Return**
+
+First :c:type:`nvme_ns_t` object of an **s** iterator
+
+
+.. c:function:: nvme_ns_t nvme_subsystem_next_ns (nvme_subsystem_t s, nvme_ns_t n)
+
+   Next namespace iterator
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  :c:type:`nvme_subsystem_t` object
+
+``nvme_ns_t n``
+  Previous :c:type:`nvme_ns_t` iterator
+
+**Return**
+
+Next :c:type:`nvme_ns_t` object of an **s** iterator
+
+
+.. c:macro:: nvme_for_each_host_safe
+
+``nvme_for_each_host_safe (r, h, _h)``
+
+   Traverse host list
+
+**Parameters**
+
+``r``
+  :c:type:`nvme_root_t` object
+
+``h``
+  :c:type:`nvme_host_t` object
+
+``_h``
+  Temporary :c:type:`nvme_host_t` object
+
+
+.. c:macro:: nvme_for_each_host
+
+``nvme_for_each_host (r, h)``
+
+   Traverse host list
+
+**Parameters**
+
+``r``
+  :c:type:`nvme_root_t` object
+
+``h``
+  :c:type:`nvme_host_t` object
+
+
+.. c:macro:: nvme_for_each_subsystem_safe
+
+``nvme_for_each_subsystem_safe (h, s, _s)``
+
+   Traverse subsystems
+
+**Parameters**
+
+``h``
+  :c:type:`nvme_host_t` object
+
+``s``
+  :c:type:`nvme_subsystem_t` object
+
+``_s``
+  Temporary :c:type:`nvme_subsystem_t` object
+
+
+.. c:macro:: nvme_for_each_subsystem
+
+``nvme_for_each_subsystem (h, s)``
+
+   Traverse subsystems
+
+**Parameters**
+
+``h``
+  :c:type:`nvme_host_t` object
+
+``s``
+  :c:type:`nvme_subsystem_t` object
+
+
+.. c:macro:: nvme_subsystem_for_each_ctrl_safe
+
+``nvme_subsystem_for_each_ctrl_safe (s, c, _c)``
+
+   Traverse controllers
+
+**Parameters**
+
+``s``
+  :c:type:`nvme_subsystem_t` object
+
+``c``
+  Controller instance
+
+``_c``
+  A :c:type:`nvme_ctrl_t_node` to use as temporary storage
+
+
+.. c:macro:: nvme_subsystem_for_each_ctrl
+
+``nvme_subsystem_for_each_ctrl (s, c)``
+
+   Traverse controllers
+
+**Parameters**
+
+``s``
+  :c:type:`nvme_subsystem_t` object
+
+``c``
+  Controller instance
+
+
+.. c:macro:: nvme_ctrl_for_each_ns_safe
+
+``nvme_ctrl_for_each_ns_safe (c, n, _n)``
+
+   Traverse namespaces
+
+**Parameters**
+
+``c``
+  Controller instance
+
+``n``
+  :c:type:`nvme_ns_t` object
+
+``_n``
+  A :c:type:`nvme_ns_t_node` to use as temporary storage
+
+
+.. c:macro:: nvme_ctrl_for_each_ns
+
+``nvme_ctrl_for_each_ns (c, n)``
+
+   Traverse namespaces
+
+**Parameters**
+
+``c``
+  Controller instance
+
+``n``
+  :c:type:`nvme_ns_t` object
+
+
+.. c:macro:: nvme_ctrl_for_each_path_safe
+
+``nvme_ctrl_for_each_path_safe (c, p, _p)``
+
+   Traverse paths
+
+**Parameters**
+
+``c``
+  Controller instance
+
+``p``
+  :c:type:`nvme_path_t` object
+
+``_p``
+  A :c:type:`nvme_path_t_node` to use as temporary storage
+
+
+.. c:macro:: nvme_ctrl_for_each_path
+
+``nvme_ctrl_for_each_path (c, p)``
+
+   Traverse paths
+
+**Parameters**
+
+``c``
+  Controller instance
+
+``p``
+  :c:type:`nvme_path_t` object
+
+
+.. c:macro:: nvme_subsystem_for_each_ns_safe
+
+``nvme_subsystem_for_each_ns_safe (s, n, _n)``
+
+   Traverse namespaces
+
+**Parameters**
+
+``s``
+  :c:type:`nvme_subsystem_t` object
+
+``n``
+  :c:type:`nvme_ns_t` object
+
+``_n``
+  A :c:type:`nvme_ns_t_node` to use as temporary storage
+
+
+.. c:macro:: nvme_subsystem_for_each_ns
+
+``nvme_subsystem_for_each_ns (s, n)``
+
+   Traverse namespaces
+
+**Parameters**
+
+``s``
+  :c:type:`nvme_subsystem_t` object
+
+``n``
+  :c:type:`nvme_ns_t` object
+
+
+.. c:macro:: nvme_namespace_for_each_path_safe
+
+``nvme_namespace_for_each_path_safe (n, p, _p)``
+
+   Traverse paths
+
+**Parameters**
+
+``n``
+  Namespace instance
+
+``p``
+  :c:type:`nvme_path_t` object
+
+``_p``
+  A :c:type:`nvme_path_t_node` to use as temporary storage
+
+
+.. c:macro:: nvme_namespace_for_each_path
+
+``nvme_namespace_for_each_path (n, p)``
+
+   Traverse paths
+
+**Parameters**
+
+``n``
+  Namespace instance
+
+``p``
+  :c:type:`nvme_path_t` object
+
+
+.. c:function:: int nvme_ns_get_fd (nvme_ns_t n)
+
+   Get associated file descriptor
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+File descriptor associated with **n** or -1
+
+
+.. c:function:: int nvme_ns_get_nsid (nvme_ns_t n)
+
+   NSID of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+NSID of **n**
+
+
+.. c:function:: int nvme_ns_get_lba_size (nvme_ns_t n)
+
+   LBA size of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+LBA size of **n**
+
+
+.. c:function:: int nvme_ns_get_meta_size (nvme_ns_t n)
+
+   Metadata size of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+Metadata size of **n**
+
+
+.. c:function:: uint64_t nvme_ns_get_lba_count (nvme_ns_t n)
+
+   LBA count of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+LBA count of **n**
+
+
+.. c:function:: uint64_t nvme_ns_get_lba_util (nvme_ns_t n)
+
+   LBA utilization of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+LBA utilization of **n**
+
+
+.. c:function:: enum nvme_csi nvme_ns_get_csi (nvme_ns_t n)
+
+   Command set identifier of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+The namespace's command set identifier in use
+
+
+.. c:function:: const uint8_t * nvme_ns_get_eui64 (nvme_ns_t n)
+
+   64-bit eui of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+A pointer to the 64-bit eui
+
+
+.. c:function:: const uint8_t * nvme_ns_get_nguid (nvme_ns_t n)
+
+   128-bit nguid of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+A pointer to the 128-bit nguid
+
+
+.. c:function:: void nvme_ns_get_uuid (nvme_ns_t n, unsigned char out[NVME_UUID_LEN])
+
+   UUID of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``unsigned char out[NVME_UUID_LEN]``
+  buffer for the UUID
+
+**Description**
+
+Copies the namespace's uuid into **out**
+
+
+.. c:function:: const char * nvme_ns_get_sysfs_dir (nvme_ns_t n)
+
+   sysfs directory of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+sysfs directory name of **n**
+
+
+.. c:function:: const char * nvme_ns_get_name (nvme_ns_t n)
+
+   sysfs name of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+sysfs name of **n**
+
+
+.. c:function:: const char * nvme_ns_get_generic_name (nvme_ns_t n)
+
+   Returns name of generic namespace chardev.
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+Name of generic namespace chardev
+
+
+.. c:function:: const char * nvme_ns_get_firmware (nvme_ns_t n)
+
+   Firmware string of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+Firmware string of **n**
+
+
+.. c:function:: const char * nvme_ns_get_serial (nvme_ns_t n)
+
+   Serial number of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+Serial number string of **n**
+
+
+.. c:function:: const char * nvme_ns_get_model (nvme_ns_t n)
+
+   Model of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+Model string of **n**
+
+
+.. c:function:: nvme_subsystem_t nvme_ns_get_subsystem (nvme_ns_t n)
+
+   :c:type:`nvme_subsystem_t` of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+nvme_subsystem_t object of **n**
+
+
+.. c:function:: nvme_ctrl_t nvme_ns_get_ctrl (nvme_ns_t n)
+
+   :c:type:`nvme_ctrl_t` of a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Description**
+
+nvme_ctrl_t object may be NULL for a multipathed namespace
+
+**Return**
+
+nvme_ctrl_t object of **n** if present
+
+
+.. c:function:: void nvme_free_ns (struct nvme_ns *n)
+
+   Free a namespace object
+
+**Parameters**
+
+``struct nvme_ns *n``
+  Namespace instance
+
+
+.. c:function:: int nvme_ns_read (nvme_ns_t n, void *buf, off_t offset, size_t count)
+
+   Read from a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``void *buf``
+  Buffer into which the data will be transferred
+
+``off_t offset``
+  LBA offset of **n**
+
+``size_t count``
+  Number of sectors in **buf**
+
+**Return**
+
+Number of sectors read or -1 on error.
+
+
+.. c:function:: int nvme_ns_write (nvme_ns_t n, void *buf, off_t offset, size_t count)
+
+   Write to a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``void *buf``
+  Buffer with data to be written
+
+``off_t offset``
+  LBA offset of **n**
+
+``size_t count``
+  Number of sectors in **buf**
+
+**Return**
+
+Number of sectors written or -1 on error
+
+
+.. c:function:: int nvme_ns_verify (nvme_ns_t n, off_t offset, size_t count)
+
+   Verify data on a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``off_t offset``
+  LBA offset of **n**
+
+``size_t count``
+  Number of sectors to be verified
+
+**Return**
+
+Number of sectors verified
+
+
+.. c:function:: int nvme_ns_compare (nvme_ns_t n, void *buf, off_t offset, size_t count)
+
+   Compare data on a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``void *buf``
+  Buffer with data to be compared
+
+``off_t offset``
+  LBA offset of **n**
+
+``size_t count``
+  Number of sectors in **buf**
+
+**Return**
+
+Number of sectors compared
+
+
+.. c:function:: int nvme_ns_write_zeros (nvme_ns_t n, off_t offset, size_t count)
+
+   Write zeros to a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``off_t offset``
+  LBA offset in **n**
+
+``size_t count``
+  Number of sectors to be written
+
+**Return**
+
+Number of sectors written
+
+
+.. c:function:: int nvme_ns_write_uncorrectable (nvme_ns_t n, off_t offset, size_t count)
+
+   Issus a 'write uncorrectable' command
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``off_t offset``
+  LBA offset in **n**
+
+``size_t count``
+  Number of sectors to be written
+
+**Return**
+
+Number of sectors written
+
+
+.. c:function:: int nvme_ns_flush (nvme_ns_t n)
+
+   Flush data to a namespace
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+**Return**
+
+0 on success, -1 on error.
+
+
+.. c:function:: int nvme_ns_identify (nvme_ns_t n, struct nvme_id_ns *ns)
+
+   Issue an 'identify namespace' command
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``struct nvme_id_ns *ns``
+  :c:type:`nvme_id_ns` buffer
+
+**Description**
+
+Writes the data returned by the 'identify namespace' command
+into **ns**.
+
+**Return**
+
+0 on success, -1 on error.
+
+
+.. c:function:: int nvme_ns_identify_descs (nvme_ns_t n, struct nvme_ns_id_desc *descs)
+
+   Issue an 'identify descriptors' command
+
+**Parameters**
+
+``nvme_ns_t n``
+  Namespace instance
+
+``struct nvme_ns_id_desc *descs``
+  List of identify descriptors
+
+**Description**
+
+Writes the data returned by the 'identify descriptors' command
+into **descs**.
+
+**Return**
+
+0 on success, -1 on error.
+
+
+.. c:function:: const char * nvme_path_get_name (nvme_path_t p)
+
+   sysfs name of an :c:type:`nvme_path_t` object
+
+**Parameters**
+
+``nvme_path_t p``
+  :c:type:`nvme_path_t` object
+
+**Return**
+
+sysfs name of **p**
+
+
+.. c:function:: const char * nvme_path_get_sysfs_dir (nvme_path_t p)
+
+   sysfs directory of an nvme_path_t object
+
+**Parameters**
+
+``nvme_path_t p``
+  :c:type:`nvme_path_t` object
+
+**Return**
+
+sysfs directory of **p**
+
+
+.. c:function:: const char * nvme_path_get_ana_state (nvme_path_t p)
+
+   ANA state of an nvme_path_t object
+
+**Parameters**
+
+``nvme_path_t p``
+  :c:type:`nvme_path_t` object
+
+**Return**
+
+ANA (Asynchronous Namespace Access) state of **p**
+
+
+.. c:function:: nvme_ctrl_t nvme_path_get_ctrl (nvme_path_t p)
+
+   Parent controller of an nvme_path_t object
+
+**Parameters**
+
+``nvme_path_t p``
+  :c:type:`nvme_path_t` object
+
+**Return**
+
+Parent controller if present
+
+
+.. c:function:: nvme_ns_t nvme_path_get_ns (nvme_path_t p)
+
+   Parent namespace of an nvme_path_t object
+
+**Parameters**
+
+``nvme_path_t p``
+  :c:type:`nvme_path_t` object
+
+**Return**
+
+Parent namespace if present
+
+
+.. c:function:: int nvme_ctrl_get_fd (nvme_ctrl_t c)
+
+   Get associated file descriptor
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+File descriptor associated with **c** or -1
+
+
+.. c:function:: const char * nvme_ctrl_get_name (nvme_ctrl_t c)
+
+   sysfs name of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+sysfs name of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_sysfs_dir (nvme_ctrl_t c)
+
+   sysfs directory of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+sysfs directory name of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_address (nvme_ctrl_t c)
+
+   Address string of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+NVMe-over-Fabrics address string of **c** or empty string
+of no address is present.
+
+
+.. c:function:: const char * nvme_ctrl_get_firmware (nvme_ctrl_t c)
+
+   Firmware string of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Firmware string of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_model (nvme_ctrl_t c)
+
+   Model of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Model string of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_state (nvme_ctrl_t c)
+
+   Running state of an controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+String indicating the running state of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_numa_node (nvme_ctrl_t c)
+
+   NUMA node of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+String indicating the NUMA node
+
+
+.. c:function:: const char * nvme_ctrl_get_queue_count (nvme_ctrl_t c)
+
+   Queue count of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Queue count of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_serial (nvme_ctrl_t c)
+
+   Serial number of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Serial number string of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_sqsize (nvme_ctrl_t c)
+
+   SQ size of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+SQ size (as string) of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_transport (nvme_ctrl_t c)
+
+   Transport type of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Transport type of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_subsysnqn (nvme_ctrl_t c)
+
+   Subsystem NQN of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Subsystem NQN of **c**
+
+
+.. c:function:: nvme_subsystem_t nvme_ctrl_get_subsystem (nvme_ctrl_t c)
+
+   Parent subsystem of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Parent nvme_subsystem_t object
+
+
+.. c:function:: const char * nvme_ctrl_get_traddr (nvme_ctrl_t c)
+
+   Transport address of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Transport address of **c**
+
+
+.. c:function:: const char * nvme_ctrl_get_trsvcid (nvme_ctrl_t c)
+
+   Transport service identifier of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Transport service identifier of **c** (if present)
+
+
+.. c:function:: const char * nvme_ctrl_get_host_traddr (nvme_ctrl_t c)
+
+   Host transport address of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Host transport address of **c** (if present)
+
+
+.. c:function:: const char * nvme_ctrl_get_host_iface (nvme_ctrl_t c)
+
+   Host interface name of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Host interface name of **c** (if present)
+
+
+.. c:function:: const char * nvme_ctrl_get_dhchap_host_key (nvme_ctrl_t c)
+
+   Return host key
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to be checked
+
+**Return**
+
+DH-HMAC-CHAP host key or NULL if not set
+
+
+.. c:function:: void nvme_ctrl_set_dhchap_host_key (nvme_ctrl_t c, const char *key)
+
+   Set host key
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Host for which the key should be set
+
+``const char *key``
+  DH-HMAC-CHAP Key to set or NULL to clear existing key
+
+
+.. c:function:: const char * nvme_ctrl_get_dhchap_key (nvme_ctrl_t c)
+
+   Return controller key
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller for which the key should be set
+
+**Return**
+
+DH-HMAC-CHAP controller key or NULL if not set
+
+
+.. c:function:: void nvme_ctrl_set_dhchap_key (nvme_ctrl_t c, const char *key)
+
+   Set controller key
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller for which the key should be set
+
+``const char *key``
+  DH-HMAC-CHAP Key to set or NULL to clear existing key
+
+
+.. c:function:: struct nvme_fabrics_config * nvme_ctrl_get_config (nvme_ctrl_t c)
+
+   Fabrics configuration of a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Fabrics configuration of **c**
+
+
+.. c:function:: void nvme_ctrl_set_discovered (nvme_ctrl_t c, bool discovered)
+
+   Set the 'discovered' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  nvme_ctrl_t object
+
+``bool discovered``
+  Value of the 'discovered' flag
+
+**Description**
+
+Set the 'discovered' flag of **c** to **discovered**
+
+
+.. c:function:: bool nvme_ctrl_is_discovered (nvme_ctrl_t c)
+
+   Returns the value of the 'discovered' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Value of the 'discovered' flag of **c**
+
+
+.. c:function:: void nvme_ctrl_set_persistent (nvme_ctrl_t c, bool persistent)
+
+   Set the 'persistent' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+``bool persistent``
+  value of the 'persistent' flag
+
+**Description**
+
+Set the 'persistent' flag of **c** to **persistent**
+
+
+.. c:function:: bool nvme_ctrl_is_persistent (nvme_ctrl_t c)
+
+   Returns the value of the 'persistent' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Return**
+
+Value of the 'persistent' flag of **c**
+
+
+.. c:function:: void nvme_ctrl_set_discovery_ctrl (nvme_ctrl_t c, bool discovery)
+
+   Set the 'discovery_ctrl' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to be modified
+
+``bool discovery``
+  value of the discovery_ctrl flag
+
+**Description**
+
+Sets the 'discovery_ctrl' flag in **c** to specify whether
+**c** connects to a discovery subsystem.
+
+
+.. c:function:: bool nvme_ctrl_is_discovery_ctrl (nvme_ctrl_t c)
+
+   Check the 'discovery_ctrl' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to be checked
+
+**Description**
+
+Returns the value of the 'discovery_ctrl' flag which specifies whether
+**c** connects to a discovery subsystem.
+
+**Return**
+
+Value of the 'discover_ctrl' flag
+
+
+.. c:function:: void nvme_ctrl_set_unique_discovery_ctrl (nvme_ctrl_t c, bool unique)
+
+   Set the 'unique_discovery_ctrl' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to be modified
+
+``bool unique``
+  value of the unique_disc_ctrl flag
+
+**Description**
+
+Sets the 'unique_discovery_ctrl' flag in **c** to specify wheter
+**c** is a unique discovery controller
+
+
+.. c:function:: bool nvme_ctrl_is_unique_discovery_ctrl (nvme_ctrl_t c)
+
+   Check the 'unique_discovery_ctrl' flag
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller to be checked
+
+**Return**
+
+Value of the 'unique_discovery_ctrl' flag
+
+
+.. c:function:: int nvme_ctrl_identify (nvme_ctrl_t c, struct nvme_id_ctrl *id)
+
+   Issues an 'identify controller' command
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+``struct nvme_id_ctrl *id``
+  Identify controller data structure
+
+**Description**
+
+Issues an 'identify controller' command to **c** and copies the
+data into **id**.
+
+**Return**
+
+0 on success or -1 on failure.
+
+
+.. c:function:: int nvme_disconnect_ctrl (nvme_ctrl_t c)
+
+   Disconnect a controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+**Description**
+
+Issues a 'disconnect' fabrics command to **c**
+
+**Return**
+
+0 on success, -1 on failure.
+
+
+.. c:function:: nvme_ctrl_t nvme_scan_ctrl (nvme_root_t r, const char *name)
+
+   Scan on a controller
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+``const char *name``
+  Name of the controller
+
+**Description**
+
+Scans a controller with sysfs name **name** and add it to **r**.
+
+**Return**
+
+nvme_ctrl_t object
+
+
+.. c:function:: void nvme_rescan_ctrl (nvme_ctrl_t c)
+
+   Rescan an existing controller
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+
+.. c:function:: int nvme_init_ctrl (nvme_host_t h, nvme_ctrl_t c, int instance)
+
+   Initialize nvme_ctrl_t object for an existing controller.
+
+**Parameters**
+
+``nvme_host_t h``
+  nvme_host_t object
+
+``nvme_ctrl_t c``
+  nvme_ctrl_t object
+
+``int instance``
+  Instance number (e.g. 1 for nvme1)
+
+**Return**
+
+The ioctl() return code. Typically 0 on success.
+
+
+.. c:function:: void nvme_free_ctrl (struct nvme_ctrl *c)
+
+   Free controller
+
+**Parameters**
+
+``struct nvme_ctrl *c``
+  Controller instance
+
+
+.. c:function:: void nvme_unlink_ctrl (struct nvme_ctrl *c)
+
+   Unlink controller
+
+**Parameters**
+
+``struct nvme_ctrl *c``
+  Controller instance
+
+
+.. c:function:: const char * nvme_subsystem_get_nqn (nvme_subsystem_t s)
+
+   Retrieve NQN from subsystem
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  nvme_subsystem_t object
+
+**Return**
+
+NQN of subsystem
+
+
+.. c:function:: const char * nvme_subsystem_get_sysfs_dir (nvme_subsystem_t s)
+
+   sysfs directory of an nvme_subsystem_t object
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  nvme_subsystem_t object
+
+**Return**
+
+sysfs directory name of **s**
+
+
+.. c:function:: const char * nvme_subsystem_get_name (nvme_subsystem_t s)
+
+   sysfs name of an nvme_subsystem_t object
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  nvme_subsystem_t object
+
+**Return**
+
+sysfs name of **s**
+
+
+.. c:function:: const char * nvme_subsystem_get_type (nvme_subsystem_t s)
+
+   Returns the type of a subsystem
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  nvme_subsystem_t object
+
+**Description**
+
+Returns the subsystem type of **s**.
+
+**Return**
+
+'nvm' or 'discovery'
+
+
+.. c:function:: int nvme_scan_topology (nvme_root_t r, nvme_scan_filter_t f, void *f_args)
+
+   Scan NVMe topology and apply filter
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+``nvme_scan_filter_t f``
+  filter to apply
+
+``void *f_args``
+  user-specified argument to **f**
+
+**Description**
+
+Scans the NVMe topology and filters out the resulting elements
+by applying **f**.
+
+**Return**
+
+Number of elements scanned
+
+
+.. c:function:: const char * nvme_host_get_hostnqn (nvme_host_t h)
+
+   Host NQN of an nvme_host_t object
+
+**Parameters**
+
+``nvme_host_t h``
+  nvme_host_t object
+
+**Return**
+
+Host NQN of **h**
+
+
+.. c:function:: const char * nvme_host_get_hostid (nvme_host_t h)
+
+   Host ID of an nvme_host_t object
+
+**Parameters**
+
+``nvme_host_t h``
+  nvme_host_t object
+
+**Return**
+
+Host ID of **h**
+
+
+.. c:function:: void nvme_free_host (nvme_host_t h)
+
+   Free nvme_host_t object
+
+**Parameters**
+
+``nvme_host_t h``
+  nvme_host_t object
+
+
+.. c:function:: nvme_root_t nvme_scan (const char *config_file)
+
+   Scan NVMe topology
+
+**Parameters**
+
+``const char *config_file``
+  Configuration file
+
+**Return**
+
+nvme_root_t object of found elements
+
+
+.. c:function:: int nvme_read_config (nvme_root_t r, const char *config_file)
+
+   Read NVMe JSON configuration file
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+``const char *config_file``
+  JSON configuration file
+
+**Description**
+
+Read in the contents of **config_file** and merge them with
+the elements in **r**.
+
+**Return**
+
+0 on success, -1 on failure with errno set.
+
+
+.. c:function:: void nvme_refresh_topology (nvme_root_t r)
+
+   Refresh nvme_root_t object contents
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+**Description**
+
+Removes all elements in **r** and rescans the existing topology.
+
+
+.. c:function:: int nvme_update_config (nvme_root_t r)
+
+   Update JSON configuration
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+**Description**
+
+Updates the JSON configuration file with the contents of **r**.
+
+**Return**
+
+0 on success, -1 on failure.
+
+
+.. c:function:: int nvme_dump_config (nvme_root_t r)
+
+   Print the JSON configuration
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+**Description**
+
+Prints the current contents of the JSON configuration
+file to stdout.
+
+**Return**
+
+0 on success, -1 on failure.
+
+
+.. c:function:: int nvme_dump_tree (nvme_root_t r)
+
+   Dump internal object tree
+
+**Parameters**
+
+``nvme_root_t r``
+  nvme_root_t object
+
+**Description**
+
+Prints the internal object tree in JSON format
+to stdout.
+
+**Return**
+
+0 on success, -1 on failure.
+
+
+.. c:function:: char * nvme_get_attr (const char *d, const char *attr)
+
+   Read sysfs attribute
+
+**Parameters**
+
+``const char *d``
+  sysfs directory
+
+``const char *attr``
+  sysfs attribute name
+
+**Return**
+
+String with the contents of **attr** or ``NULL`` in case of an empty value
+        or in case of an error (indicated by non-zero errno code).
+
+
+.. c:function:: char * nvme_get_subsys_attr (nvme_subsystem_t s, const char *attr)
+
+   Read subsystem sysfs attribute
+
+**Parameters**
+
+``nvme_subsystem_t s``
+  nvme_subsystem_t object
+
+``const char *attr``
+  sysfs attribute name
+
+**Return**
+
+String with the contents of **attr** or ``NULL`` in case of an empty value
+        or in case of an error (indicated by non-zero errno code).
+
+
+.. c:function:: char * nvme_get_ctrl_attr (nvme_ctrl_t c, const char *attr)
+
+   Read controller sysfs attribute
+
+**Parameters**
+
+``nvme_ctrl_t c``
+  Controller instance
+
+``const char *attr``
+  sysfs attribute name
+
+**Return**
+
+String with the contents of **attr** or ``NULL`` in case of an empty value
+        or in case of an error (indicated by non-zero errno code).
+
+
+.. c:function:: char * nvme_get_ns_attr (nvme_ns_t n, const char *attr)
+
+   Read namespace sysfs attribute
+
+**Parameters**
+
+``nvme_ns_t n``
+  nvme_ns_t object
+
+``const char *attr``
+  sysfs attribute name
+
+**Return**
+
+String with the contents of **attr** or ``NULL`` in case of an empty value
+        or in case of an error (indicated by non-zero errno code).
+
+
+.. c:function:: nvme_ns_t nvme_subsystem_lookup_namespace (struct nvme_subsystem *s, __u32 nsid)
+
+   lookup namespace by NSID
+
+**Parameters**
+
+``struct nvme_subsystem *s``
+  nvme_subsystem_t object
+
+``__u32 nsid``
+  Namespace id
+
+**Return**
+
+nvme_ns_t of the namespace with id **nsid** in subsystem **s**
+
+
+.. c:function:: char * nvme_get_path_attr (nvme_path_t p, const char *attr)
+
+   Read path sysfs attribute
+
+**Parameters**
+
+``nvme_path_t p``
+  nvme_path_t object
+
+``const char *attr``
+  sysfs attribute name
+
+**Return**
+
+String with the contents of **attr** or ``NULL`` in case of an empty value
+        or in case of an error (indicated by non-zero errno code).
+
+
+.. c:function:: nvme_ns_t nvme_scan_namespace (const char *name)
+
+   scan namespace based on sysfs name
+
+**Parameters**
+
+``const char *name``
+  sysfs name of the namespace to scan
+
+**Return**
+
+nvme_ns_t object or NULL if not found.
+
+
+.. c:function:: const char * nvme_host_get_hostsymname (nvme_host_t h)
+
+   Get the host's symbolic name
+
+**Parameters**
+
+``nvme_host_t h``
+  Host for which the symbolic name should be returned.
+
+**Return**
+
+The symbolic name or NULL if a symbolic name hasn't been
+configure.
+
+
+.. c:function:: void nvme_host_set_hostsymname (nvme_host_t h, const char *hostsymname)
+
+   Set the host's symbolic name
+
+**Parameters**
+
+``nvme_host_t h``
+  Host for which the symbolic name should be set.
+
+``const char *hostsymname``
+  Symbolic name
+
+
diff --git a/doc/rst/types.rst b/doc/rst/types.rst
new file mode 100644 (file)
index 0000000..0435c87
--- /dev/null
@@ -0,0 +1,11739 @@
+.. _types.h:
+
+**types.h**
+
+
+NVMe standard definitions
+
+.. c:macro:: NVME_GET
+
+``NVME_GET (value, name)``
+
+   extract field from complex value
+
+**Parameters**
+
+``value``
+  The original value of a complex field
+
+``name``
+  The name of the sub-field within an nvme value
+
+**Description**
+
+By convention, this library defines _SHIFT and _MASK such that mask can be
+applied after the shift to isolate a specific set of bits that decode to a
+sub-field.
+
+**Return**
+
+The 'name' field from 'value'
+
+
+.. c:macro:: NVME_SET
+
+``NVME_SET (value, name)``
+
+   set field into complex value
+
+**Parameters**
+
+``value``
+  The value to be set in its completed position
+
+``name``
+  The name of the sub-field within an nvme value
+
+**Return**
+
+The 'name' field from 'value'
+
+
+
+
+.. c:enum:: nvme_constants
+
+   A place to stash various constant nvme values
+
+**Constants**
+
+``NVME_NSID_ALL``
+  A broadcast value that is used to specify all
+  namespaces
+
+``NVME_NSID_NONE``
+  The invalid namespace id, for when the nsid
+  parameter is not used in a command
+
+``NVME_UUID_NONE``
+  Use to omit a uuid command parameter
+
+``NVME_CNTLID_NONE``
+  Use to omit a cntlid command parameter
+
+``NVME_CNSSPECID_NONE``
+  Use to omit a cns_specific_id command parameter
+
+``NVME_LOG_LSP_NONE``
+  Use to omit a log lsp command parameter
+
+``NVME_LOG_LSI_NONE``
+  Use to omit a log lsi command parameter
+
+``NVME_LOG_LPO_NONE``
+  Use to omit a log lpo command parameter
+
+``NVME_IDENTIFY_DATA_SIZE``
+  The transfer size for nvme identify commands
+
+``NVME_LOG_SUPPORTED_LOG_PAGES_MAX``
+  The largest possible index in the supported
+  log pages log.
+
+``NVME_ID_NVMSET_LIST_MAX``
+  The largest possible nvmset index in identify
+  nvmeset
+
+``NVME_ID_UUID_LIST_MAX``
+  The largest possible uuid index in identify
+  uuid list
+
+``NVME_ID_CTRL_LIST_MAX``
+  The largest possible controller index in
+  identify controller list
+
+``NVME_ID_NS_LIST_MAX``
+  The largest possible namespace index in
+  identify namespace list
+
+``NVME_ID_SECONDARY_CTRL_MAX``
+  The largest possible secondary controller index
+  in identify secondary controller
+
+``NVME_ID_DOMAIN_LIST_MAX``
+  The largest possible domain index in the
+  in domain list
+
+``NVME_ID_ENDURANCE_GROUP_LIST_MAX``
+  The largest possible endurance group
+  index in the endurance group list
+
+``NVME_ID_ND_DESCRIPTOR_MAX``
+  The largest possible namespace granularity
+  index in the namespace granularity descriptor
+  list
+
+``NVME_FEAT_LBA_RANGE_MAX``
+  The largest possible LBA range index in feature
+  lba range type
+
+``NVME_LOG_ST_MAX_RESULTS``
+  The largest possible self test result index in the
+  device self test log
+
+``NVME_LOG_TELEM_BLOCK_SIZE``
+  Specification defined size of Telemetry Data Blocks
+
+``NVME_LOG_FID_SUPPORTED_EFFECTS_MAX``
+  The largest possible FID index in the
+  feature identifiers effects log.
+
+``NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX``
+  The largest possible MI Command index
+  in the MI Command effects log.
+
+``NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED``
+  The reserved space in the MI Command
+  effects log.
+
+``NVME_DSM_MAX_RANGES``
+  The largest possible range index in a data-set
+  management command
+
+``NVME_NQN_LENGTH``
+  Max length for NVMe Qualified Name
+
+``NVMF_TRADDR_SIZE``
+  Max Transport Address size
+
+``NVMF_TSAS_SIZE``
+  Max Transport Specific Address Subtype size
+
+``NVME_ZNS_CHANGED_ZONES_MAX``
+  Max number of zones in the changed zones log
+  page
+
+
+
+
+.. c:enum:: nvme_csi
+
+   Defined command set indicators
+
+**Constants**
+
+``NVME_CSI_NVM``
+  NVM Command Set Indicator
+
+``NVME_CSI_KV``
+  Key Value Command Set
+
+``NVME_CSI_ZNS``
+  Zoned Namespace Command Set
+
+
+
+
+.. c:enum:: nvme_register_offsets
+
+   controller registers for all transports. This is the layout of BAR0/1 for PCIe, and properties for fabrics.
+
+**Constants**
+
+``NVME_REG_CAP``
+  Controller Capabilities
+
+``NVME_REG_VS``
+  Version
+
+``NVME_REG_INTMS``
+  Interrupt Mask Set
+
+``NVME_REG_INTMC``
+  Interrupt Mask Clear
+
+``NVME_REG_CC``
+  Controller Configuration
+
+``NVME_REG_CSTS``
+  Controller Status
+
+``NVME_REG_NSSR``
+  NVM Subsystem Reset
+
+``NVME_REG_AQA``
+  Admin Queue Attributes
+
+``NVME_REG_ASQ``
+  Admin SQ Base Address
+
+``NVME_REG_ACQ``
+  Admin CQ Base Address
+
+``NVME_REG_CMBLOC``
+  Controller Memory Buffer Location
+
+``NVME_REG_CMBSZ``
+  Controller Memory Buffer Size
+
+``NVME_REG_BPINFO``
+  Boot Partition Information
+
+``NVME_REG_BPRSEL``
+  Boot Partition Read Select
+
+``NVME_REG_BPMBL``
+  Boot Partition Memory Buffer Location
+
+``NVME_REG_CMBMSC``
+  Controller Memory Buffer Memory Space Control
+
+``NVME_REG_CMBSTS``
+  Controller Memory Buffer Status
+
+``NVME_REG_CRTO``
+  Controller Ready Timeouts
+
+``NVME_REG_PMRCAP``
+  Persistent Memory Capabilities
+
+``NVME_REG_PMRCTL``
+  Persistent Memory Region Control
+
+``NVME_REG_PMRSTS``
+  Persistent Memory Region Status
+
+``NVME_REG_PMREBS``
+  Persistent Memory Region Elasticity Buffer Size
+
+``NVME_REG_PMRSWTP``
+  Memory Region Sustained Write Throughput
+
+``NVME_REG_PMRMSCL``
+  Persistent Memory Region Controller Memory Space Control Lower
+
+``NVME_REG_PMRMSCU``
+  Persistent Memory Region Controller Memory Space Control Upper
+
+
+.. c:function:: bool nvme_is_64bit_reg (__u32 offset)
+
+   Checks if offset of the controller register is a know 64bit value.
+
+**Parameters**
+
+``__u32 offset``
+  Offset of controller register field in bytes
+
+**Description**
+
+This function does not care about transport so that the offset is not going
+to be checked inside of this function for the unsupported fields in a
+specific transport. For example, BPMBL(Boot Partition Memory Buffer
+Location) register is not supported by fabrics, but it can be checked here.
+
+**Return**
+
+true if given offset is 64bit register, otherwise it returns false.
+
+
+.. c:function:: __u64 nvme_cmb_size (__u32 cmbsz)
+
+   Calculate size of the controller memory buffer
+
+**Parameters**
+
+``__u32 cmbsz``
+  Value from controller register ``NVME_REG_CMBSZ``
+
+**Return**
+
+size of controller memory buffer in bytes
+
+
+.. c:function:: __u64 nvme_pmr_size (__u32 pmrebs)
+
+   Calculate size of persistent memory region elasticity buffer
+
+**Parameters**
+
+``__u32 pmrebs``
+  Value from controller register ``NVME_REG_PMREBS``
+
+**Return**
+
+size of controller persistent memory buffer in bytes
+
+
+.. c:function:: __u64 nvme_pmr_throughput (__u32 pmrswtp)
+
+   Calculate throughput of persistent memory buffer
+
+**Parameters**
+
+``__u32 pmrswtp``
+  Value from controller register ``NVME_REG_PMRSWTP``
+
+**Return**
+
+throughput of controller persistent memory buffer in bytes/second
+
+
+
+
+.. c:enum:: nvme_psd_flags
+
+   Possible flag values in nvme power state descriptor
+
+**Constants**
+
+``NVME_PSD_FLAGS_MXPS``
+  Indicates the scale for the Maximum Power
+  field. If this bit is cleared, then the scale of the
+  Maximum Power field is in 0.01 Watts. If this bit is
+  set, then the scale of the Maximum Power field is in
+  0.0001 Watts.
+
+``NVME_PSD_FLAGS_NOPS``
+  Indicates whether the controller processes I/O
+  commands in this power state. If this bit is cleared,
+  then the controller processes I/O commands in this
+  power state. If this bit is set, then the controller
+  does not process I/O commands in this power state.
+
+
+
+
+.. c:enum:: nvme_psd_ps
+
+   Known values for :c:type:`struct nvme_psd <nvme_psd>` ``ips`` and ``aps``. Use with nvme_psd_power_scale() to extract the power scale field to match this enum.
+
+**Constants**
+
+``NVME_PSD_PS_NOT_REPORTED``
+  Not reported
+
+``NVME_PSD_PS_100_MICRO_WATT``
+  0.0001 watt scale
+
+``NVME_PSD_PS_10_MILLI_WATT``
+  0.01 watt scale
+
+
+.. c:function:: unsigned int nvme_psd_power_scale (__u8 ps)
+
+   power scale occupies the upper 3 bits
+
+**Parameters**
+
+``__u8 ps``
+  power scale value
+
+**Return**
+
+power scale value
+
+
+
+
+.. c:enum:: nvme_psd_workload
+
+   Specifies a workload hint in the Power Management Feature (see :c:type:`struct nvme_psd <nvme_psd>`.apw) to inform the NVM subsystem or indicate the conditions for the active power level.
+
+**Constants**
+
+``NVME_PSD_WORKLOAD_NP``
+  The workload is unknown or not provided.
+
+``NVME_PSD_WORKLOAD_1``
+  Extended Idle Period with a Burst of Random Write
+  consists of five minutes of idle followed by
+  thirty-two random write commands of size 1 MiB
+  submitted to a single controller while all other
+  controllers in the NVM subsystem are idle, and then
+  thirty (30) seconds of idle.
+
+``NVME_PSD_WORKLOAD_2``
+  Heavy Sequential Writes consists of 80,000
+  sequential write commands of size 128 KiB submitted to
+  a single controller while all other controllers in the
+  NVM subsystem are idle.  The submission queue(s)
+  should be sufficiently large allowing the host to
+  ensure there are multiple commands pending at all
+  times during the workload.
+
+
+
+
+.. c:struct:: nvme_id_psd
+
+   Power Management data structure
+
+**Definition**
+
+::
+
+  struct nvme_id_psd {
+    __le16 mp;
+    __u8 rsvd2;
+    __u8 flags;
+    __le32 enlat;
+    __le32 exlat;
+    __u8 rrt;
+    __u8 rrl;
+    __u8 rwt;
+    __u8 rwl;
+    __le16 idlp;
+    __u8 ips;
+    __u8 rsvd19;
+    __le16 actp;
+    __u8 apws;
+    __u8 rsvd23[9];
+  };
+
+**Members**
+
+``mp``
+  Maximum Power indicates the sustained maximum power consumed by the
+  NVM subsystem in this power state. The power in Watts is equal to
+  the value in this field multiplied by the scale specified in the Max
+  Power Scale bit (see :c:type:`enum nvme_psd_flags <nvme_psd_flags>`). A value of 0 indicates
+  Maximum Power is not reported.
+
+``rsvd2``
+  Reserved
+
+``flags``
+  Additional decoding flags, see :c:type:`enum nvme_psd_flags <nvme_psd_flags>`.
+
+``enlat``
+  Entry Latency indicates the maximum latency in microseconds
+  associated with entering this power state. A value of 0 indicates
+  Entry Latency is not reported.
+
+``exlat``
+  Exit Latency indicates the maximum latency in microseconds
+  associated with exiting this power state. A value of 0 indicates
+  Exit Latency is not reported.
+
+``rrt``
+  Relative Read Throughput indicates the read throughput rank
+  associated with this power state relative to others. The value in
+  this is less than the number of supported power states.
+
+``rrl``
+  Relative Read Latency indicates the read latency rank associated
+  with this power state relative to others. The value in this field is
+  less than the number of supported power states.
+
+``rwt``
+  Relative Write Throughput indicates write throughput rank associated
+  with this power state relative to others. The value in this field is
+  less than the number of supported power states
+
+``rwl``
+  Relative Write Latency indicates the write latency rank associated
+  with this power state relative to others. The value in this field is
+  less than the number of supported power states
+
+``idlp``
+  Idle Power indicates the typical power consumed by the NVM
+  subsystem over 30 seconds in this power state when idle.
+
+``ips``
+  Idle Power Scale indicates the scale for :c:type:`struct nvme_id_psd <nvme_id_psd>`.idlp,
+  see :c:type:`enum nvme_psd_ps <nvme_psd_ps>` for decoding this field.
+
+``rsvd19``
+  Reserved
+
+``actp``
+  Active Power indicates the largest average power consumed by the
+  NVM subsystem over a 10 second period in this power state with
+  the workload indicated in the Active Power Workload field.
+
+``apws``
+  Bits 7-6: Active Power Scale(APS) indicates the scale for the :c:type:`struct
+  nvme_id_psd <nvme_id_psd>`.actp, see :c:type:`enum nvme_psd_ps <nvme_psd_ps>` for decoding this value.
+  Bits 2-0: Active Power Workload(APW) indicates the workload
+  used to calculate maximum power for this power state.
+  See :c:type:`enum nvme_psd_workload <nvme_psd_workload>` for decoding this field.
+
+``rsvd23``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_id_ctrl
+
+   Identify Controller data structure
+
+**Definition**
+
+::
+
+  struct nvme_id_ctrl {
+    __le16 vid;
+    __le16 ssvid;
+    char sn[20];
+    char mn[40];
+    char fr[8];
+    __u8 rab;
+    __u8 ieee[3];
+    __u8 cmic;
+    __u8 mdts;
+    __le16 cntlid;
+    __le32 ver;
+    __le32 rtd3r;
+    __le32 rtd3e;
+    __le32 oaes;
+    __le32 ctratt;
+    __le16 rrls;
+    __u8 rsvd102[9];
+    __u8 cntrltype;
+    __u8 fguid[16];
+    __le16 crdt1;
+    __le16 crdt2;
+    __le16 crdt3;
+    __u8 rsvd134[119];
+    __u8 nvmsr;
+    __u8 vwci;
+    __u8 mec;
+    __le16 oacs;
+    __u8 acl;
+    __u8 aerl;
+    __u8 frmw;
+    __u8 lpa;
+    __u8 elpe;
+    __u8 npss;
+    __u8 avscc;
+    __u8 apsta;
+    __le16 wctemp;
+    __le16 cctemp;
+    __le16 mtfa;
+    __le32 hmpre;
+    __le32 hmmin;
+    __u8 tnvmcap[16];
+    __u8 unvmcap[16];
+    __le32 rpmbs;
+    __le16 edstt;
+    __u8 dsto;
+    __u8 fwug;
+    __le16 kas;
+    __le16 hctma;
+    __le16 mntmt;
+    __le16 mxtmt;
+    __le32 sanicap;
+    __le32 hmminds;
+    __le16 hmmaxd;
+    __le16 nsetidmax;
+    __le16 endgidmax;
+    __u8 anatt;
+    __u8 anacap;
+    __le32 anagrpmax;
+    __le32 nanagrpid;
+    __le32 pels;
+    __le16 domainid;
+    __u8 rsvd358[10];
+    __u8 megcap[16];
+    __u8 rsvd384[128];
+    __u8 sqes;
+    __u8 cqes;
+    __le16 maxcmd;
+    __le32 nn;
+    __le16 oncs;
+    __le16 fuses;
+    __u8 fna;
+    __u8 vwc;
+    __le16 awun;
+    __le16 awupf;
+    __u8 icsvscc;
+    __u8 nwpc;
+    __le16 acwu;
+    __le16 ocfs;
+    __le32 sgls;
+    __le32 mnan;
+    __u8 maxdna[16];
+    __le32 maxcna;
+    __u8 rsvd564[204];
+    char subnqn[NVME_NQN_LENGTH];
+    __u8 rsvd1024[768];
+    __le32 ioccsz;
+    __le32 iorcsz;
+    __le16 icdoff;
+    __u8 fcatt;
+    __u8 msdbd;
+    __le16 ofcs;
+    __u8 dctype;
+    __u8 rsvd1807[241];
+    struct nvme_id_psd      psd[32];
+    __u8 vs[1024];
+  };
+
+**Members**
+
+``vid``
+  PCI Vendor ID, the company vendor identifier that is assigned by
+  the PCI SIG.
+
+``ssvid``
+  PCI Subsystem Vendor ID, the company vendor identifier that is
+  assigned by the PCI SIG for the subsystem.
+
+``sn``
+  Serial Number in ASCII
+
+``mn``
+  Model Number in ASCII
+
+``fr``
+  Firmware Revision in ASCII, the currently active firmware
+  revision for the NVM subsystem
+
+``rab``
+  Recommended Arbitration Burst, reported as a power of two
+
+``ieee``
+  IEEE assigned Organization Unique Identifier
+
+``cmic``
+  Controller Multipath IO and Namespace Sharing  Capabilities of
+  the controller and NVM subsystem. See :c:type:`enum nvme_id_ctrl_cmic <nvme_id_ctrl_cmic>`.
+
+``mdts``
+  Max Data Transfer Size is the largest data transfer size. The
+  host should not submit a command that exceeds this maximum data
+  transfer size. The value is in units of the minimum memory page
+  size (CAP.MPSMIN) and is reported as a power of two
+
+``cntlid``
+  Controller ID, the NVM subsystem unique controller identifier
+  associated with the controller.
+
+``ver``
+  Version, this field contains the value reported in the Version
+  register, or property (see :c:type:`enum nvme_registers <nvme_registers>` ``NVME_REG_VS``).
+
+``rtd3r``
+  RTD3 Resume Latency, the expected latency in microseconds to resume
+  from Runtime D3
+
+``rtd3e``
+  RTD3 Exit Latency, the typical latency in microseconds to enter
+  Runtime D3.
+
+``oaes``
+  Optional Async Events Supported, see **enum** nvme_id_ctrl_oaes.
+
+``ctratt``
+  Controller Attributes, see **enum** nvme_id_ctrl_ctratt.
+
+``rrls``
+  Read Recovery Levels. If a bit is set, then the corresponding
+  Read Recovery Level is supported. If a bit is cleared, then the
+  corresponding Read Recovery Level is not supported.
+
+``rsvd102``
+  Reserved
+
+``cntrltype``
+  Controller Type, see :c:type:`enum nvme_id_ctrl_cntrltype <nvme_id_ctrl_cntrltype>`
+
+``fguid``
+  FRU GUID, a 128-bit value that is globally unique for a given
+  Field Replaceable Unit
+
+``crdt1``
+  Controller Retry Delay time in 100 millisecond units if CQE CRD
+  field is 1
+
+``crdt2``
+  Controller Retry Delay time in 100 millisecond units if CQE CRD
+  field is 2
+
+``crdt3``
+  Controller Retry Delay time in 100 millisecond units if CQE CRD
+  field is 3
+
+``rsvd134``
+  Reserved
+
+``nvmsr``
+  NVM Subsystem Report, see :c:type:`enum nvme_id_ctrl_nvmsr <nvme_id_ctrl_nvmsr>`
+
+``vwci``
+  VPD Write Cycle Information, see :c:type:`enum nvme_id_ctrl_vwci <nvme_id_ctrl_vwci>`
+
+``mec``
+  Management Endpoint Capabilities, see :c:type:`enum nvme_id_ctrl_mec <nvme_id_ctrl_mec>`
+
+``oacs``
+  Optional Admin Command Support,the optional Admin commands and
+  features supported by the controller, see :c:type:`enum nvme_id_ctrl_oacs <nvme_id_ctrl_oacs>`.
+
+``acl``
+  Abort Command Limit, the maximum number of concurrently
+  executing Abort commands supported by the controller. This is a
+  0's based value.
+
+``aerl``
+  Async Event Request Limit, the maximum number of concurrently
+  outstanding Asynchronous Event Request commands supported by the
+  controller This is a 0's based value.
+
+``frmw``
+  Firmware Updates indicates capabilities regarding firmware
+  updates. See :c:type:`enum nvme_id_ctrl_frmw <nvme_id_ctrl_frmw>`.
+
+``lpa``
+  Log Page Attributes, see :c:type:`enum nvme_id_ctrl_lpa <nvme_id_ctrl_lpa>`.
+
+``elpe``
+  Error Log Page Entries, the maximum number of Error Information
+  log entries that are stored by the controller. This field is a
+  0's based value.
+
+``npss``
+  Number of Power States Supported, the number of NVM Express
+  power states supported by the controller, indicating the number
+  of valid entries in :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.psd. This is a 0's
+  based value.
+
+``avscc``
+  Admin Vendor Specific Command Configuration, see
+  :c:type:`enum nvme_id_ctrl_avscc <nvme_id_ctrl_avscc>`.
+
+``apsta``
+  Autonomous Power State Transition Attributes, see
+  :c:type:`enum nvme_id_ctrl_apsta <nvme_id_ctrl_apsta>`.
+
+``wctemp``
+  Warning Composite Temperature Threshold indicates
+  the minimum Composite Temperature field value (see :c:type:`struct
+  nvme_smart_log <nvme_smart_log>`.critical_comp_time) that indicates an overheating
+  condition during which controller operation continues.
+
+``cctemp``
+  Critical Composite Temperature Threshold, field indicates the
+  minimum Composite Temperature field value (see :c:type:`struct
+  nvme_smart_log <nvme_smart_log>`.critical_comp_time) that indicates a critical
+  overheating condition.
+
+``mtfa``
+  Maximum Time for Firmware Activation indicates the maximum time
+  the controller temporarily stops processing commands to activate
+  the firmware image, specified in 100 millisecond units. This
+  field is always valid if the controller supports firmware
+  activation without a reset.
+
+``hmpre``
+  Host Memory Buffer Preferred Size indicates the preferred size
+  that the host is requested to allocate for the Host Memory
+  Buffer feature in 4 KiB units.
+
+``hmmin``
+  Host Memory Buffer Minimum Size indicates the minimum size that
+  the host is requested to allocate for the Host Memory Buffer
+  feature in 4 KiB units.
+
+``tnvmcap``
+  Total NVM Capacity, the total NVM capacity in the NVM subsystem.
+  The value is in bytes.
+
+``unvmcap``
+  Unallocated NVM Capacity, the unallocated NVM capacity in the
+  NVM subsystem. The value is in bytes.
+
+``rpmbs``
+  Replay Protected Memory Block Support, see
+  :c:type:`enum nvme_id_ctrl_rpmbs <nvme_id_ctrl_rpmbs>`.
+
+``edstt``
+  Extended Device Self-test Time, if Device Self-test command is
+  supported (see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.oacs, ``NVME_CTRL_OACS_SELF_TEST``),
+  then this field indicates the nominal amount of time in one
+  minute units that the controller takes to complete an extended
+  device self-test operation when in power state 0.
+
+``dsto``
+  Device Self-test Options, see :c:type:`enum nvme_id_ctrl_dsto <nvme_id_ctrl_dsto>`.
+
+``fwug``
+  Firmware Update Granularity indicates the granularity and
+  alignment requirement of the firmware image being updated by the
+  Firmware Image Download command. The value is reported in 4 KiB
+  units. A value of 0h indicates no information on granularity is
+  provided. A value of FFh indicates no restriction
+
+``kas``
+  Keep Alive Support indicates the granularity of the Keep Alive
+  Timer in 100 millisecond units.
+
+``hctma``
+  Host Controlled Thermal Management Attributes, see
+  :c:type:`enum nvme_id_ctrl_hctm <nvme_id_ctrl_hctm>`.
+
+``mntmt``
+  Minimum Thermal Management Temperature indicates the minimum
+  temperature, in degrees Kelvin, that the host may request in the
+  Thermal Management Temperature 1 field and Thermal Management
+  Temperature 2 field of a Set Features command with the Feature
+  Identifier field set to ``NVME_FEAT_FID_HCTM``.
+
+``mxtmt``
+  Maximum Thermal Management Temperature indicates the maximum
+  temperature, in degrees Kelvin, that the host may request in the
+  Thermal Management Temperature 1 field and Thermal Management
+  Temperature 2 field of the Set Features command with the Feature
+  Identifier set to ``NVME_FEAT_FID_HCTM``.
+
+``sanicap``
+  Sanitize Capabilities, see :c:type:`enum nvme_id_ctrl_sanicap <nvme_id_ctrl_sanicap>`
+
+``hmminds``
+  Host Memory Buffer Minimum Descriptor Entry Size indicates the
+  minimum usable size of a Host Memory Buffer Descriptor Entry in
+  4 KiB units.
+
+``hmmaxd``
+  Host Memory Maximum Descriptors Entries indicates the number of
+  usable Host Memory Buffer Descriptor Entries.
+
+``nsetidmax``
+  NVM Set Identifier Maximum, defines the maximum value of a valid
+  NVM Set Identifier for any controller in the NVM subsystem.
+
+``endgidmax``
+  Endurance Group Identifier Maximum, defines the maximum value of
+  a valid Endurance Group Identifier for any controller in the NVM
+  subsystem.
+
+``anatt``
+  ANA Transition Time indicates the maximum amount of time, in
+  seconds, for a transition between ANA states or the maximum
+  amount of time, in seconds, that the controller reports the ANA
+  change state.
+
+``anacap``
+  Asymmetric Namespace Access Capabilities, see
+  :c:type:`enum nvme_id_ctrl_anacap <nvme_id_ctrl_anacap>`.
+
+``anagrpmax``
+  ANA Group Identifier Maximum indicates the maximum value of a
+  valid ANA Group Identifier for any controller in the NVM
+  subsystem.
+
+``nanagrpid``
+  Number of ANA Group Identifiers indicates the number of ANA
+  groups supported by this controller.
+
+``pels``
+  Persistent Event Log Size indicates the maximum reportable size
+  for the Persistent Event Log.
+
+``domainid``
+  Domain Identifier indicates the identifier of the domain
+  that contains this controller.
+
+``rsvd358``
+  Reserved
+
+``megcap``
+  Max Endurance Group Capacity indicates the maximum capacity
+  of a single Endurance Group.
+
+``rsvd384``
+  Reserved
+
+``sqes``
+  Submission Queue Entry Size, see :c:type:`enum nvme_id_ctrl_sqes <nvme_id_ctrl_sqes>`.
+
+``cqes``
+  Completion Queue Entry Size, see :c:type:`enum nvme_id_ctrl_cqes <nvme_id_ctrl_cqes>`.
+
+``maxcmd``
+  Maximum Outstanding Commands indicates the maximum number of
+  commands that the controller processes at one time for a
+  particular queue.
+
+``nn``
+  Number of Namespaces indicates the maximum value of a valid
+  nsid for the NVM subsystem. If the MNAN (:c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.mnan
+  field is cleared to 0h, then this field also indicates the
+  maximum number of namespaces supported by the NVM subsystem.
+
+``oncs``
+  Optional NVM Command Support, see :c:type:`enum nvme_id_ctrl_oncs <nvme_id_ctrl_oncs>`.
+
+``fuses``
+  Fused Operation Support, see :c:type:`enum nvme_id_ctrl_fuses <nvme_id_ctrl_fuses>`.
+
+``fna``
+  Format NVM Attributes, see :c:type:`enum nvme_id_ctrl_fna <nvme_id_ctrl_fna>`.
+
+``vwc``
+  Volatile Write Cache, see :c:type:`enum nvme_id_ctrl_vwc <nvme_id_ctrl_vwc>`.
+
+``awun``
+  Atomic Write Unit Normal indicates the size of the write
+  operation guaranteed to be written atomically to the NVM across
+  all namespaces with any supported namespace format during normal
+  operation. This field is specified in logical blocks and is a
+  0's based value.
+
+``awupf``
+  Atomic Write Unit Power Fail indicates the size of the write
+  operation guaranteed to be written atomically to the NVM across
+  all namespaces with any supported namespace format during a
+  power fail or error condition. This field is specified in
+  logical blocks and is a 0’s based value.
+
+``icsvscc``
+  NVM Vendor Specific Command Configuration, see
+  :c:type:`enum nvme_id_ctrl_nvscc <nvme_id_ctrl_nvscc>`.
+
+``nwpc``
+  Namespace Write Protection Capabilities, see
+  :c:type:`enum nvme_id_ctrl_nwpc <nvme_id_ctrl_nwpc>`.
+
+``acwu``
+  Atomic Compare & Write Unit indicates the size of the write
+  operation guaranteed to be written atomically to the NVM across
+  all namespaces with any supported namespace format for a Compare
+  and Write fused operation. This field is specified in logical
+  blocks and is a 0’s based value.
+
+``ocfs``
+  Optional Copy Formats Supported, each bit n means controller
+  supports Copy Format n.
+
+``sgls``
+  SGL Support, see :c:type:`enum nvme_id_ctrl_sgls <nvme_id_ctrl_sgls>`
+
+``mnan``
+  Maximum Number of Allowed Namespaces indicates the maximum
+  number of namespaces supported by the NVM subsystem.
+
+``maxdna``
+  Maximum Domain Namespace Attachments indicates the maximum
+  of the sum of the number of namespaces attached to each I/O
+  controller in the Domain.
+
+``maxcna``
+  Maximum I/O Controller Namespace Attachments indicates the
+  maximum number of namespaces that are allowed to be attached to
+  this I/O controller.
+
+``rsvd564``
+  Reserved
+
+``subnqn``
+  NVM Subsystem NVMe Qualified Name, UTF-8 null terminated string
+
+``rsvd1024``
+  Reserved
+
+``ioccsz``
+  I/O Queue Command Capsule Supported Size, defines the maximum
+  I/O command capsule size in 16 byte units.
+
+``iorcsz``
+  I/O Queue Response Capsule Supported Size, defines the maximum
+  I/O response capsule size in 16 byte units.
+
+``icdoff``
+  In Capsule Data Offset, defines the offset where data starts
+  within a capsule. This value is applicable to I/O Queues only.
+
+``fcatt``
+  Fabrics Controller Attributes, see :c:type:`enum nvme_id_ctrl_fcatt <nvme_id_ctrl_fcatt>`.
+
+``msdbd``
+  Maximum SGL Data Block Descriptors indicates the maximum
+  number of SGL Data Block or Keyed SGL Data Block descriptors
+  that a host is allowed to place in a capsule. A value of 0h
+  indicates no limit.
+
+``ofcs``
+  Optional Fabric Commands Support, see :c:type:`enum nvme_id_ctrl_ofcs <nvme_id_ctrl_ofcs>`.
+
+``dctype``
+  Discovery Controller Type (DCTYPE). This field indicates what
+  type of Discovery controller the controller is (see enum
+  nvme_id_ctrl_dctype)
+
+``rsvd1807``
+  Reserved
+
+``psd``
+  Power State Descriptors, see :c:type:`struct nvme_id_psd <nvme_id_psd>`.
+
+``vs``
+  Vendor Specific
+
+
+
+
+
+.. c:enum:: nvme_id_ctrl_cmic
+
+   Controller Multipath IO and Namespace Sharing Capabilities of the controller and NVM subsystem.
+
+**Constants**
+
+``NVME_CTRL_CMIC_MULTI_PORT``
+  If set, then the NVM subsystem may contain
+  more than one NVM subsystem port, otherwise
+  the NVM subsystem contains only a single
+  NVM subsystem port.
+
+``NVME_CTRL_CMIC_MULTI_CTRL``
+  If set, then the NVM subsystem may contain
+  two or more controllers, otherwise the
+  NVM subsystem contains only a single
+  controller. An NVM subsystem that contains
+  multiple controllers may be used by
+  multiple hosts, or may provide multiple
+  paths for a single host.
+
+``NVME_CTRL_CMIC_MULTI_SRIOV``
+  If set, then the controller is associated
+  with an SR-IOV Virtual Function, otherwise
+  it is associated with a PCI Function
+  or a Fabrics connection.
+
+``NVME_CTRL_CMIC_MULTI_ANA_REPORTING``
+  If set, then the NVM subsystem supports
+  Asymmetric Namespace Access Reporting.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_oaes
+
+   Optional Asynchronous Events Supported
+
+**Constants**
+
+``NVME_CTRL_OAES_NA``
+  Namespace Attribute Notices event supported
+
+``NVME_CTRL_OAES_FA``
+  Firmware Activation Notices event supported
+
+``NVME_CTRL_OAES_ANA``
+  ANA Change Notices supported
+
+``NVME_CTRL_OAES_PLEA``
+  Predictable Latency Event Aggregate Log
+  Change Notices event supported
+
+``NVME_CTRL_OAES_LBAS``
+  LBA Status Information Notices event supported
+
+``NVME_CTRL_OAES_EGE``
+  Endurance Group Events Aggregate Log Change
+  Notices event supported
+
+``NVME_CTRL_OAES_NS``
+  Normal NVM Subsystem Shutdown event supported
+
+``NVME_CTRL_OAES_ZD``
+  Zone Descriptor Change Notifications supported
+
+``NVME_CTRL_OAES_DL``
+  Discover Log Page Change Notifications supported
+
+
+
+
+.. c:enum:: nvme_id_ctrl_ctratt
+
+   Controller attributes
+
+**Constants**
+
+``NVME_CTRL_CTRATT_128_ID``
+  128-bit Host Identifier supported
+
+``NVME_CTRL_CTRATT_NON_OP_PSP``
+  Non-Operational Poser State Permissive Mode
+  supported
+
+``NVME_CTRL_CTRATT_NVM_SETS``
+  NVM Sets supported
+
+``NVME_CTRL_CTRATT_READ_RECV_LVLS``
+  Read Recovery Levels supported
+
+``NVME_CTRL_CTRATT_ENDURANCE_GROUPS``
+  Endurance Groups supported
+
+``NVME_CTRL_CTRATT_PREDICTABLE_LAT``
+  Predictable Latency Mode supported
+
+``NVME_CTRL_CTRATT_TBKAS``
+  Traffic Based Keep Alive Support
+
+``NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY``
+  Namespace Granularity reporting
+  supported
+
+``NVME_CTRL_CTRATT_SQ_ASSOCIATIONS``
+  SQ Associations supported
+
+``NVME_CTRL_CTRATT_UUID_LIST``
+  UUID List reporting supported
+
+``NVME_CTRL_CTRATT_MDS``
+  Multi-Domain Subsystem supported
+
+``NVME_CTRL_CTRATT_FIXED_CAP``
+  Fixed Capacity Management  supported
+
+``NVME_CTRL_CTRATT_VARIABLE_CAP``
+  Variable Capacity Management supported
+
+``NVME_CTRL_CTRATT_DEL_ENDURANCE_GROUPS``
+  Delete Endurance Groups supported
+
+``NVME_CTRL_CTRATT_DEL_NVM_SETS``
+  Delete NVM Sets supported
+
+``NVME_CTRL_CTRATT_ELBAS``
+  Extended LBA Formats supported
+
+``NVME_CTRL_CTRATT_FDPS``
+  Flexible Data Placement supported
+
+
+
+
+.. c:enum:: nvme_id_ctrl_cntrltype
+
+   Controller types
+
+**Constants**
+
+``NVME_CTRL_CNTRLTYPE_IO``
+  NVM I/O controller
+
+``NVME_CTRL_CNTRLTYPE_DISCOVERY``
+  Discovery controller
+
+``NVME_CTRL_CNTRLTYPE_ADMIN``
+  Admin controller
+
+
+
+
+.. c:enum:: nvme_id_ctrl_dctype
+
+   Discovery Controller types
+
+**Constants**
+
+``NVME_CTRL_DCTYPE_NOT_REPORTED``
+  Not reported (I/O, Admin, and pre-TP8010)
+
+``NVME_CTRL_DCTYPE_DDC``
+  Direct Discovery controller
+
+``NVME_CTRL_DCTYPE_CDC``
+  Central Discovery controller
+
+
+
+
+.. c:enum:: nvme_id_ctrl_nvmsr
+
+   This field reports information associated with the NVM Subsystem, see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.nvmsr.
+
+**Constants**
+
+``NVME_CTRL_NVMSR_NVMESD``
+  If set, then the NVM Subsystem is part of an NVMe
+  Storage Device; if cleared, then the NVM Subsystem
+  is not part of an NVMe Storage Device.
+
+``NVME_CTRL_NVMSR_NVMEE``
+  If set’, then the NVM Subsystem is part of an NVMe
+  Enclosure; if cleared, then the NVM Subsystem is
+  not part of an NVMe Enclosure.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_vwci
+
+   This field indicates information about remaining number of times that VPD contents are able to be updated using the VPD Write command, see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.vwci.
+
+**Constants**
+
+``NVME_CTRL_VWCI_VWCR``
+  Mask to get value of VPD Write Cycles Remaining. If
+  the VPD Write Cycle Remaining Valid bit is set, then
+  this field contains a value indicating the remaining
+  number of times that VPD contents are able to be
+  updated using the VPD Write command. If this field is
+  set to 7Fh, then the remaining number of times that
+  VPD contents are able to be updated using the VPD
+  Write command is greater than or equal to 7Fh.
+
+``NVME_CTRL_VWCI_VWCRV``
+  VPD Write Cycle Remaining Valid. If this bit is set,
+  then the VPD Write Cycle Remaining field is valid. If
+  this bit is cleared, then the VPD Write Cycles
+  Remaining field is invalid and cleared to 0h.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_mec
+
+   Flags indicating the capabilities of the Management Endpoint in the Controller, :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.mec.
+
+**Constants**
+
+``NVME_CTRL_MEC_SMBUSME``
+  If set, then the NVM Subsystem contains a Management
+  Endpoint on an SMBus/I2C port.
+
+``NVME_CTRL_MEC_PCIEME``
+  If set, then the NVM Subsystem contains a Management
+  Endpoint on a PCIe port.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_oacs
+
+   Flags indicating the optional Admin commands and features supported by the controller, see :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.oacs.
+
+**Constants**
+
+``NVME_CTRL_OACS_SECURITY``
+  If set, then the controller supports the
+  Security Send and Security Receive commands.
+
+``NVME_CTRL_OACS_FORMAT``
+  If set then the controller supports the Format
+  NVM command.
+
+``NVME_CTRL_OACS_FW``
+  If set, then the controller supports the
+  Firmware Commit and Firmware Image Download commands.
+
+``NVME_CTRL_OACS_NS_MGMT``
+  If set, then the controller supports the
+  Namespace Management capability
+
+``NVME_CTRL_OACS_SELF_TEST``
+  If set, then the controller supports the Device
+  Self-test command.
+
+``NVME_CTRL_OACS_DIRECTIVES``
+  If set, then the controller supports Directives
+  and the Directive Send and Directive Receive
+  commands.
+
+``NVME_CTRL_OACS_NVME_MI``
+  If set, then the controller supports the NVMe-MI
+  Send and NVMe-MI Receive commands.
+
+``NVME_CTRL_OACS_VIRT_MGMT``
+  If set, then the controller supports the
+  Virtualization Management command.
+
+``NVME_CTRL_OACS_DBBUF_CFG``
+  If set, then the controller supports the
+  Doorbell Buffer Config command.
+
+``NVME_CTRL_OACS_LBA_STATUS``
+  If set, then the controller supports the Get LBA
+  Status capability.
+
+``NVME_CTRL_OACS_CMD_FEAT_LD``
+  If set, then the controller supports the command
+  and feature lockdown capability.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_frmw
+
+   Flags and values indicates capabilities regarding firmware updates from :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.frmw.
+
+**Constants**
+
+``NVME_CTRL_FRMW_1ST_RO``
+  If set, the first firmware slot is readonly
+
+``NVME_CTRL_FRMW_NR_SLOTS``
+  Mask to get the value of the number of
+  firmware slots that the controller supports.
+
+``NVME_CTRL_FRMW_FW_ACT_NO_RESET``
+  If set, the controller supports firmware
+  activation without a reset.
+
+``NVME_CTRL_FRMW_MP_UP_DETECTION``
+  If set, the controller is able to detect
+  overlapping firmware/boot partition
+  image update.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_lpa
+
+   Flags indicating optional attributes for log pages that are accessed via the Get Log Page command.
+
+**Constants**
+
+``NVME_CTRL_LPA_SMART_PER_NS``
+  If set, controller supports SMART/Health log
+  page on a per namespace basis.
+
+``NVME_CTRL_LPA_CMD_EFFECTS``
+  If Set, the controller supports the commands
+  supported and effects log page.
+
+``NVME_CTRL_LPA_EXTENDED``
+  If set, the controller supports extended data
+  for log page command including extended number
+  of dwords and log page offset fields.
+
+``NVME_CTRL_LPA_TELEMETRY``
+  If set, the controller supports the telemetry
+  host-initiated and telemetry controller-initiated
+  log pages and sending telemetry log notices.
+
+``NVME_CTRL_LPA_PERSETENT_EVENT``
+  If set, the controller supports
+  persistent event log.
+
+``NVME_CTRL_LPA_LI0_LI5_LI12_LI13``
+  If set, the controller supports
+  - log pages log page.
+  - returning scope of each command in
+    commands supported and effects log
+    page.
+  - feature identifiers supported and
+    effects log page.
+  - NVMe-MI commands supported and
+    effects log page.
+
+``NVME_CTRL_LPA_DA4_TELEMETRY``
+  If set, the controller supports data
+  area 4 for telemetry host-initiated and
+  telemetry.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_avscc
+
+   Flags indicating the configuration settings for Admin Vendor Specific command handling.
+
+**Constants**
+
+``NVME_CTRL_AVSCC_AVS``
+  If set, all Admin Vendor Specific Commands use the
+  optional vendor specific command format with NDT and
+  NDM fields.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_apsta
+
+   Flags indicating the attributes of the autonomous power state transition feature.
+
+**Constants**
+
+``NVME_CTRL_APSTA_APST``
+  If set, then the controller supports autonomous power
+  state transitions.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_rpmbs
+
+   This field indicates if the controller supports one or more Replay Protected Memory Blocks, from :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>`.rpmbs.
+
+**Constants**
+
+``NVME_CTRL_RPMBS_NR_UNITS``
+  Mask to get the value of the Number of RPMB Units
+
+``NVME_CTRL_RPMBS_AUTH_METHOD``
+  Mask to get the value of the Authentication Method
+
+``NVME_CTRL_RPMBS_TOTAL_SIZE``
+  Mask to get the value of Total Size
+
+``NVME_CTRL_RPMBS_ACCESS_SIZE``
+  Mask to get the value of Access Size
+
+
+
+
+.. c:enum:: nvme_id_ctrl_dsto
+
+   Flags indicating the optional Device Self-test command or operation behaviors supported by the controller or NVM subsystem.
+
+**Constants**
+
+``NVME_CTRL_DSTO_ONE_DST``
+  If set,  then the NVM subsystem supports only one
+  device self-test operation in progress at a time.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_hctm
+
+   Flags indicate the attributes of the host controlled thermal management feature
+
+**Constants**
+
+``NVME_CTRL_HCTMA_HCTM``
+  then the controller supports host controlled thermal
+  management, and the Set Features command and Get
+  Features command with the Feature Identifier field
+  set to ``NVME_FEAT_FID_HCTM``.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_sanicap
+
+   Indicates attributes for sanitize operations.
+
+**Constants**
+
+``NVME_CTRL_SANICAP_CES``
+  Crypto Erase Support. If set, then the
+  controller supports the Crypto Erase sanitize operation.
+
+``NVME_CTRL_SANICAP_BES``
+  Block Erase Support. If set, then the controller
+  supports the Block Erase sanitize operation.
+
+``NVME_CTRL_SANICAP_OWS``
+  Overwrite Support. If set, then the controller
+  supports the Overwrite sanitize operation.
+
+``NVME_CTRL_SANICAP_NDI``
+  No-Deallocate Inhibited. If set and the No-
+  Deallocate Response Mode bit is set, then the
+  controller deallocates after the sanitize
+  operation even if the No-Deallocate After
+  Sanitize bit is set in a Sanitize command.
+
+``NVME_CTRL_SANICAP_NODMMAS``
+  No-Deallocate Modifies Media After Sanitize,
+  mask to extract value.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_anacap
+
+   This field indicates the capabilities associated with Asymmetric Namespace Access Reporting.
+
+**Constants**
+
+``NVME_CTRL_ANACAP_OPT``
+  If set, then the controller is able to
+  report ANA Optimized state.
+
+``NVME_CTRL_ANACAP_NON_OPT``
+  If set, then the controller is able to
+  report ANA Non-Optimized state.
+
+``NVME_CTRL_ANACAP_INACCESSIBLE``
+  If set, then the controller is able to
+  report ANA Inaccessible state.
+
+``NVME_CTRL_ANACAP_PERSISTENT_LOSS``
+  If set, then the controller is able to
+  report ANA Persistent Loss state.
+
+``NVME_CTRL_ANACAP_CHANGE``
+  If set, then the controller is able to
+  report ANA Change state.
+
+``NVME_CTRL_ANACAP_GRPID_NO_CHG``
+  If set, then the ANAGRPID field in the
+  Identify Namespace data structure
+  (:c:type:`struct nvme_id_ns <nvme_id_ns>`.anagrpid), does not
+  change while the namespace is attached to
+  any controller.
+
+``NVME_CTRL_ANACAP_GRPID_MGMT``
+  If set, then the controller supports a
+  non-zero value in the ANAGRPID field of
+  the Namespace Management command.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_sqes
+
+   Defines the required and maximum Submission Queue entry size when using the NVM Command Set.
+
+**Constants**
+
+``NVME_CTRL_SQES_MIN``
+  Mask to get the value of the required Submission Queue
+  Entry size when using the NVM Command Set.
+
+``NVME_CTRL_SQES_MAX``
+  Mask to get the value of the maximum Submission Queue
+  entry size when using the NVM Command Set.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_cqes
+
+   Defines the required and maximum Completion Queue entry size when using the NVM Command Set.
+
+**Constants**
+
+``NVME_CTRL_CQES_MIN``
+  Mask to get the value of the required Completion Queue
+  Entry size when using the NVM Command Set.
+
+``NVME_CTRL_CQES_MAX``
+  Mask to get the value of the maximum Completion Queue
+  entry size when using the NVM Command Set.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_oncs
+
+   This field indicates the optional NVM commands and features supported by the controller.
+
+**Constants**
+
+``NVME_CTRL_ONCS_COMPARE``
+  If set, then the controller supports
+  the Compare command.
+
+``NVME_CTRL_ONCS_WRITE_UNCORRECTABLE``
+  If set, then the controller supports
+  the Write Uncorrectable command.
+
+``NVME_CTRL_ONCS_DSM``
+  If set, then the controller supports
+  the Dataset Management command.
+
+``NVME_CTRL_ONCS_WRITE_ZEROES``
+  If set, then the controller supports
+  the Write Zeroes command.
+
+``NVME_CTRL_ONCS_SAVE_FEATURES``
+  If set, then the controller supports
+  the Save field set to a non-zero value
+  in the Set Features command and the
+  Select field set to a non-zero value in
+  the Get Features command.
+
+``NVME_CTRL_ONCS_RESERVATIONS``
+  If set, then the controller supports
+  reservations.
+
+``NVME_CTRL_ONCS_TIMESTAMP``
+  If set, then the controller supports
+  the Timestamp feature.
+
+``NVME_CTRL_ONCS_VERIFY``
+  If set, then the controller supports
+  the Verify command.
+
+``NVME_CTRL_ONCS_COPY``
+  If set, then the controller supports
+  the copy command.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_fuses
+
+   This field indicates the fused operations that the controller supports.
+
+**Constants**
+
+``NVME_CTRL_FUSES_COMPARE_AND_WRITE``
+  If set, then the controller supports the
+  Compare and Write fused operation.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_fna
+
+   This field indicates attributes for the Format NVM command.
+
+**Constants**
+
+``NVME_CTRL_FNA_FMT_ALL_NAMESPACES``
+  If set, then all namespaces in an NVM
+  subsystem shall be configured with the
+  same attributes and a format (excluding
+  secure erase) of any namespace results in
+  a format of all namespaces in an NVM
+  subsystem. If cleared, then the
+  controller supports format on a per
+  namespace basis.
+
+``NVME_CTRL_FNA_SEC_ALL_NAMESPACES``
+  If set, then any secure erase performed
+  as part of a format operation results in
+  a secure erase of all namespaces in the
+  NVM subsystem. If cleared, then any
+  secure erase performed as part of a
+  format results in a secure erase of the
+  particular namespace specified.
+
+``NVME_CTRL_FNA_CRYPTO_ERASE``
+  If set, then cryptographic erase is
+  supported. If cleared, then cryptographic
+  erase is not supported.
+
+``NVME_CTRL_FNA_NSID_FFFFFFFF``
+  If set, then format does not support
+  nsid value set to FFFFFFFFh. If cleared,
+  format supports nsid value set to
+  FFFFFFFFh.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_vwc
+
+   Volatile write cache
+
+**Constants**
+
+``NVME_CTRL_VWC_PRESENT``
+  If set, indicates a volatile write cache is present.
+  If a volatile write cache is present, then the host
+  controls whether the volatile write cache is enabled
+  with a Set Features command specifying the value
+  ``NVME_FEAT_FID_VOLATILE_WC``.
+
+``NVME_CTRL_VWC_FLUSH``
+  Mask to get the value of the flush command behavior.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_nvscc
+
+   This field indicates the configuration settings for NVM Vendor Specific command handling.
+
+**Constants**
+
+``NVME_CTRL_NVSCC_FMT``
+  If set, all NVM Vendor Specific Commands use the
+  format with NDT and NDM fields.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_nwpc
+
+   This field indicates the optional namespace write protection capabilities supported by the controller.
+
+**Constants**
+
+``NVME_CTRL_NWPC_WRITE_PROTECT``
+  If set, then the controller shall
+  support the No Write Protect and
+  Write Protect namespace write
+  protection states and may support
+  the Write Protect Until Power
+  Cycle state and Permanent Write
+  Protect namespace write
+  protection states.
+
+``NVME_CTRL_NWPC_WRITE_PROTECT_POWER_CYCLE``
+  If set, then the controller
+  supports the Write Protect Until
+  Power Cycle state.
+
+``NVME_CTRL_NWPC_WRITE_PROTECT_PERMANENT``
+  If set, then the controller
+  supports the Permanent Write
+  Protect state.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_sgls
+
+   This field indicates if SGLs are supported for the NVM Command Set and the particular SGL types supported.
+
+**Constants**
+
+``NVME_CTRL_SGLS_SUPPORTED``
+
+``NVME_CTRL_SGLS_KEYED``
+
+``NVME_CTRL_SGLS_BIT_BUCKET``
+
+``NVME_CTRL_SGLS_MPTR_BYTE_ALIGNED``
+
+``NVME_CTRL_SGLS_OVERSIZE``
+
+``NVME_CTRL_SGLS_MPTR_SGL``
+
+``NVME_CTRL_SGLS_OFFSET``
+
+``NVME_CTRL_SGLS_TPORT``
+
+
+
+
+.. c:enum:: nvme_id_ctrl_fcatt
+
+   This field indicates attributes of the controller that are specific to NVMe over Fabrics.
+
+**Constants**
+
+``NVME_CTRL_FCATT_DYNAMIC``
+  If cleared, then the NVM subsystem uses a dynamic
+  controller model. If set, then the NVM subsystem
+  uses a static controller model.
+
+
+
+
+.. c:enum:: nvme_id_ctrl_ofcs
+
+   Indicate whether the controller supports optional fabric commands.
+
+**Constants**
+
+``NVME_CTRL_OFCS_DISCONNECT``
+  If set, then the controller supports the
+  Disconnect command and deletion of individual
+  I/O Queues.
+
+
+
+
+.. c:struct:: nvme_lbaf
+
+   LBA Format Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_lbaf {
+    __le16 ms;
+    __u8 ds;
+    __u8 rp;
+  };
+
+**Members**
+
+``ms``
+  Metadata Size indicates the number of metadata bytes provided per LBA
+  based on the LBA Data Size indicated.
+
+``ds``
+  LBA Data Size indicates the LBA data size supported, reported as a
+  power of two.
+
+``rp``
+  Relative Performance, see :c:type:`enum nvme_lbaf_rp <nvme_lbaf_rp>`.
+
+
+
+
+
+.. c:enum:: nvme_lbaf_rp
+
+   This field indicates the relative performance of the LBA format indicated relative to other LBA formats supported by the controller.
+
+**Constants**
+
+``NVME_LBAF_RP_BEST``
+  Best performance
+
+``NVME_LBAF_RP_BETTER``
+  Better performance
+
+``NVME_LBAF_RP_GOOD``
+  Good performance
+
+``NVME_LBAF_RP_DEGRADED``
+  Degraded performance
+
+``NVME_LBAF_RP_MASK``
+  Mask to get the relative performance value from the
+  field
+
+
+
+
+.. c:struct:: nvme_id_ns
+
+   Identify Namespace data structure
+
+**Definition**
+
+::
+
+  struct nvme_id_ns {
+    __le64 nsze;
+    __le64 ncap;
+    __le64 nuse;
+    __u8 nsfeat;
+    __u8 nlbaf;
+    __u8 flbas;
+    __u8 mc;
+    __u8 dpc;
+    __u8 dps;
+    __u8 nmic;
+    __u8 rescap;
+    __u8 fpi;
+    __u8 dlfeat;
+    __le16 nawun;
+    __le16 nawupf;
+    __le16 nacwu;
+    __le16 nabsn;
+    __le16 nabo;
+    __le16 nabspf;
+    __le16 noiob;
+    __u8 nvmcap[16];
+    __le16 npwg;
+    __le16 npwa;
+    __le16 npdg;
+    __le16 npda;
+    __le16 nows;
+    __le16 mssrl;
+    __le32 mcl;
+    __u8 msrc;
+    __u8 rsvd81;
+    __u8 nulbaf;
+    __u8 rsvd83[9];
+    __le32 anagrpid;
+    __u8 rsvd96[3];
+    __u8 nsattr;
+    __le16 nvmsetid;
+    __le16 endgid;
+    __u8 nguid[16];
+    __u8 eui64[8];
+    struct nvme_lbaf        lbaf[64];
+    __le64 lbstm;
+    __u8 vs[3704];
+  };
+
+**Members**
+
+``nsze``
+  Namespace Size indicates the total size of the namespace in
+  logical blocks. The number of logical blocks is based on the
+  formatted LBA size.
+
+``ncap``
+  Namespace Capacity indicates the maximum number of logical blocks
+  that may be allocated in the namespace at any point in time. The
+  number of logical blocks is based on the formatted LBA size.
+
+``nuse``
+  Namespace Utilization indicates the current number of logical
+  blocks allocated in the namespace. This field is smaller than or
+  equal to the Namespace Capacity. The number of logical blocks is
+  based on the formatted LBA size.
+
+``nsfeat``
+  Namespace Features, see :c:type:`enum nvme_id_nsfeat <nvme_id_nsfeat>`.
+
+``nlbaf``
+  Number of LBA Formats defines the number of supported LBA data
+  size and metadata size combinations supported by the namespace
+  and the highest possible index to :c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf.
+
+``flbas``
+  Formatted LBA Size, see :c:type:`enum nvme_id_ns_flbas <nvme_id_ns_flbas>`.
+
+``mc``
+  Metadata Capabilities, see :c:type:`enum nvme_id_ns_mc <nvme_id_ns_mc>`.
+
+``dpc``
+  End-to-end Data Protection Capabilities, see
+  :c:type:`enum nvme_id_ns_dpc <nvme_id_ns_dpc>`.
+
+``dps``
+  End-to-end Data Protection Type Settings, see
+  :c:type:`enum nvme_id_ns_dps <nvme_id_ns_dps>`.
+
+``nmic``
+  Namespace Multi-path I/O and Namespace Sharing Capabilities, see
+  :c:type:`enum nvme_id_ns_nmic <nvme_id_ns_nmic>`.
+
+``rescap``
+  Reservation Capabilities, see :c:type:`enum nvme_id_ns_rescap <nvme_id_ns_rescap>`.
+
+``fpi``
+  Format Progress Indicator, see :c:type:`enum nvme_nd_ns_fpi <nvme_nd_ns_fpi>`.
+
+``dlfeat``
+  Deallocate Logical Block Features, see :c:type:`enum nvme_id_ns_dlfeat <nvme_id_ns_dlfeat>`.
+
+``nawun``
+  Namespace Atomic Write Unit Normal indicates the
+  namespace specific size of the write operation guaranteed to be
+  written atomically to the NVM during normal operation.
+
+``nawupf``
+  Namespace Atomic Write Unit Power Fail indicates the
+  namespace specific size of the write operation guaranteed to be
+  written atomically to the NVM during a power fail or error
+  condition.
+
+``nacwu``
+  Namespace Atomic Compare & Write Unit indicates the namespace
+  specific size of the write operation guaranteed to be written
+  atomically to the NVM for a Compare and Write fused command.
+
+``nabsn``
+  Namespace Atomic Boundary Size Normal indicates the atomic
+  boundary size for this namespace for the NAWUN value. This field
+  is specified in logical blocks.
+
+``nabo``
+  Namespace Atomic Boundary Offset indicates the LBA on this
+  namespace where the first atomic boundary starts.
+
+``nabspf``
+  Namespace Atomic Boundary Size Power Fail indicates the atomic
+  boundary size for this namespace specific to the Namespace Atomic
+  Write Unit Power Fail value. This field is specified in logical
+  blocks.
+
+``noiob``
+  Namespace Optimal I/O Boundary indicates the optimal I/O boundary
+  for this namespace. This field is specified in logical blocks.
+  The host should construct Read and Write commands that do not
+  cross the I/O boundary to achieve optimal performance.
+
+``nvmcap``
+  NVM Capacity indicates the total size of the NVM allocated to
+  this namespace. The value is in bytes.
+
+``npwg``
+  Namespace Preferred Write Granularity indicates the smallest
+  recommended write granularity in logical blocks for this
+  namespace. This is a 0's based value.
+
+``npwa``
+  Namespace Preferred Write Alignment indicates the recommended
+  write alignment in logical blocks for this namespace. This is a
+  0's based value.
+
+``npdg``
+  Namespace Preferred Deallocate Granularity indicates the
+  recommended granularity in logical blocks for the Dataset
+  Management command with the Attribute - Deallocate bit.
+
+``npda``
+  Namespace Preferred Deallocate Alignment indicates the
+  recommended alignment in logical blocks for the Dataset
+  Management command with the Attribute - Deallocate bit
+
+``nows``
+  Namespace Optimal Write Size indicates the size in logical blocks
+  for optimal write performance for this namespace. This is a 0's
+  based value.
+
+``mssrl``
+  Maximum Single Source Range Length indicates the maximum number
+  of logical blocks that may be specified in each valid Source Range
+  field of a Copy command.
+
+``mcl``
+  Maximum Copy Length indicates the maximum number of logical
+  blocks that may be specified in a Copy command.
+
+``msrc``
+  Maximum Source Range Count indicates the maximum number of Source
+  Range entries that may be used to specify source data in a Copy
+  command. This is a 0’s based value.
+
+``rsvd81``
+  Reserved
+
+``nulbaf``
+  Number of Unique Capability LBA Formats defines the number of
+  supported user data size and metadata size combinations supported
+  by the namespace that may not share the same capabilities. LBA
+  formats shall be allocated in order and packed sequentially.
+
+``rsvd83``
+  Reserved
+
+``anagrpid``
+  ANA Group Identifier indicates the ANA Group Identifier of the
+  ANA group of which the namespace is a member.
+
+``rsvd96``
+  Reserved
+
+``nsattr``
+  Namespace Attributes, see :c:type:`enum nvme_id_ns_attr <nvme_id_ns_attr>`.
+
+``nvmsetid``
+  NVM Set Identifier indicates the NVM Set with which this
+  namespace is associated.
+
+``endgid``
+  Endurance Group Identifier indicates the Endurance Group with
+  which this namespace is associated.
+
+``nguid``
+  Namespace Globally Unique Identifier contains a 128-bit value
+  that is globally unique and assigned to the namespace when the
+  namespace is created. This field remains fixed throughout the
+  life of the namespace and is preserved across namespace and
+  controller operations
+
+``eui64``
+  IEEE Extended Unique Identifier contains a 64-bit IEEE Extended
+  Unique Identifier (EUI-64) that is globally unique and assigned
+  to the namespace when the namespace is created. This field
+  remains fixed throughout the life of the namespace and is
+  preserved across namespace and controller operations
+
+``lbaf``
+  LBA Format, see :c:type:`struct nvme_lbaf <nvme_lbaf>`.
+
+``lbstm``
+  Logical Block Storage Tag Mask for end-to-end protection
+
+``vs``
+  Vendor Specific
+
+
+
+
+
+.. c:enum:: nvme_id_nsfeat
+
+   This field defines features of the namespace.
+
+**Constants**
+
+``NVME_NS_FEAT_THIN``
+  If set, indicates that the namespace supports thin
+  provisioning. Specifically, the Namespace Capacity
+  reported may be less than the Namespace Size.
+
+``NVME_NS_FEAT_NATOMIC``
+  If set, indicates that the fields NAWUN, NAWUPF, and
+  NACWU are defined for this namespace and should be
+  used by the host for this namespace instead of the
+  AWUN, AWUPF, and ACWU fields in the Identify
+  Controller data structure.
+
+``NVME_NS_FEAT_DULBE``
+  If set, indicates that the controller supports the
+  Deallocated or Unwritten Logical Block error for
+  this namespace.
+
+``NVME_NS_FEAT_ID_REUSE``
+  If set, indicates that the value in the NGUID field
+  for this namespace, if non- zero, is never reused by
+  the controller and that the value in the EUI64 field
+  for this namespace, if non-zero, is never reused by
+  the controller.
+
+``NVME_NS_FEAT_IO_OPT``
+  If set, indicates that the fields NPWG, NPWA, NPDG,
+  NPDA, and NOWS are defined for this namespace and
+  should be used by the host for I/O optimization
+
+
+
+
+.. c:enum:: nvme_id_ns_flbas
+
+   This field indicates the LBA data size & metadata size combination that the namespace has been formatted with
+
+**Constants**
+
+``NVME_NS_FLBAS_LOWER_MASK``
+  Mask to get the index of one of the supported
+  LBA Formats's least significant
+  4bits indicated in
+  :c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf.
+
+``NVME_NS_FLBAS_META_EXT``
+  Applicable only if format contains metadata. If
+  this bit is set, indicates that the metadata is
+  transferred at the end of the data LBA, creating an
+  extended data LBA. If cleared, indicates that all
+  of the metadata for a command is transferred as a
+  separate contiguous buffer of data.
+
+``NVME_NS_FLBAS_HIGHER_MASK``
+  Mask to get the index of one of
+  the supported LBA Formats's most significant
+  2bits indicated in
+  :c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf.
+
+
+
+
+.. c:enum:: nvme_nvm_id_ns_elbaf
+
+   This field indicates the extended LBA format
+
+**Constants**
+
+``NVME_NVM_ELBAF_STS_MASK``
+  Mask to get the storage tag size used to determine
+  the variable-sized storage tag/reference tag fields
+
+``NVME_NVM_ELBAF_PIF_MASK``
+  Mask to get the protection information format for
+  the extended LBA format.
+
+
+
+
+.. c:enum:: nvme_id_ns_mc
+
+   This field indicates the capabilities for metadata.
+
+**Constants**
+
+``NVME_NS_MC_EXTENDED``
+  If set, indicates the namespace supports the metadata
+  being transferred as part of a separate buffer that is
+  specified in the Metadata Pointer.
+
+``NVME_NS_MC_SEPARATE``
+  If set, indicates that the namespace supports the
+  metadata being transferred as part of an extended data LBA.
+
+
+
+
+.. c:enum:: nvme_id_ns_dpc
+
+   This field indicates the capabilities for the end-to-end data protection feature.
+
+**Constants**
+
+``NVME_NS_DPC_PI_TYPE1``
+  If set, indicates that the namespace supports
+  Protection Information Type 1.
+
+``NVME_NS_DPC_PI_TYPE2``
+  If set, indicates that the namespace supports
+  Protection Information Type 2.
+
+``NVME_NS_DPC_PI_TYPE3``
+  If set, indicates that the namespace supports
+  Protection Information Type 3.
+
+``NVME_NS_DPC_PI_FIRST``
+  If set, indicates that the namespace supports
+  protection information transferred as the first eight
+  bytes of metadata.
+
+``NVME_NS_DPC_PI_LAST``
+  If set, indicates that the namespace supports
+  protection information transferred as the last eight
+  bytes of metadata.
+
+
+
+
+.. c:enum:: nvme_id_ns_dps
+
+   This field indicates the Type settings for the end-to-end data protection feature.
+
+**Constants**
+
+``NVME_NS_DPS_PI_NONE``
+  Protection information is not enabled
+
+``NVME_NS_DPS_PI_TYPE1``
+  Protection information is enabled, Type 1
+
+``NVME_NS_DPS_PI_TYPE2``
+  Protection information is enabled, Type 2
+
+``NVME_NS_DPS_PI_TYPE3``
+  Protection information is enabled, Type 3
+
+``NVME_NS_DPS_PI_MASK``
+  Mask to get the value of the PI type
+
+``NVME_NS_DPS_PI_FIRST``
+  If set, indicates that the protection information, if
+  enabled, is transferred as the first eight bytes of
+  metadata.
+
+
+
+
+.. c:enum:: nvme_id_ns_nmic
+
+   This field specifies multi-path I/O and namespace sharing capabilities of the namespace.
+
+**Constants**
+
+``NVME_NS_NMIC_SHARED``
+  If set, then the namespace may be attached to two or
+  more controllers in the NVM subsystem concurrently
+
+
+
+
+.. c:enum:: nvme_id_ns_rescap
+
+   This field indicates the reservation capabilities of the namespace.
+
+**Constants**
+
+``NVME_NS_RESCAP_PTPL``
+  If set, indicates that the namespace supports the
+  Persist Through Power Loss capability.
+
+``NVME_NS_RESCAP_WE``
+  If set, indicates that the namespace supports the
+  Write Exclusive reservation type.
+
+``NVME_NS_RESCAP_EA``
+  If set, indicates that the namespace supports the
+  Exclusive Access reservation type.
+
+``NVME_NS_RESCAP_WERO``
+  If set, indicates that the namespace supports the
+  Write Exclusive - Registrants Only reservation type.
+
+``NVME_NS_RESCAP_EARO``
+  If set, indicates that the namespace supports the
+  Exclusive Access - Registrants Only reservation type.
+
+``NVME_NS_RESCAP_WEAR``
+  If set, indicates that the namespace supports the
+  Write Exclusive - All Registrants reservation type.
+
+``NVME_NS_RESCAP_EAAR``
+  If set, indicates that the namespace supports the
+  Exclusive Access - All Registrants reservation type.
+
+``NVME_NS_RESCAP_IEK_13``
+  If set, indicates that Ignore Existing Key is used
+  as defined in revision 1.3 or later of this specification.
+
+
+
+
+.. c:enum:: nvme_nd_ns_fpi
+
+   If a format operation is in progress, this field indicates the percentage of the namespace that remains to be formatted.
+
+**Constants**
+
+``NVME_NS_FPI_REMAINING``
+  Mask to get the format percent remaining value
+
+``NVME_NS_FPI_SUPPORTED``
+  If set, indicates that the namespace supports the
+  Format Progress Indicator defined for the field.
+
+
+
+
+.. c:enum:: nvme_id_ns_dlfeat
+
+   This field indicates information about features that affect deallocating logical blocks for this namespace.
+
+**Constants**
+
+``NVME_NS_DLFEAT_RB``
+  Mask to get the value of the read behavior
+
+``NVME_NS_DLFEAT_RB_NR``
+  Read behvaior is not reported
+
+``NVME_NS_DLFEAT_RB_ALL_0S``
+  A deallocated logical block returns all bytes
+  cleared to 0h.
+
+``NVME_NS_DLFEAT_RB_ALL_FS``
+  A deallocated logical block returns all bytes
+  set to FFh.
+
+``NVME_NS_DLFEAT_WRITE_ZEROES``
+  If set, indicates that the controller supports
+  the Deallocate bit in the Write Zeroes command
+  for this namespace.
+
+``NVME_NS_DLFEAT_CRC_GUARD``
+  If set, indicates that the Guard field for
+  deallocated logical blocks that contain
+  protection information is set to the CRC for
+  the value read from the deallocated logical
+  block and its metadata
+
+
+
+
+.. c:enum:: nvme_id_ns_attr
+
+   Specifies attributes of the namespace.
+
+**Constants**
+
+``NVME_NS_NSATTR_WRITE_PROTECTED``
+  If set, then the namespace is currently
+  write protected and all write access to the
+  namespace shall fail.
+
+
+
+
+.. c:struct:: nvme_ns_id_desc
+
+   Namespace identifier type descriptor
+
+**Definition**
+
+::
+
+  struct nvme_ns_id_desc {
+    __u8 nidt;
+    __u8 nidl;
+    __le16 rsvd;
+    __u8 nid[];
+  };
+
+**Members**
+
+``nidt``
+  Namespace Identifier Type, see :c:type:`enum nvme_ns_id_desc_nidt <nvme_ns_id_desc_nidt>`
+
+``nidl``
+  Namespace Identifier Length contains the length in bytes of the
+  :c:type:`struct nvme_id_ns <nvme_id_ns>`.nid.
+
+``rsvd``
+  Reserved
+
+``nid``
+  Namespace Identifier contains a value that is globally unique and
+  assigned to the namespace when the namespace is created. The length
+  is defined in :c:type:`struct nvme_id_ns <nvme_id_ns>`.nidl.
+
+
+
+
+
+.. c:enum:: nvme_ns_id_desc_nidt
+
+   Known namespace identifier types
+
+**Constants**
+
+``NVME_NIDT_EUI64``
+  IEEE Extended Unique Identifier, the NID field contains a
+  copy of the EUI64 field in the struct nvme_id_ns.eui64.
+
+``NVME_NIDT_NGUID``
+  Namespace Globally Unique Identifier, the NID field
+  contains a copy of the NGUID field in struct nvme_id_ns.nguid.
+
+``NVME_NIDT_UUID``
+  The NID field contains a 128-bit Universally Unique
+  Identifier (UUID) as specified in RFC 4122.
+
+``NVME_NIDT_CSI``
+  The NID field contains the command set identifier.
+
+
+
+
+.. c:struct:: nvme_nvmset_attr
+
+   NVM Set Attributes Entry
+
+**Definition**
+
+::
+
+  struct nvme_nvmset_attr {
+    __le16 nvmsetid;
+    __le16 endgid;
+    __u8 rsvd4[4];
+    __le32 rr4kt;
+    __le32 ows;
+    __u8 tnvmsetcap[16];
+    __u8 unvmsetcap[16];
+    __u8 rsvd48[80];
+  };
+
+**Members**
+
+``nvmsetid``
+  NVM Set Identifier
+
+``endgid``
+  Endurance Group Identifier
+
+``rsvd4``
+  Reserved
+
+``rr4kt``
+  Random 4 KiB Read Typical indicates the typical
+  time to complete a 4 KiB random read in 100 nanosecond units
+  when the NVM Set is in a Predictable Latency Mode Deterministic
+  Window and there is 1 outstanding command per NVM Set.
+
+``ows``
+  Optimal Write Size
+
+``tnvmsetcap``
+  Total NVM Set Capacity
+
+``unvmsetcap``
+  Unallocated NVM Set Capacity
+
+``rsvd48``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_id_nvmset_list
+
+   NVM set list
+
+**Definition**
+
+::
+
+  struct nvme_id_nvmset_list {
+    __u8 nid;
+    __u8 rsvd1[127];
+    struct nvme_nvmset_attr ent[NVME_ID_NVMSET_LIST_MAX];
+  };
+
+**Members**
+
+``nid``
+  Nvmset id
+
+``rsvd1``
+  Reserved
+
+``ent``
+  nvmset id list
+
+
+
+
+
+.. c:struct:: nvme_id_independent_id_ns
+
+   Identify - I/O Command Set Independent Identify Namespace Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_id_independent_id_ns {
+    __u8 nsfeat;
+    __u8 nmic;
+    __u8 rescap;
+    __u8 fpi;
+    __le32 anagrpid;
+    __u8 nsattr;
+    __u8 rsvd9;
+    __le16 nvmsetid;
+    __le16 endgid;
+    __u8 nstat;
+    __u8 rsvd15[4081];
+  };
+
+**Members**
+
+``nsfeat``
+  common namespace features
+
+``nmic``
+  Namespace Multi-path I/O and Namespace
+  Sharing Capabilities
+
+``rescap``
+  Reservation Capabilities
+
+``fpi``
+  Format Progress Indicator
+
+``anagrpid``
+  ANA Group Identifier
+
+``nsattr``
+  Namespace Attributes
+
+``rsvd9``
+  reserved
+
+``nvmsetid``
+  NVM Set Identifier
+
+``endgid``
+  Endurance Group Identifier
+
+``nstat``
+  Namespace Status
+
+``rsvd15``
+  reserved
+
+
+
+
+
+.. c:struct:: nvme_id_ns_granularity_desc
+
+   Namespace Granularity Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_id_ns_granularity_desc {
+    __le64 nszegran;
+    __le64 ncapgran;
+  };
+
+**Members**
+
+``nszegran``
+  Namespace Size Granularity
+
+``ncapgran``
+  Namespace Capacity Granularity
+
+
+
+
+
+.. c:struct:: nvme_id_ns_granularity_list
+
+   Namespace Granularity List
+
+**Definition**
+
+::
+
+  struct nvme_id_ns_granularity_list {
+    __le32 attributes;
+    __u8 num_descriptors;
+    __u8 rsvd5[27];
+    struct nvme_id_ns_granularity_desc entry[NVME_ID_ND_DESCRIPTOR_MAX];
+    __u8 rsvd288[3808];
+  };
+
+**Members**
+
+``attributes``
+  Namespace Granularity Attributes
+
+``num_descriptors``
+  Number of Descriptors
+
+``rsvd5``
+  reserved
+
+``entry``
+  Namespace Granularity Descriptor
+
+``rsvd288``
+  reserved
+
+
+
+
+
+.. c:struct:: nvme_id_uuid_list_entry
+
+   UUID List Entry
+
+**Definition**
+
+::
+
+  struct nvme_id_uuid_list_entry {
+    __u8 header;
+    __u8 rsvd1[15];
+    __u8 uuid[16];
+  };
+
+**Members**
+
+``header``
+  UUID Lists Entry Header
+
+``rsvd1``
+  reserved
+
+``uuid``
+  128-bit Universally Unique Identifier
+
+
+
+
+
+.. c:enum:: nvme_id_uuid
+
+   Identifier Association
+
+**Constants**
+
+``NVME_ID_UUID_HDR_ASSOCIATION_MASK``
+
+``NVME_ID_UUID_ASSOCIATION_NONE``
+
+``NVME_ID_UUID_ASSOCIATION_VENDOR``
+
+``NVME_ID_UUID_ASSOCIATION_SUBSYSTEM_VENDOR``
+
+
+
+
+.. c:struct:: nvme_id_uuid_list
+
+   UUID list
+
+**Definition**
+
+::
+
+  struct nvme_id_uuid_list {
+    __u8 rsvd0[32];
+    struct nvme_id_uuid_list_entry entry[NVME_ID_UUID_LIST_MAX];
+  };
+
+**Members**
+
+``rsvd0``
+  reserved
+
+``entry``
+  UUID list entry
+
+
+
+
+
+.. c:struct:: nvme_ctrl_list
+
+   Controller List
+
+**Definition**
+
+::
+
+  struct nvme_ctrl_list {
+    __le16 num;
+    __le16 identifier[NVME_ID_CTRL_LIST_MAX];
+  };
+
+**Members**
+
+``num``
+  Number of Identifiers
+
+``identifier``
+  NVM subsystem unique controller identifier
+
+
+
+
+
+.. c:struct:: nvme_ns_list
+
+   Namespace List
+
+**Definition**
+
+::
+
+  struct nvme_ns_list {
+    __le32 ns[NVME_ID_NS_LIST_MAX];
+  };
+
+**Members**
+
+``ns``
+  Namespace Identifier
+
+
+
+
+
+.. c:struct:: nvme_id_ctrl_nvm
+
+   I/O Command Set Specific Identify Controller data structure
+
+**Definition**
+
+::
+
+  struct nvme_id_ctrl_nvm {
+    __u8 vsl;
+    __u8 wzsl;
+    __u8 wusl;
+    __u8 dmrl;
+    __u32 dmrsl;
+    __u64 dmsl;
+    __u8 rsvd16[4080];
+  };
+
+**Members**
+
+``vsl``
+  Verify Size Limit
+
+``wzsl``
+  Write Zeroes Size Limit
+
+``wusl``
+  Write Uncorrectable Size Limit
+
+``dmrl``
+  Dataset Management Ranges Limit
+
+``dmrsl``
+  Dataset Management Range Size Limit
+
+``dmsl``
+  Dataset Management Size Limit
+
+``rsvd16``
+  reserved
+
+
+
+
+
+.. c:struct:: nvme_nvm_id_ns
+
+   NVME Command Set I/O Command Set Specific Identify Namespace Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_nvm_id_ns {
+    __le64 lbstm;
+    __u8 pic;
+    __u8 rsvd9[3];
+    __le32 elbaf[64];
+    __u8 rsvd268[3828];
+  };
+
+**Members**
+
+``lbstm``
+  Logical Block Storage Tag Mask
+
+``pic``
+  Protection Information Capabilities
+
+``rsvd9``
+  Reserved
+
+``elbaf``
+  List of Extended LBA Format Support
+
+``rsvd268``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_zns_lbafe
+
+   LBA Format Extension Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_zns_lbafe {
+    __le64 zsze;
+    __u8 zdes;
+    __u8 rsvd9[7];
+  };
+
+**Members**
+
+``zsze``
+  Zone Size
+
+``zdes``
+  Zone Descriptor Extension Size
+
+``rsvd9``
+  reserved
+
+
+
+
+
+.. c:struct:: nvme_zns_id_ns
+
+   Zoned Namespace Command Set Specific Identify Namespace Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_zns_id_ns {
+    __le16 zoc;
+    __le16 ozcs;
+    __le32 mar;
+    __le32 mor;
+    __le32 rrl;
+    __le32 frl;
+    __le32 rrl1;
+    __le32 rrl2;
+    __le32 rrl3;
+    __le32 frl1;
+    __le32 frl2;
+    __le32 frl3;
+    __le32 numzrwa;
+    __le16 zrwafg;
+    __le16 zrwasz;
+    __u8 zrwacap;
+    __u8 rsvd53[2763];
+    struct nvme_zns_lbafe   lbafe[64];
+    __u8 vs[256];
+  };
+
+**Members**
+
+``zoc``
+  Zone Operation Characteristics
+
+``ozcs``
+  Optional Zoned Command Support
+
+``mar``
+  Maximum Active Resources
+
+``mor``
+  Maximum Open Resources
+
+``rrl``
+  Reset Recommended Limit
+
+``frl``
+  Finish Recommended Limit
+
+``rrl1``
+  Reset Recommended Limit 1
+
+``rrl2``
+  Reset Recommended Limit 2
+
+``rrl3``
+  Reset Recommended Limit 3
+
+``frl1``
+  Finish Recommended Limit 1
+
+``frl2``
+  Finish Recommended Limit 2
+
+``frl3``
+  Finish Recommended Limit 3
+
+``numzrwa``
+  Number of ZRWA Resources
+
+``zrwafg``
+  ZRWA Flush Granularity
+
+``zrwasz``
+  ZRWA Size
+
+``zrwacap``
+  ZRWA Capability
+
+``rsvd53``
+  Reserved
+
+``lbafe``
+  LBA Format Extension
+
+``vs``
+  Vendor Specific
+
+
+
+
+
+.. c:struct:: nvme_zns_id_ctrl
+
+   I/O Command Set Specific Identify Controller Data Structure for the Zoned Namespace Command Set
+
+**Definition**
+
+::
+
+  struct nvme_zns_id_ctrl {
+    __u8 zasl;
+    __u8 rsvd1[4095];
+  };
+
+**Members**
+
+``zasl``
+  Zone Append Size Limit
+
+``rsvd1``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_primary_ctrl_cap
+
+   Identify - Controller Capabilities Structure
+
+**Definition**
+
+::
+
+  struct nvme_primary_ctrl_cap {
+    __le16 cntlid;
+    __le16 portid;
+    __u8 crt;
+    __u8 rsvd5[27];
+    __le32 vqfrt;
+    __le32 vqrfa;
+    __le16 vqrfap;
+    __le16 vqprt;
+    __le16 vqfrsm;
+    __le16 vqgran;
+    __u8 rsvd48[16];
+    __le32 vifrt;
+    __le32 virfa;
+    __le16 virfap;
+    __le16 viprt;
+    __le16 vifrsm;
+    __le16 vigran;
+    __u8 rsvd80[4016];
+  };
+
+**Members**
+
+``cntlid``
+  Controller Identifier
+
+``portid``
+  Port Identifier
+
+``crt``
+  Controller Resource Types
+
+``rsvd5``
+  reserved
+
+``vqfrt``
+  VQ Resources Flexible Total
+
+``vqrfa``
+  VQ Resources Flexible Assigned
+
+``vqrfap``
+  VQ Resources Flexible Allocated to Primary
+
+``vqprt``
+  VQ Resources Private Total
+
+``vqfrsm``
+  VQ Resources Flexible Secondary Maximum
+
+``vqgran``
+  VQ Flexible Resource Preferred Granularity
+
+``rsvd48``
+  reserved
+
+``vifrt``
+  VI Resources Flexible Total
+
+``virfa``
+  VI Resources Flexible Assigned
+
+``virfap``
+  VI Resources Flexible Allocated to Primary
+
+``viprt``
+  VI Resources Private Total
+
+``vifrsm``
+  VI Resources Flexible Secondary Maximum
+
+``vigran``
+  VI Flexible Resource Preferred Granularity
+
+``rsvd80``
+  reserved
+
+
+
+
+
+.. c:struct:: nvme_secondary_ctrl
+
+   Secondary Controller Entry
+
+**Definition**
+
+::
+
+  struct nvme_secondary_ctrl {
+    __le16 scid;
+    __le16 pcid;
+    __u8 scs;
+    __u8 rsvd5[3];
+    __le16 vfn;
+    __le16 nvq;
+    __le16 nvi;
+    __u8 rsvd14[18];
+  };
+
+**Members**
+
+``scid``
+  Secondary Controller Identifier
+
+``pcid``
+  Primary Controller Identifier
+
+``scs``
+  Secondary Controller State
+
+``rsvd5``
+  Reserved
+
+``vfn``
+  Virtual Function Number
+
+``nvq``
+  Number of VQ Flexible Resources Assigned
+
+``nvi``
+  Number of VI Flexible Resources Assigned
+
+``rsvd14``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_secondary_ctrl_list
+
+   Secondary Controller List
+
+**Definition**
+
+::
+
+  struct nvme_secondary_ctrl_list {
+    __u8 num;
+    __u8 rsvd[31];
+    struct nvme_secondary_ctrl sc_entry[NVME_ID_SECONDARY_CTRL_MAX];
+  };
+
+**Members**
+
+``num``
+  Number of Identifiers
+
+``rsvd``
+  Reserved
+
+``sc_entry``
+  Secondary Controller Entry
+
+
+
+
+
+.. c:struct:: nvme_id_iocs
+
+   NVMe Identify IO Command Set data structure
+
+**Definition**
+
+::
+
+  struct nvme_id_iocs {
+    __u64 iocsc[512];
+  };
+
+**Members**
+
+``iocsc``
+  List of supported IO Command Set Combination vectors
+
+
+
+
+
+.. c:struct:: nvme_id_domain_attr
+
+   Domain Attributes Entry
+
+**Definition**
+
+::
+
+  struct nvme_id_domain_attr {
+    __le16 dom_id;
+    __u8 rsvd2[14];
+    __u8 dom_cap[16];
+    __u8 unalloc_dom_cap[16];
+    __u8 max_egrp_dom_cap[16];
+    __u8 rsvd64[64];
+  };
+
+**Members**
+
+``dom_id``
+  Domain Identifier
+
+``rsvd2``
+  Reserved
+
+``dom_cap``
+  Total Domain Capacity
+
+``unalloc_dom_cap``
+  Unallocated Domain Capacity
+
+``max_egrp_dom_cap``
+  Max Endurance Group Domain Capacity
+
+``rsvd64``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_id_domain_list
+
+   Domain List
+
+**Definition**
+
+::
+
+  struct nvme_id_domain_list {
+    __u8 num;
+    __u8 rsvd[127];
+    struct nvme_id_domain_attr domain_attr[NVME_ID_DOMAIN_LIST_MAX];
+  };
+
+**Members**
+
+``num``
+  Number of domain attributes
+
+``rsvd``
+  Reserved
+
+``domain_attr``
+  List of domain attributes
+
+
+
+
+
+.. c:struct:: nvme_id_endurance_group_list
+
+   Endurance Group List
+
+**Definition**
+
+::
+
+  struct nvme_id_endurance_group_list {
+    __le16 num;
+    __le16 identifier[NVME_ID_ENDURANCE_GROUP_LIST_MAX];
+  };
+
+**Members**
+
+``num``
+  Number of Identifiers
+
+``identifier``
+  Endurance Group Identifier
+
+
+
+
+
+.. c:struct:: nvme_supported_log_pages
+
+   Supported Log Pages - Log
+
+**Definition**
+
+::
+
+  struct nvme_supported_log_pages {
+    __le32 lid_support[NVME_LOG_SUPPORTED_LOG_PAGES_MAX];
+  };
+
+**Members**
+
+``lid_support``
+  Log Page Identifier Supported
+
+
+**Description**
+
+Supported Log Pages (Log Identifier 00h)
+
+
+
+
+.. c:struct:: nvme_error_log_page
+
+   Error Information Log Entry (Log Identifier 01h)
+
+**Definition**
+
+::
+
+  struct nvme_error_log_page {
+    __le64 error_count;
+    __le16 sqid;
+    __le16 cmdid;
+    __le16 status_field;
+    __le16 parm_error_location;
+    __le64 lba;
+    __le32 nsid;
+    __u8 vs;
+    __u8 trtype;
+    __u8 rsvd[2];
+    __le64 cs;
+    __le16 trtype_spec_info;
+    __u8 rsvd2[22];
+  };
+
+**Members**
+
+``error_count``
+  Error Count: a 64-bit incrementing error count,
+  indicating a unique identifier for this error. The error
+  count starts at ``1h``, is incremented for each unique error
+  log entry, and is retained across power off conditions.
+  A value of ``0h`` indicates an invalid entry; this value
+  is used when there are lost entries or when there are
+  fewer errors than the maximum number of entries the
+  controller supports. If the value of this field is
+  ``FFFFFFFFh``, then the field shall be set to 1h when
+  incremented (i.e., rolls over to ``1h``). Prior to NVMe
+  1.4, processing of incrementing beyond ``FFFFFFFFh`` is
+  unspecified.
+
+``sqid``
+  Submission Queue ID: indicates the Submission Queue
+  Identifier of the command that the error information is
+  associated with. If the error is not specific to
+  a particular command, then this field shall be set to
+  ``FFFFh``.
+
+``cmdid``
+  Command ID: indicates the Command Identifier of the
+  command that the error is associated with. If the error
+  is not specific to a particular command, then this field
+  shall be set to ``FFFFh``.
+
+``status_field``
+  Bits 15-1: Status Field: indicates the Status Field for
+  the command that completed. If the error is not specific
+  to a particular command, then this field reports the most
+  applicable status value.
+  Bit 0: Phase Tag: may indicate the Phase Tag posted for
+  the command.
+
+``parm_error_location``
+  Parameter Error Location: indicates the byte and bit of
+  the command parameter that the error is associated with,
+  if applicable. If the parameter spans multiple bytes or
+  bits, then the location indicates the first byte and bit
+  of the parameter.
+  Bits 10-8: Bit in command that contained the error.
+  Valid values are 0 to 7.
+  Bits 7-0: Byte in command that contained the error.
+  Valid values are 0 to 63.
+
+``lba``
+  LBA: This field indicates the first LBA that experienced
+  the error condition, if applicable.
+
+``nsid``
+  Namespace: This field indicates the NSID of the namespace
+  that the error is associated with, if applicable.
+
+``vs``
+  Vendor Specific Information Available: If there is
+  additional vendor specific error information available,
+  this field provides the log page identifier associated
+  with that page. A value of ``0h`` indicates that no additional
+  information is available. Valid values are in the range
+  of ``80h`` to ``FFh``.
+
+``trtype``
+  Transport Type (TRTYPE): indicates the Transport Type of
+  the transport associated with the error. The values in
+  this field are the same as the TRTYPE values in the
+  Discovery Log Page Entry. If the error is not transport
+  related, this field shall be cleared to ``0h``. If the error
+  is transport related, this field shall be set to the type
+  of the transport - see :c:type:`enum nvme_trtype <nvme_trtype>`.
+
+``rsvd``
+  Reserved
+
+``cs``
+  Command Specific Information: This field contains command
+  specific information. If used, the command definition
+  specifies the information returned.
+
+``trtype_spec_info``
+  Transport Type Specific Information
+
+``rsvd2``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_smart_log
+
+   SMART / Health Information Log (Log Identifier 02h)
+
+**Definition**
+
+::
+
+  struct nvme_smart_log {
+    __u8 critical_warning;
+    __u8 temperature[2];
+    __u8 avail_spare;
+    __u8 spare_thresh;
+    __u8 percent_used;
+    __u8 endu_grp_crit_warn_sumry;
+    __u8 rsvd7[25];
+    __u8 data_units_read[16];
+    __u8 data_units_written[16];
+    __u8 host_reads[16];
+    __u8 host_writes[16];
+    __u8 ctrl_busy_time[16];
+    __u8 power_cycles[16];
+    __u8 power_on_hours[16];
+    __u8 unsafe_shutdowns[16];
+    __u8 media_errors[16];
+    __u8 num_err_log_entries[16];
+    __le32 warning_temp_time;
+    __le32 critical_comp_time;
+    __le16 temp_sensor[8];
+    __le32 thm_temp1_trans_count;
+    __le32 thm_temp2_trans_count;
+    __le32 thm_temp1_total_time;
+    __le32 thm_temp2_total_time;
+    __u8 rsvd232[280];
+  };
+
+**Members**
+
+``critical_warning``
+  This field indicates critical warnings for the state
+  of the controller. Critical warnings may result in an
+  asynchronous event notification to the host. Bits in
+  this field represent the current associated state and
+  are not persistent (see :c:type:`enum nvme_smart_crit <nvme_smart_crit>`).
+
+``temperature``
+  Composite Temperature: Contains a value corresponding
+  to a temperature in Kelvins that represents the current
+  composite temperature of the controller and namespace(s)
+  associated with that controller. The manner in which
+  this value is computed is implementation specific and
+  may not represent the actual temperature of any physical
+  point in the NVM subsystem. Warning and critical
+  overheating composite temperature threshold values are
+  reported by the WCTEMP and CCTEMP fields in the Identify
+  Controller data structure.
+
+``avail_spare``
+  Available Spare: Contains a normalized percentage (0%
+  to 100%) of the remaining spare capacity available.
+
+``spare_thresh``
+  Available Spare Threshold: When the Available Spare
+  falls below the threshold indicated in this field, an
+  asynchronous event completion may occur. The value is
+  indicated as a normalized percentage (0% to 100%).
+  The values 101 to 255 are reserved.
+
+``percent_used``
+  Percentage Used: Contains a vendor specific estimate
+  of the percentage of NVM subsystem life used based on
+  the actual usage and the manufacturer's prediction of
+  NVM life. A value of 100 indicates that the estimated
+  endurance of the NVM in the NVM subsystem has been
+  consumed, but may not indicate an NVM subsystem failure.
+  The value is allowed to exceed 100. Percentages greater
+  than 254 shall be represented as 255. This value shall
+  be updated once per power-on hour (when the controller
+  is not in a sleep state).
+
+``endu_grp_crit_warn_sumry``
+  Endurance Group Critical Warning Summary: This field
+  indicates critical warnings for the state of Endurance
+  Groups. Bits in this field represent the current associated
+  state and are not persistent (see :c:type:`enum nvme_smart_egcw <nvme_smart_egcw>`).
+
+``rsvd7``
+  Reserved
+
+``data_units_read``
+  Data Units Read: Contains the number of 512 byte data
+  units the host has read from the controller; this value
+  does not include metadata. This value is reported in
+  thousands (i.e., a value of 1 corresponds to 1000
+  units of 512 bytes read) and is rounded up (e.g., one
+  indicates the that number of 512 byte data units read
+  is from 1 to 1000, three indicates that the number of
+  512 byte data units read is from 2001 to 3000). When
+  the LBA size is a value other than 512 bytes, the
+  controller shall convert the amount of data read to
+  512 byte units. For the NVM command set, logical blocks
+  read as part of Compare, Read, and Verify operations
+  shall be included in this value. A value of ``0h`` in
+  this field indicates that the number of Data Units Read
+  is not reported.
+
+``data_units_written``
+  Data Units Written: Contains the number of 512 byte
+  data units the host has written to the controller;
+  this value does not include metadata. This value is
+  reported in thousands (i.e., a value of 1 corresponds
+  to 1000 units of 512 bytes written) and is rounded up
+  (e.g., one indicates that the number of 512 byte data
+  units written is from 1 to 1,000, three indicates that
+  the number of 512 byte data units written is from 2001
+  to 3000). When the LBA size is a value other than 512
+  bytes, the controller shall convert the amount of data
+  written to 512 byte units. For the NVM command set,
+  logical blocks written as part of Write operations shall
+  be included in this value. Write Uncorrectable commands
+  and Write Zeroes commands shall not impact this value.
+  A value of ``0h`` in this field indicates that the number
+  of Data Units Written is not reported.
+
+``host_reads``
+  Host Read Commands: Contains the number of read commands
+  completed by the controller. For the NVM command set,
+  this value is the sum of the number of Compare commands
+  and the number of Read commands.
+
+``host_writes``
+  Host Write Commands: Contains the number of write
+  commands completed by the controller. For the NVM
+  command set, this is the number of Write commands.
+
+``ctrl_busy_time``
+  Controller Busy Time: Contains the amount of time the
+  controller is busy with I/O commands. The controller
+  is busy when there is a command outstanding to an I/O
+  Queue (specifically, a command was issued via an I/O
+  Submission Queue Tail doorbell write and the corresponding
+  completion queue entry has not been posted yet to the
+  associated I/O Completion Queue). This value is
+  reported in minutes.
+
+``power_cycles``
+  Power Cycles: Contains the number of power cycles.
+
+``power_on_hours``
+  Power On Hours: Contains the number of power-on hours.
+  This may not include time that the controller was
+  powered and in a non-operational power state.
+
+``unsafe_shutdowns``
+  Unsafe Shutdowns: Contains the number of unsafe
+  shutdowns. This count is incremented when a Shutdown
+  Notification (CC.SHN) is not received prior to loss of power.
+
+``media_errors``
+  Media and Data Integrity Errors: Contains the number
+  of occurrences where the controller detected an
+  unrecovered data integrity error. Errors such as
+  uncorrectable ECC, CRC checksum failure, or LBA tag
+  mismatch are included in this field. Errors introduced
+  as a result of a Write Uncorrectable command may or
+  may not be included in this field.
+
+``num_err_log_entries``
+  Number of Error Information Log Entries: Contains the
+  number of Error Information log entries over the life
+  of the controller.
+
+``warning_temp_time``
+  Warning Composite Temperature Time: Contains the amount
+  of time in minutes that the controller is operational
+  and the Composite Temperature is greater than or equal
+  to the Warning Composite Temperature Threshold (WCTEMP)
+  field and less than the Critical Composite Temperature
+  Threshold (CCTEMP) field in the Identify Controller
+  data structure. If the value of the WCTEMP or CCTEMP
+  field is ``0h``, then this field is always cleared to ``0h``
+  regardless of the Composite Temperature value.
+
+``critical_comp_time``
+  Critical Composite Temperature Time: Contains the amount
+  of time in minutes that the controller is operational
+  and the Composite Temperature is greater than or equal
+  to the Critical Composite Temperature Threshold (CCTEMP)
+  field in the Identify Controller data structure. If
+  the value of the CCTEMP field is ``0h``, then this field
+  is always cleared to 0h regardless of the Composite
+  Temperature value.
+
+``temp_sensor``
+  Temperature Sensor 1-8: Contains the current temperature
+  in degrees Kelvin reported by temperature sensors 1-8.
+  The physical point in the NVM subsystem whose temperature
+  is reported by the temperature sensor and the temperature
+  accuracy is implementation specific. An implementation
+  that does not implement the temperature sensor reports
+  a value of ``0h``.
+
+``thm_temp1_trans_count``
+  Thermal Management Temperature 1 Transition Count:
+  Contains the number of times the controller transitioned
+  to lower power active power states or performed vendor
+  specific thermal management actions while minimizing
+  the impact on performance in order to attempt to reduce
+  the Composite Temperature because of the host controlled
+  thermal management feature (i.e., the Composite
+  Temperature rose above the Thermal Management
+  Temperature 1). This counter shall not wrap once the
+  value ``FFFFFFFFh`` is reached. A value of ``0h``, indicates
+  that this transition has never occurred or this field
+  is not implemented.
+
+``thm_temp2_trans_count``
+  Thermal Management Temperature 2 Transition Count
+
+``thm_temp1_total_time``
+  Total Time For Thermal Management Temperature 1:
+  Contains the number of seconds that the controller
+  had transitioned to lower power active power states or
+  performed vendor specific thermal management actions
+  while minimizing the impact on performance in order to
+  attempt to reduce the Composite Temperature because of
+  the host controlled thermal management feature. This
+  counter shall not wrap once the value ``FFFFFFFFh`` is
+  reached. A value of ``0h``, indicates that this transition
+  has never occurred or this field is not implemented.
+
+``thm_temp2_total_time``
+  Total Time For Thermal Management Temperature 2
+
+``rsvd232``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_smart_crit
+
+   Critical Warning
+
+**Constants**
+
+``NVME_SMART_CRIT_SPARE``
+  If set, then the available spare capacity has fallen
+  below the threshold.
+
+``NVME_SMART_CRIT_TEMPERATURE``
+  If set, then a temperature is either greater
+  than or equal to an over temperature threshold; or
+  less than or equal to an under temperature threshold.
+
+``NVME_SMART_CRIT_DEGRADED``
+  If set, then the NVM subsystem reliability has
+  been degraded due to significant media related errors
+  or any internal error that degrades NVM subsystem
+  reliability.
+
+``NVME_SMART_CRIT_MEDIA``
+  If set, then all of the media has been placed in read
+  only mode. The controller shall not set this bit if
+  the read-only condition on the media is a result of
+  a change in the write protection state of a namespace.
+
+``NVME_SMART_CRIT_VOLATILE_MEMORY``
+  If set, then the volatile memory backup
+  device has failed. This field is only valid if the
+  controller has a volatile memory backup solution.
+
+``NVME_SMART_CRIT_PMR_RO``
+  If set, then the Persistent Memory Region has become
+  read-only or unreliable.
+
+
+
+
+.. c:enum:: nvme_smart_egcw
+
+   Endurance Group Critical Warning Summary
+
+**Constants**
+
+``NVME_SMART_EGCW_SPARE``
+  If set, then the available spare capacity of one or
+  more Endurance Groups has fallen below the threshold.
+
+``NVME_SMART_EGCW_DEGRADED``
+  If set, then the reliability of one or more
+  Endurance Groups has been degraded due to significant
+  media related errors or any internal error that
+  degrades NVM subsystem reliability.
+
+``NVME_SMART_EGCW_RO``
+  If set, then the namespaces in one or more Endurance
+  Groups have been placed in read only mode not as
+  a result of a change in the write protection state
+  of a namespace.
+
+
+
+
+.. c:struct:: nvme_firmware_slot
+
+   Firmware Slot Information Log
+
+**Definition**
+
+::
+
+  struct nvme_firmware_slot {
+    __u8 afi;
+    __u8 rsvd1[7];
+    char frs[7][8];
+    __u8 rsvd2[448];
+  };
+
+**Members**
+
+``afi``
+  Active Firmware Info
+
+``rsvd1``
+  Reserved
+
+``frs``
+  Firmware Revision for Slot
+
+``rsvd2``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_cmd_effects_log
+
+   Commands Supported and Effects Log
+
+**Definition**
+
+::
+
+  struct nvme_cmd_effects_log {
+    __le32 acs[256];
+    __le32 iocs[256];
+    __u8 rsvd[2048];
+  };
+
+**Members**
+
+``acs``
+  Admin Command Supported
+
+``iocs``
+  I/O Command Supported
+
+``rsvd``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_cmd_effects
+
+   Commands Supported and Effects
+
+**Constants**
+
+``NVME_CMD_EFFECTS_CSUPP``
+  Command Supported
+
+``NVME_CMD_EFFECTS_LBCC``
+  Logical Block Content Change
+
+``NVME_CMD_EFFECTS_NCC``
+  Namespace Capability Change
+
+``NVME_CMD_EFFECTS_NIC``
+  Namespace Inventory Change
+
+``NVME_CMD_EFFECTS_CCC``
+  Controller Capability Change
+
+``NVME_CMD_EFFECTS_CSE_MASK``
+  Command Submission and Execution
+
+``NVME_CMD_EFFECTS_UUID_SEL``
+  UUID Selection Supported
+
+
+
+
+.. c:struct:: nvme_st_result
+
+   Self-test Result
+
+**Definition**
+
+::
+
+  struct nvme_st_result {
+    __u8 dsts;
+    __u8 seg;
+    __u8 vdi;
+    __u8 rsvd;
+    __le64 poh;
+    __le32 nsid;
+    __le64 flba;
+    __u8 sct;
+    __u8 sc;
+    __u8 vs[2];
+  };
+
+**Members**
+
+``dsts``
+  Device Self-test Status: Indicates the device self-test code and the
+  status of the operation (see :c:type:`enum nvme_status_result <nvme_status_result>` and :c:type:`enum nvme_st_code <nvme_st_code>`).
+
+``seg``
+  Segment Number: Iindicates the segment number where the first self-test
+  failure occurred. If Device Self-test Status (**dsts**) is not set to
+  #NVME_ST_RESULT_KNOWN_SEG_FAIL, then this field should be ignored.
+
+``vdi``
+  Valid Diagnostic Information: Indicates the diagnostic failure
+  information that is reported. See :c:type:`enum nvme_st_valid_diag_info <nvme_st_valid_diag_info>`.
+
+``rsvd``
+  Reserved
+
+``poh``
+  Power On Hours (POH): Indicates the number of power-on hours at the
+  time the device self-test operation was completed or aborted. This
+  does not include time that the controller was powered and in a low
+  power state condition.
+
+``nsid``
+  Namespace Identifier (NSID): Indicates the namespace that the Failing
+  LBA occurred on. Valid only when the NSID Valid bit
+  (#NVME_ST_VALID_DIAG_INFO_NSID) is set in the Valid Diagnostic
+  Information (**vdi**) field.
+
+``flba``
+  Failing LBA: indicates the LBA of the logical block that caused the
+  test to fail. If the device encountered more than one failed logical
+  block during the test, then this field only indicates one of those
+  failed logical blocks. Valid only when the NSID Valid bit
+  (#NVME_ST_VALID_DIAG_INFO_FLBA) is set in the Valid Diagnostic
+  Information (**vdi**) field.
+
+``sct``
+  Status Code Type: This field may contain additional information related
+  to errors or conditions. Bits 2:0 may contain additional information
+  relating to errors or conditions that occurred during the device
+  self-test operation represented in the same format used in the Status
+  Code Type field of the completion queue entry (refer to :c:type:`enum nvme_status_field <nvme_status_field>`).
+  Valid only when the NSID Valid bit (#NVME_ST_VALID_DIAG_INFO_SCT) is
+  set in the Valid Diagnostic Information (**vdi**) field.
+
+``sc``
+  Status Code: This field may contain additional information relating
+  to errors or conditions that occurred during the device self-test
+  operation represented in the same format used in the Status Code field
+  of the completion queue entry. Valid only when the SCT Valid bit
+  (#NVME_ST_VALID_DIAG_INFO_SC) is set in the Valid Diagnostic
+  Information (**vdi**) field.
+
+``vs``
+  Vendor Specific.
+
+
+
+
+
+.. c:enum:: nvme_status_result
+
+   Result of the device self-test operation
+
+**Constants**
+
+``NVME_ST_RESULT_NO_ERR``
+  Operation completed without error.
+
+``NVME_ST_RESULT_ABORTED``
+  Operation was aborted by a Device Self-test command.
+
+``NVME_ST_RESULT_CLR``
+  Operation was aborted by a Controller Level Reset.
+
+``NVME_ST_RESULT_NS_REMOVED``
+  Operation was aborted due to a removal of
+  a namespace from the namespace inventory.
+
+``NVME_ST_RESULT_ABORTED_FORMAT``
+  Operation was aborted due to the processing
+  of a Format NVM command.
+
+``NVME_ST_RESULT_FATAL_ERR``
+  A fatal error or unknown test error occurred
+  while the controller was executing the device
+  self-test operation and the operation did
+  not complete.
+
+``NVME_ST_RESULT_UNKNOWN_SEG_FAIL``
+  Operation completed with a segment that failed
+  and the segment that failed is not known.
+
+``NVME_ST_RESULT_KNOWN_SEG_FAIL``
+  Operation completed with one or more failed
+  segments and the first segment that failed
+  is indicated in the Segment Number field.
+
+``NVME_ST_RESULT_ABORTED_UNKNOWN``
+  Operation was aborted for unknown reason.
+
+``NVME_ST_RESULT_ABORTED_SANITIZE``
+  Operation was aborted due to a sanitize operation.
+
+``NVME_ST_RESULT_NOT_USED``
+  Entry not used (does not contain a test result).
+
+``NVME_ST_RESULT_MASK``
+  Mask to get the status result value from
+  the :c:type:`struct nvme_st_result <nvme_st_result>`.dsts field.
+
+
+
+
+.. c:enum:: nvme_st_code
+
+   Self-test Code value
+
+**Constants**
+
+``NVME_ST_CODE_RESERVED``
+  Reserved.
+
+``NVME_ST_CODE_SHORT``
+  Short device self-test operation.
+
+``NVME_ST_CODE_EXTENDED``
+  Extended device self-test operation.
+
+``NVME_ST_CODE_VS``
+  Vendor specific.
+
+``NVME_ST_CODE_ABORT``
+  Abort device self-test operation.
+
+``NVME_ST_CODE_SHIFT``
+  Shift amount to get the code value from the
+  :c:type:`struct nvme_st_result <nvme_st_result>`.dsts field.
+
+
+
+
+.. c:enum:: nvme_st_curr_op
+
+   Current Device Self-Test Operation
+
+**Constants**
+
+``NVME_ST_CURR_OP_NOT_RUNNING``
+  No device self-test operation in progress.
+
+``NVME_ST_CURR_OP_SHORT``
+  Short device self-test operation in progress.
+
+``NVME_ST_CURR_OP_EXTENDED``
+  Extended device self-test operation in progress.
+
+``NVME_ST_CURR_OP_VS``
+  Vendor specific.
+
+``NVME_ST_CURR_OP_RESERVED``
+  Reserved.
+
+``NVME_ST_CURR_OP_MASK``
+  Mask to get the current operation value from the
+  :c:type:`struct nvme_self_test_log <nvme_self_test_log>`.current_operation field.
+
+``NVME_ST_CURR_OP_CMPL_MASK``
+  Mask to get the current operation completion value
+  from the :c:type:`struct nvme_self_test_log <nvme_self_test_log>`.completion field.
+
+
+
+
+.. c:enum:: nvme_st_valid_diag_info
+
+   Valid Diagnostic Information
+
+**Constants**
+
+``NVME_ST_VALID_DIAG_INFO_NSID``
+  NSID Valid: if set, then the contents of
+  the Namespace Identifier field are valid.
+
+``NVME_ST_VALID_DIAG_INFO_FLBA``
+  FLBA Valid: if set, then the contents of
+  the Failing LBA field are valid.
+
+``NVME_ST_VALID_DIAG_INFO_SCT``
+  SCT Valid: if set, then the contents of
+  the Status Code Type field are valid.
+
+``NVME_ST_VALID_DIAG_INFO_SC``
+  SC Valid: if set, then the contents of
+  the Status Code field are valid.
+
+
+
+
+.. c:struct:: nvme_self_test_log
+
+   Device Self-test (Log Identifier 06h)
+
+**Definition**
+
+::
+
+  struct nvme_self_test_log {
+    __u8 current_operation;
+    __u8 completion;
+    __u8 rsvd[2];
+    struct nvme_st_result   result[NVME_LOG_ST_MAX_RESULTS];
+  };
+
+**Members**
+
+``current_operation``
+  Current Device Self-Test Operation: indicates the status
+  of the current device self-test operation. If a device
+  self-test operation is in process (i.e., this field is set
+  to #NVME_ST_CURR_OP_SHORT or #NVME_ST_CURR_OP_EXTENDED),
+  then the controller shall not set this field to
+  #NVME_ST_CURR_OP_NOT_RUNNING until a new Self-test Result
+  Data Structure is created (i.e., if a device self-test
+  operation completes or is aborted, then the controller
+  shall create a Self-test Result Data Structure prior to
+  setting this field to #NVME_ST_CURR_OP_NOT_RUNNING).
+  See :c:type:`enum nvme_st_curr_op <nvme_st_curr_op>`.
+
+``completion``
+  Current Device Self-Test Completion: indicates the percentage
+  of the device self-test operation that is complete (e.g.,
+  a value of 25 indicates that 25% of the device self-test
+  operation is complete and 75% remains to be tested).
+  If the **current_operation** field is cleared to
+  #NVME_ST_CURR_OP_NOT_RUNNING (indicating there is no device
+  self-test operation in progress), then this field is ignored.
+
+``rsvd``
+  Reserved
+
+``result``
+  Self-test Result Data Structures, see :c:type:`struct nvme_st_result <nvme_st_result>`.
+
+
+
+
+
+.. c:enum:: nvme_cmd_get_log_telemetry_host_lsp
+
+   Telemetry Host-Initiated log specific field
+
+**Constants**
+
+``NVME_LOG_TELEM_HOST_LSP_RETAIN``
+  Get Telemetry Data Blocks
+
+``NVME_LOG_TELEM_HOST_LSP_CREATE``
+  Create Telemetry Data Blocks
+
+
+
+
+.. c:struct:: nvme_telemetry_log
+
+   Retrieve internal data specific to the manufacturer.
+
+**Definition**
+
+::
+
+  struct nvme_telemetry_log {
+    __u8 lpi;
+    __u8 rsvd1[4];
+    __u8 ieee[3];
+    __le16 dalb1;
+    __le16 dalb2;
+    __le16 dalb3;
+    __u8 rsvd14[2];
+    __le32 dalb4;
+    __u8 rsvd20[361];
+    __u8 hostdgn;
+    __u8 ctrlavail;
+    __u8 ctrldgn;
+    __u8 rsnident[128];
+    __u8 data_area[];
+  };
+
+**Members**
+
+``lpi``
+  Log Identifier, either ``NVME_LOG_LID_TELEMETRY_HOST`` or
+  ``NVME_LOG_LID_TELEMETRY_CTRL``
+
+``rsvd1``
+  Reserved
+
+``ieee``
+  IEEE OUI Identifier is the Organization Unique Identifier (OUI)
+  for the controller vendor that is able to interpret the data.
+
+``dalb1``
+  Telemetry Controller-Initiated Data Area 1 Last Block is
+  the value of the last block in this area.
+
+``dalb2``
+  Telemetry Controller-Initiated Data Area 1 Last Block is
+  the value of the last block in this area.
+
+``dalb3``
+  Telemetry Controller-Initiated Data Area 1 Last Block is
+  the value of the last block in this area.
+
+``rsvd14``
+  Reserved
+
+``dalb4``
+  Telemetry Controller-Initiated Data Area 4 Last Block is
+  the value of the last block in this area.
+
+``rsvd20``
+  Reserved
+
+``hostdgn``
+  Telemetry Host-Initiated Data Generation Number is a
+  value that is incremented each time the host initiates a
+  capture of its internal controller state in the controller .
+
+``ctrlavail``
+  Telemetry Controller-Initiated Data Available, if cleared,
+  then the controller telemetry log does not contain saved
+  internal controller state. If this field is set to 1h, the
+  controller log contains saved internal controller state. If
+  this field is set to 1h, the data will be latched until the
+  host releases it by reading the log with RAE cleared.
+
+``ctrldgn``
+  Telemetry Controller-Initiated Data Generation Number is
+  a value that is incremented each time the controller initiates a
+  capture of its internal controller state in the controller .
+
+``rsnident``
+  Reason Identifiers a vendor specific identifier that describes
+  the operating conditions of the controller at the time of
+  capture.
+
+``data_area``
+  Telemetry data blocks, vendor specific information data.
+
+
+**Description**
+
+This log consists of a header describing the log and zero or more Telemetry
+Data Blocks. All Telemetry Data Blocks are ``NVME_LOG_TELEM_BLOCK_SIZE``, 512
+bytes, in size. This log captures the controller’s internal state.
+
+
+
+
+.. c:struct:: nvme_endurance_group_log
+
+   Endurance Group Information Log
+
+**Definition**
+
+::
+
+  struct nvme_endurance_group_log {
+    __u8 critical_warning;
+    __u8 rsvd1[2];
+    __u8 avl_spare;
+    __u8 avl_spare_threshold;
+    __u8 percent_used;
+    __u8 rsvd6[26];
+    __u8 endurance_estimate[16];
+    __u8 data_units_read[16];
+    __u8 data_units_written[16];
+    __u8 media_units_written[16];
+    __u8 host_read_cmds[16];
+    __u8 host_write_cmds[16];
+    __u8 media_data_integrity_err[16];
+    __u8 num_err_info_log_entries[16];
+    __u8 rsvd160[352];
+  };
+
+**Members**
+
+``critical_warning``
+  Critical Warning
+
+``rsvd1``
+  Reserved
+
+``avl_spare``
+  Available Spare
+
+``avl_spare_threshold``
+  Available Spare Threshold
+
+``percent_used``
+  Percentage Used
+
+``rsvd6``
+  Reserved
+
+``endurance_estimate``
+  Endurance Estimate
+
+``data_units_read``
+  Data Units Read
+
+``data_units_written``
+  Data Units Written
+
+``media_units_written``
+  Media Units Written
+
+``host_read_cmds``
+  Host Read Commands
+
+``host_write_cmds``
+  Host Write Commands
+
+``media_data_integrity_err``
+  Media and Data Integrity Errors
+
+``num_err_info_log_entries``
+  Number of Error Information Log Entries
+
+``rsvd160``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_eg_critical_warning_flags
+
+   Endurance Group Information Log - Critical Warning
+
+**Constants**
+
+``NVME_EG_CRITICAL_WARNING_SPARE``
+  Available spare capacity of the Endurance Group
+  has fallen below the threshold
+
+``NVME_EG_CRITICAL_WARNING_DEGRADED``
+  Endurance Group reliability has been degraded
+
+``NVME_EG_CRITICAL_WARNING_READ_ONLY``
+  Endurance Group have been placed in read only
+  mode
+
+
+
+
+.. c:struct:: nvme_aggregate_endurance_group_event
+
+   Endurance Group Event Aggregate
+
+**Definition**
+
+::
+
+  struct nvme_aggregate_endurance_group_event {
+    __le64 num_entries;
+    __le16 entries[];
+  };
+
+**Members**
+
+``num_entries``
+  Number or entries
+
+``entries``
+  List of entries
+
+
+
+
+
+.. c:struct:: nvme_nvmset_predictable_lat_log
+
+   Predictable Latency Mode - Deterministic Threshold Configuration Data
+
+**Definition**
+
+::
+
+  struct nvme_nvmset_predictable_lat_log {
+    __u8 status;
+    __u8 rsvd1;
+    __le16 event_type;
+    __u8 rsvd4[28];
+    __le64 dtwin_rt;
+    __le64 dtwin_wt;
+    __le64 dtwin_tmax;
+    __le64 ndwin_tmin_hi;
+    __le64 ndwin_tmin_lo;
+    __u8 rsvd72[56];
+    __le64 dtwin_re;
+    __le64 dtwin_we;
+    __le64 dtwin_te;
+    __u8 rsvd152[360];
+  };
+
+**Members**
+
+``status``
+  Status
+
+``rsvd1``
+  Reserved
+
+``event_type``
+  Event Type
+
+``rsvd4``
+  Reserved
+
+``dtwin_rt``
+  DTWIN Reads Typical
+
+``dtwin_wt``
+  DTWIN Writes Typical
+
+``dtwin_tmax``
+  DTWIN Time Maximum
+
+``ndwin_tmin_hi``
+  NDWIN Time Minimum High
+
+``ndwin_tmin_lo``
+  NDWIN Time Minimum Low
+
+``rsvd72``
+  Reserved
+
+``dtwin_re``
+  DTWIN Reads Estimate
+
+``dtwin_we``
+  DTWIN Writes Estimate
+
+``dtwin_te``
+  DTWIN Time Estimate
+
+``rsvd152``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_nvmeset_pl_status
+
+   Predictable Latency Per NVM Set Log - Status
+
+**Constants**
+
+``NVME_NVMSET_PL_STATUS_DISABLED``
+  Not used (Predictable Latency Mode not enabled)
+
+``NVME_NVMSET_PL_STATUS_DTWIN``
+  Deterministic Window (DTWIN)
+
+``NVME_NVMSET_PL_STATUS_NDWIN``
+  Non-Deterministic Window (NDWIN)
+
+
+
+
+.. c:enum:: nvme_nvmset_pl_events
+
+   Predictable Latency Per NVM Set Log - Event Type
+
+**Constants**
+
+``NVME_NVMSET_PL_EVENT_DTWIN_READ_WARN``
+  DTWIN Reads Warning
+
+``NVME_NVMSET_PL_EVENT_DTWIN_WRITE_WARN``
+  DTWIN Writes Warning
+
+``NVME_NVMSET_PL_EVENT_DTWIN_TIME_WARN``
+  DTWIN Time Warning
+
+``NVME_NVMSET_PL_EVENT_DTWIN_EXCEEDED``
+  Autonomous transition from DTWIN
+  to NDWIN due to typical or
+  maximum value exceeded
+
+``NVME_NVMSET_PL_EVENT_DTWIN_EXCURSION``
+  Autonomous transition from DTWIN
+  to NDWIN due to Deterministic
+  Excursion
+
+
+
+
+.. c:struct:: nvme_aggregate_predictable_lat_event
+
+   Predictable Latency Event Aggregate Log Page
+
+**Definition**
+
+::
+
+  struct nvme_aggregate_predictable_lat_event {
+    __le64 num_entries;
+    __le16 entries[];
+  };
+
+**Members**
+
+``num_entries``
+  Number of entries
+
+``entries``
+  Entry list
+
+
+
+
+
+.. c:struct:: nvme_ana_group_desc
+
+   ANA Group Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_ana_group_desc {
+    __le32 grpid;
+    __le32 nnsids;
+    __le64 chgcnt;
+    __u8 state;
+    __u8 rsvd17[15];
+    __le32 nsids[];
+  };
+
+**Members**
+
+``grpid``
+  ANA group id
+
+``nnsids``
+  Number of namespaces in **nsids**
+
+``chgcnt``
+  Change counter
+
+``state``
+  ANA state
+
+``rsvd17``
+  Reserved
+
+``nsids``
+  List of namespaces
+
+
+
+
+
+.. c:enum:: nvme_ana_state
+
+   ANA Group Descriptor - Asymmetric Namespace Access State
+
+**Constants**
+
+``NVME_ANA_STATE_OPTIMIZED``
+  ANA Optimized state
+
+``NVME_ANA_STATE_NONOPTIMIZED``
+  ANA Non-Optimized state
+
+``NVME_ANA_STATE_INACCESSIBLE``
+  ANA Inaccessible state
+
+``NVME_ANA_STATE_PERSISTENT_LOSS``
+  ANA Persistent Loss state
+
+``NVME_ANA_STATE_CHANGE``
+  ANA Change state
+
+
+
+
+.. c:struct:: nvme_ana_log
+
+   Asymmetric Namespace Access Log
+
+**Definition**
+
+::
+
+  struct nvme_ana_log {
+    __le64 chgcnt;
+    __le16 ngrps;
+    __u8 rsvd10[6];
+    struct nvme_ana_group_desc descs[];
+  };
+
+**Members**
+
+``chgcnt``
+  Change Count
+
+``ngrps``
+  Number of ANA Group Descriptors
+
+``rsvd10``
+  Reserved
+
+``descs``
+  ANA Group Descriptor
+
+
+
+
+
+.. c:struct:: nvme_persistent_event_log
+
+   Persistent Event Log
+
+**Definition**
+
+::
+
+  struct nvme_persistent_event_log {
+    __u8 lid;
+    __u8 rsvd1[3];
+    __le32 tnev;
+    __le64 tll;
+    __u8 rv;
+    __u8 rsvd17;
+    __le16 lhl;
+    __le64 ts;
+    __u8 poh[16];
+    __le64 pcc;
+    __le16 vid;
+    __le16 ssvid;
+    char sn[20];
+    char mn[40];
+    char subnqn[NVME_NQN_LENGTH];
+    __le16 gen_number;
+    __le32 rci;
+    __u8 rsvd378[102];
+    __u8 seb[32];
+  };
+
+**Members**
+
+``lid``
+  Log Identifier
+
+``rsvd1``
+  Reserved
+
+``tnev``
+  Total Number of Events
+
+``tll``
+  Total Log Length
+
+``rv``
+  Log Revision
+
+``rsvd17``
+  Reserved
+
+``lhl``
+  Log Header Length
+
+``ts``
+  Timestamp
+
+``poh``
+  Power on Hours
+
+``pcc``
+  Power Cycle Count
+
+``vid``
+  PCI Vendor ID
+
+``ssvid``
+  PCI Subsystem Vendor ID
+
+``sn``
+  Serial Number
+
+``mn``
+  Model Number
+
+``subnqn``
+  NVM Subsystem NVMe Qualified Name
+
+``gen_number``
+  Generation Number
+
+``rci``
+  Reporting Context Information
+
+``rsvd378``
+  Reserved
+
+``seb``
+  Supported Events Bitmap
+
+
+
+
+
+.. c:struct:: nvme_persistent_event_entry
+
+   Persistent Event
+
+**Definition**
+
+::
+
+  struct nvme_persistent_event_entry {
+    __u8 etype;
+    __u8 etype_rev;
+    __u8 ehl;
+    __u8 ehai;
+    __le16 cntlid;
+    __le64 ets;
+    __le16 pelpid;
+    __u8 rsvd16[4];
+    __le16 vsil;
+    __le16 el;
+  };
+
+**Members**
+
+``etype``
+  Event Type
+
+``etype_rev``
+  Event Type Revision
+
+``ehl``
+  Event Header Length
+
+``ehai``
+  Event Header Additional Info
+
+``cntlid``
+  Controller Identifier
+
+``ets``
+  Event Timestamp
+
+``pelpid``
+  Port Identifier
+
+``rsvd16``
+  Reserved
+
+``vsil``
+  Vendor Specific Information Length
+
+``el``
+  Event Length
+
+
+
+
+
+.. c:enum:: nvme_persistent_event_types
+
+   Persistent event log events
+
+**Constants**
+
+``NVME_PEL_SMART_HEALTH_EVENT``
+  SMART / Health Log Snapshot Event
+
+``NVME_PEL_FW_COMMIT_EVENT``
+  Firmware Commit Event
+
+``NVME_PEL_TIMESTAMP_EVENT``
+  Timestamp Change Event
+
+``NVME_PEL_POWER_ON_RESET_EVENT``
+  Power-on or Reset Event
+
+``NVME_PEL_NSS_HW_ERROR_EVENT``
+  NVM Subsystem Hardware Error Event
+
+``NVME_PEL_CHANGE_NS_EVENT``
+  Change Namespace Event
+
+``NVME_PEL_FORMAT_START_EVENT``
+  Format NVM Start Event
+
+``NVME_PEL_FORMAT_COMPLETION_EVENT``
+  Format NVM Completion Event
+
+``NVME_PEL_SANITIZE_START_EVENT``
+  Sanitize Start Event
+
+``NVME_PEL_SANITIZE_COMPLETION_EVENT``
+  Sanitize Completion Event
+
+``NVME_PEL_SET_FEATURE_EVENT``
+  Set Feature Event
+
+``NVME_PEL_TELEMETRY_CRT``
+  Telemetry Log Create Event
+
+``NVME_PEL_THERMAL_EXCURSION_EVENT``
+  Thermal Excursion Event
+
+
+
+
+.. c:struct:: nvme_fw_commit_event
+
+   Firmware Commit Event Data
+
+**Definition**
+
+::
+
+  struct nvme_fw_commit_event {
+    __le64 old_fw_rev;
+    __le64 new_fw_rev;
+    __u8 fw_commit_action;
+    __u8 fw_slot;
+    __u8 sct_fw;
+    __u8 sc_fw;
+    __le16 vndr_assign_fw_commit_rc;
+  };
+
+**Members**
+
+``old_fw_rev``
+  Old Firmware Revision
+
+``new_fw_rev``
+  New Firmware Revision
+
+``fw_commit_action``
+  Firmware Commit Action
+
+``fw_slot``
+  Firmware Slot
+
+``sct_fw``
+  Status Code Type for Firmware Commit Command
+
+``sc_fw``
+  Status Returned for Firmware Commit Command
+
+``vndr_assign_fw_commit_rc``
+  Vendor Assigned Firmware Commit Result Code
+
+
+
+
+
+.. c:struct:: nvme_timestamp
+
+   Timestamp - Data Structure for Get Features
+
+**Definition**
+
+::
+
+  struct nvme_timestamp {
+    __u8 timestamp[6];
+    __u8 attr;
+    __u8 rsvd;
+  };
+
+**Members**
+
+``timestamp``
+  Timestamp value based on origin and synch field
+
+``attr``
+  Attribute
+
+``rsvd``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_time_stamp_change_event
+
+   Timestamp Change Event
+
+**Definition**
+
+::
+
+  struct nvme_time_stamp_change_event {
+    __le64 previous_timestamp;
+    __le64 ml_secs_since_reset;
+  };
+
+**Members**
+
+``previous_timestamp``
+  Previous Timestamp
+
+``ml_secs_since_reset``
+  Milliseconds Since Reset
+
+
+
+
+
+.. c:struct:: nvme_power_on_reset_info_list
+
+   Controller Reset Information
+
+**Definition**
+
+::
+
+  struct nvme_power_on_reset_info_list {
+    __le16 cid;
+    __u8 fw_act;
+    __u8 op_in_prog;
+    __u8 rsvd4[12];
+    __le32 ctrl_power_cycle;
+    __le64 power_on_ml_seconds;
+    __le64 ctrl_time_stamp;
+  };
+
+**Members**
+
+``cid``
+  Controller ID
+
+``fw_act``
+  Firmware Activation
+
+``op_in_prog``
+  Operation in Progress
+
+``rsvd4``
+  Reserved
+
+``ctrl_power_cycle``
+  Controller Power Cycle
+
+``power_on_ml_seconds``
+  Power on milliseconds
+
+``ctrl_time_stamp``
+  Controller Timestamp
+
+
+
+
+
+.. c:struct:: nvme_nss_hw_err_event
+
+   NVM Subsystem Hardware Error Event
+
+**Definition**
+
+::
+
+  struct nvme_nss_hw_err_event {
+    __le16 nss_hw_err_event_code;
+    __u8 rsvd2[2];
+    __u8 *add_hw_err_info;
+  };
+
+**Members**
+
+``nss_hw_err_event_code``
+  NVM Subsystem Hardware Error Event Code
+
+``rsvd2``
+  Reserved
+
+``add_hw_err_info``
+  Additional Hardware Error Information
+
+
+
+
+
+.. c:struct:: nvme_change_ns_event
+
+   Change Namespace Event Data
+
+**Definition**
+
+::
+
+  struct nvme_change_ns_event {
+    __le32 nsmgt_cdw10;
+    __u8 rsvd4[4];
+    __le64 nsze;
+    __u8 rsvd16[8];
+    __le64 nscap;
+    __u8 flbas;
+    __u8 dps;
+    __u8 nmic;
+    __u8 rsvd35;
+    __le32 ana_grp_id;
+    __le16 nvmset_id;
+    __le16 rsvd42;
+    __le32 nsid;
+  };
+
+**Members**
+
+``nsmgt_cdw10``
+  Namespace Management CDW10
+
+``rsvd4``
+  Reserved
+
+``nsze``
+  Namespace Size
+
+``rsvd16``
+  Reserved
+
+``nscap``
+  Namespace Capacity
+
+``flbas``
+  Formatted LBA Size
+
+``dps``
+  End-to-end Data Protection Type Settings
+
+``nmic``
+  Namespace Multi-path I/O and Namespace Sharing Capabilities
+
+``rsvd35``
+  Reserved
+
+``ana_grp_id``
+  ANA Group Identifier
+
+``nvmset_id``
+  NVM Set Identifier
+
+``rsvd42``
+  Reserved
+
+``nsid``
+  Namespace ID
+
+
+
+
+
+.. c:struct:: nvme_format_nvm_start_event
+
+   Format NVM Start Event Data
+
+**Definition**
+
+::
+
+  struct nvme_format_nvm_start_event {
+    __le32 nsid;
+    __u8 fna;
+    __u8 rsvd5[3];
+    __le32 format_nvm_cdw10;
+  };
+
+**Members**
+
+``nsid``
+  Namespace Identifier
+
+``fna``
+  Format NVM Attributes
+
+``rsvd5``
+  Reserved
+
+``format_nvm_cdw10``
+  Format NVM CDW10
+
+
+
+
+
+.. c:struct:: nvme_format_nvm_compln_event
+
+   Format NVM Completion Event Data
+
+**Definition**
+
+::
+
+  struct nvme_format_nvm_compln_event {
+    __le32 nsid;
+    __u8 smallest_fpi;
+    __u8 format_nvm_status;
+    __le16 compln_info;
+    __le32 status_field;
+  };
+
+**Members**
+
+``nsid``
+  Namespace Identifier
+
+``smallest_fpi``
+  Smallest Format Progress Indicator
+
+``format_nvm_status``
+  Format NVM Status
+
+``compln_info``
+  Completion Information
+
+``status_field``
+  Status Field
+
+
+
+
+
+.. c:struct:: nvme_sanitize_start_event
+
+   Sanitize Start Event Data
+
+**Definition**
+
+::
+
+  struct nvme_sanitize_start_event {
+    __le32 sani_cap;
+    __le32 sani_cdw10;
+    __le32 sani_cdw11;
+  };
+
+**Members**
+
+``sani_cap``
+  SANICAP
+
+``sani_cdw10``
+  Sanitize CDW10
+
+``sani_cdw11``
+  Sanitize CDW11
+
+
+
+
+
+.. c:struct:: nvme_sanitize_compln_event
+
+   Sanitize Completion Event Data
+
+**Definition**
+
+::
+
+  struct nvme_sanitize_compln_event {
+    __le16 sani_prog;
+    __le16 sani_status;
+    __le16 cmpln_info;
+    __u8 rsvd6[2];
+  };
+
+**Members**
+
+``sani_prog``
+  Sanitize Progress
+
+``sani_status``
+  Sanitize Status
+
+``cmpln_info``
+  Completion Information
+
+``rsvd6``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_set_feature_event
+
+   Set Feature Event Data
+
+**Definition**
+
+::
+
+  struct nvme_set_feature_event {
+    __le32 layout;
+    __le32 cdw_mem[0];
+  };
+
+**Members**
+
+``layout``
+  Set Feature Event Layout
+
+``cdw_mem``
+  Command Dwords Memory buffer
+
+
+
+
+
+.. c:struct:: nvme_thermal_exc_event
+
+   Thermal Excursion Event Data
+
+**Definition**
+
+::
+
+  struct nvme_thermal_exc_event {
+    __u8 over_temp;
+    __u8 threshold;
+  };
+
+**Members**
+
+``over_temp``
+  Over Temperature
+
+``threshold``
+  temperature threshold
+
+
+
+
+
+.. c:struct:: nvme_lba_rd
+
+   LBA Range Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_lba_rd {
+    __le64 rslba;
+    __le32 rnlb;
+    __u8 rsvd12[4];
+  };
+
+**Members**
+
+``rslba``
+  Range Starting LBA
+
+``rnlb``
+  Range Number of Logical Blocks
+
+``rsvd12``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_lbas_ns_element
+
+   LBA Status Log Namespace Element
+
+**Definition**
+
+::
+
+  struct nvme_lbas_ns_element {
+    __le32 neid;
+    __le32 nlrd;
+    __u8 ratype;
+    __u8 rsvd8[7];
+    struct nvme_lba_rd lba_rd[];
+  };
+
+**Members**
+
+``neid``
+  Namespace Element Identifier
+
+``nlrd``
+  Number of LBA Range Descriptors
+
+``ratype``
+  Recommended Action Type. see **enum** nvme_lba_status_atype
+
+``rsvd8``
+  Reserved
+
+``lba_rd``
+  LBA Range Descriptor
+
+
+
+
+
+.. c:enum:: nvme_lba_status_atype
+
+   Potentially Unrecoverable LBAs
+
+**Constants**
+
+``NVME_LBA_STATUS_ATYPE_SCAN_UNTRACKED``
+  Potentially Unrecoverable LBAs
+
+``NVME_LBA_STATUS_ATYPE_SCAN_TRACKED``
+  Potentially Unrecoverable LBAs
+  associated with physical storage
+
+
+
+
+.. c:struct:: nvme_lba_status_log
+
+   LBA Status Information Log
+
+**Definition**
+
+::
+
+  struct nvme_lba_status_log {
+    __le32 lslplen;
+    __le32 nlslne;
+    __le32 estulb;
+    __u8 rsvd12[2];
+    __le16 lsgc;
+    struct nvme_lbas_ns_element elements[];
+  };
+
+**Members**
+
+``lslplen``
+  LBA Status Log Page Length
+
+``nlslne``
+  Number of LBA Status Log Namespace Elements
+
+``estulb``
+  Estimate of Unrecoverable Logical Blocks
+
+``rsvd12``
+  Reserved
+
+``lsgc``
+  LBA Status Generation Counter
+
+``elements``
+  LBA Status Log Namespace Element List
+
+
+
+
+
+.. c:struct:: nvme_eg_event_aggregate_log
+
+   Endurance Group Event Aggregate
+
+**Definition**
+
+::
+
+  struct nvme_eg_event_aggregate_log {
+    __le64 nr_entries;
+    __le16 egids[];
+  };
+
+**Members**
+
+``nr_entries``
+  Number of Entries
+
+``egids``
+  Endurance Group Identifier
+
+
+
+
+
+.. c:enum:: nvme_fid_supported_effects
+
+   FID Supported and Effects Data Structure definitions
+
+**Constants**
+
+``NVME_FID_SUPPORTED_EFFECTS_FSUPP``
+  FID Supported
+
+``NVME_FID_SUPPORTED_EFFECTS_UDCC``
+  User Data Content Change
+
+``NVME_FID_SUPPORTED_EFFECTS_NCC``
+  Namespace Capability Change
+
+``NVME_FID_SUPPORTED_EFFECTS_NIC``
+  Namespace Inventory Change
+
+``NVME_FID_SUPPORTED_EFFECTS_CCC``
+  Controller Capability Change
+
+``NVME_FID_SUPPORTED_EFFECTS_UUID_SEL``
+  UUID Selection Supported
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_SHIFT``
+  FID Scope Shift
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_MASK``
+  FID Scope Mask
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_NS``
+  Namespace Scope
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_CTRL``
+  Controller Scope
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_NVM_SET``
+  NVM Set Scope
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_ENDGRP``
+  Endurance Group Scope
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_DOMAIN``
+  Domain Scope
+
+``NVME_FID_SUPPORTED_EFFECTS_SCOPE_NSS``
+  NVM Subsystem Scope
+
+
+
+
+.. c:struct:: nvme_fid_supported_effects_log
+
+   Feature Identifiers Supported and Effects
+
+**Definition**
+
+::
+
+  struct nvme_fid_supported_effects_log {
+    __le32 fid_support[NVME_LOG_FID_SUPPORTED_EFFECTS_MAX];
+  };
+
+**Members**
+
+``fid_support``
+  Feature Identifier Supported
+
+
+
+
+
+.. c:enum:: nvme_mi_cmd_supported_effects
+
+   MI Command Supported and Effects Data Structure
+
+**Constants**
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_CSUPP``
+  Command Supported
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_UDCC``
+  User Data Content Change
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_NCC``
+  Namespace Capability Change
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_NIC``
+  Namespace Inventory Change
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_CCC``
+  Controller Capability Change
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_SHIFT``
+  20 bit shift
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_MASK``
+  12 bit mask - 0xfff
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NS``
+  Namespace Scope
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_CTRL``
+  Controller Scope
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NVM_SET``
+  NVM Set Scope
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_ENDGRP``
+  Endurance Group Scope
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_DOMAIN``
+  Domain Scope
+
+``NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NSS``
+  NVM Subsystem Scope
+
+
+
+
+.. c:struct:: nvme_mi_cmd_supported_effects_log
+
+   NVMe-MI Commands Supported and Effects Log
+
+**Definition**
+
+::
+
+  struct nvme_mi_cmd_supported_effects_log {
+    __le32 mi_cmd_support[NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX];
+    __le32 reserved1[NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED];
+  };
+
+**Members**
+
+``mi_cmd_support``
+  NVMe-MI Commands Supported
+
+``reserved1``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_boot_partition
+
+   Boot Partition Log
+
+**Definition**
+
+::
+
+  struct nvme_boot_partition {
+    __u8 lid;
+    __u8 rsvd1[3];
+    __le32 bpinfo;
+    __u8 rsvd8[8];
+    __u8 boot_partition_data[];
+  };
+
+**Members**
+
+``lid``
+  Boot Partition Identifier
+
+``rsvd1``
+  Reserved
+
+``bpinfo``
+  Boot Partition Information
+
+``rsvd8``
+  Reserved
+
+``boot_partition_data``
+  Contains the contents of the
+  specified Boot Partition
+
+
+
+
+
+.. c:struct:: nvme_media_unit_stat_desc
+
+   Media Unit Status Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_media_unit_stat_desc {
+    __le16 muid;
+    __le16 domainid;
+    __le16 endgid;
+    __le16 nvmsetid;
+    __le16 cap_adj_fctr;
+    __u8 avl_spare;
+    __u8 percent_used;
+    __u8 mucs;
+    __u8 cio;
+  };
+
+**Members**
+
+``muid``
+  Media Unit Identifier
+
+``domainid``
+  Domain Identifier
+
+``endgid``
+  Endurance Group Identifier
+
+``nvmsetid``
+  NVM Set Identifier
+
+``cap_adj_fctr``
+  Capacity Adjustment Factor
+
+``avl_spare``
+  Available Spare
+
+``percent_used``
+  Percentage Used
+
+``mucs``
+  Number of Channels attached to media units
+
+``cio``
+  Channel Identifiers Offset
+
+
+
+
+
+.. c:struct:: nvme_media_unit_stat_log
+
+   Media Unit Status
+
+**Definition**
+
+::
+
+  struct nvme_media_unit_stat_log {
+    __le16 nmu;
+    __le16 cchans;
+    __le16 sel_config;
+    __u8 rsvd6[10];
+    struct nvme_media_unit_stat_desc mus_desc[];
+  };
+
+**Members**
+
+``nmu``
+  Number unit status descriptor
+
+``cchans``
+  Number of Channels
+
+``sel_config``
+  Selected Configuration
+
+``rsvd6``
+  Reserved
+
+``mus_desc``
+  Media unit statistic descriptors
+
+
+
+
+
+.. c:struct:: nvme_media_unit_config_desc
+
+   Media Unit Configuration Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_media_unit_config_desc {
+    __le16 muid;
+    __u8 rsvd2[4];
+    __le16 mudl;
+  };
+
+**Members**
+
+``muid``
+  Media Unit Identifier
+
+``rsvd2``
+  Reserved
+
+``mudl``
+  Media Unit Descriptor Length
+
+
+
+
+
+.. c:struct:: nvme_channel_config_desc
+
+   Channel Configuration Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_channel_config_desc {
+    __le16 chanid;
+    __le16 chmus;
+    struct nvme_media_unit_config_desc mu_config_desc[];
+  };
+
+**Members**
+
+``chanid``
+  Channel Identifier
+
+``chmus``
+  Number Channel Media Units
+
+``mu_config_desc``
+  Channel Unit config descriptors.
+  See **struct** nvme_media_unit_config_desc
+
+
+
+
+
+.. c:struct:: nvme_end_grp_chan_desc
+
+   Endurance Group Channel Configuration Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_end_grp_chan_desc {
+    __le16 egchans;
+    struct nvme_channel_config_desc chan_config_desc[];
+  };
+
+**Members**
+
+``egchans``
+  Number of Channels
+
+``chan_config_desc``
+  Channel config descriptors.
+  See **struct** nvme_channel_config_desc
+
+
+
+
+
+.. c:struct:: nvme_end_grp_config_desc
+
+   Endurance Group Configuration Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_end_grp_config_desc {
+    __le16 endgid;
+    __le16 cap_adj_factor;
+    __u8 rsvd4[12];
+    __u8 tegcap[16];
+    __u8 segcap[16];
+    __u8 end_est[16];
+    __u8 rsvd64[16];
+    __le16 egsets;
+    __le16 nvmsetid[];
+  };
+
+**Members**
+
+``endgid``
+  Endurance Group Identifier
+
+``cap_adj_factor``
+  Capacity Adjustment Factor
+
+``rsvd4``
+  Reserved
+
+``tegcap``
+  Total Endurance Group Capacity
+
+``segcap``
+  Spare Endurance Group Capacity
+
+``end_est``
+  Endurance Estimate
+
+``rsvd64``
+  Reserved
+
+``egsets``
+  Number of NVM Sets
+
+``nvmsetid``
+  NVM Set Identifier
+
+
+
+
+
+.. c:struct:: nvme_capacity_config_desc
+
+   Capacity Configuration structure definitions
+
+**Definition**
+
+::
+
+  struct nvme_capacity_config_desc {
+    __le16 cap_config_id;
+    __le16 domainid;
+    __le16 egcn;
+    __u8 rsvd6[26];
+    struct nvme_end_grp_config_desc egcd[];
+  };
+
+**Members**
+
+``cap_config_id``
+  Capacity Configuration Identifier
+
+``domainid``
+  Domain Identifier
+
+``egcn``
+  Number Endurance Group Configuration
+  Descriptors
+
+``rsvd6``
+  Reserved
+
+``egcd``
+  Endurance Group Config descriptors.
+  See **struct** nvme_end_grp_config_desc
+
+
+
+
+
+.. c:struct:: nvme_supported_cap_config_list_log
+
+   Supported Capacity Configuration list log page
+
+**Definition**
+
+::
+
+  struct nvme_supported_cap_config_list_log {
+    __u8 sccn;
+    __u8 rsvd1[15];
+    struct nvme_capacity_config_desc cap_config_desc[];
+  };
+
+**Members**
+
+``sccn``
+  Number of capacity configuration
+
+``rsvd1``
+  Reserved
+
+``cap_config_desc``
+  Capacity configuration descriptor.
+  See **struct** nvme_capacity_config_desc
+
+
+
+
+
+.. c:struct:: nvme_resv_notification_log
+
+   Reservation Notification Log
+
+**Definition**
+
+::
+
+  struct nvme_resv_notification_log {
+    __le64 lpc;
+    __u8 rnlpt;
+    __u8 nalp;
+    __u8 rsvd9[2];
+    __le32 nsid;
+    __u8 rsvd16[48];
+  };
+
+**Members**
+
+``lpc``
+  Log Page Count
+
+``rnlpt``
+  See :c:type:`enum nvme_resv_notify_rnlpt <nvme_resv_notify_rnlpt>`.
+
+``nalp``
+  Number of Available Log Pages
+
+``rsvd9``
+  Reserved
+
+``nsid``
+  Namespace ID
+
+``rsvd16``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_resv_notify_rnlpt
+
+   Reservation Notification Log - Reservation Notification Log Page Type
+
+**Constants**
+
+``NVME_RESV_NOTIFY_RNLPT_EMPTY``
+  Empty Log Page
+
+``NVME_RESV_NOTIFY_RNLPT_REGISTRATION_PREEMPTED``
+  Registration Preempted
+
+``NVME_RESV_NOTIFY_RNLPT_RESERVATION_RELEASED``
+  Reservation Released
+
+``NVME_RESV_NOTIFY_RNLPT_RESERVATION_PREEMPTED``
+  Reservation Preempted
+
+
+
+
+.. c:struct:: nvme_sanitize_log_page
+
+   Sanitize Status (Log Identifier 81h)
+
+**Definition**
+
+::
+
+  struct nvme_sanitize_log_page {
+    __le16 sprog;
+    __le16 sstat;
+    __le32 scdw10;
+    __le32 eto;
+    __le32 etbe;
+    __le32 etce;
+    __le32 etond;
+    __le32 etbend;
+    __le32 etcend;
+    __u8 rsvd32[480];
+  };
+
+**Members**
+
+``sprog``
+  Sanitize Progress (SPROG): indicates the fraction complete of the
+  sanitize operation. The value is a numerator of the fraction
+  complete that has 65,536 (10000h) as its denominator. This value
+  shall be set to FFFFh if the **sstat** field is not set to
+  ``NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS``.
+
+``sstat``
+  Sanitize Status (SSTAT): indicates the status associated with
+  the most recent sanitize operation. See :c:type:`enum nvme_sanitize_sstat <nvme_sanitize_sstat>`.
+
+``scdw10``
+  Sanitize Command Dword 10 Information (SCDW10): contains the value
+  of the Command Dword 10 field of the Sanitize command that started
+  the sanitize operation.
+
+``eto``
+  Estimated Time For Overwrite: indicates the number of seconds required
+  to complete an Overwrite sanitize operation with 16 passes in
+  the background when the No-Deallocate Modifies Media After Sanitize
+  field is not set to 10b. A value of 0h indicates that the sanitize
+  operation is expected to be completed in the background when the
+  Sanitize command that started that operation is completed. A value
+  of FFFFFFFFh indicates that no time period is reported.
+
+``etbe``
+  Estimated Time For Block Erase: indicates the number of seconds
+  required to complete a Block Erase sanitize operation in the
+  background when the No-Deallocate Modifies Media After Sanitize
+  field is not set to 10b. A value of 0h indicates that the sanitize
+  operation is expected to be completed in the background when the
+  Sanitize command that started that operation is completed.
+  A value of FFFFFFFFh indicates that no time period is reported.
+
+``etce``
+  Estimated Time For Crypto Erase: indicates the number of seconds
+  required to complete a Crypto Erase sanitize operation in the
+  background when the No-Deallocate Modifies Media After Sanitize
+  field is not set to 10b. A value of 0h indicates that the sanitize
+  operation is expected to be completed in the background when the
+  Sanitize command that started that operation is completed.
+  A value of FFFFFFFFh indicates that no time period is reported.
+
+``etond``
+  Estimated Time For Overwrite With No-Deallocate Media Modification:
+  indicates the number of seconds required to complete an Overwrite
+  sanitize operation and the associated additional media modification
+  after the Overwrite sanitize operation in the background when
+  the No-Deallocate After Sanitize bit was set to 1 in the Sanitize
+  command that requested the Overwrite sanitize operation; and
+  the No-Deallocate Modifies Media After Sanitize field is set to 10b.
+  A value of 0h indicates that the sanitize operation is expected
+  to be completed in the background when the Sanitize command that
+  started that operation is completed. A value of FFFFFFFFh indicates
+  that no time period is reported.
+
+``etbend``
+  Estimated Time For Block Erase With No-Deallocate Media Modification:
+  indicates the number of seconds required to complete a Block Erase
+  sanitize operation and the associated additional media modification
+  after the Block Erase sanitize operation in the background when
+  the No-Deallocate After Sanitize bit was set to 1 in the Sanitize
+  command that requested the Overwrite sanitize operation; and
+  the No-Deallocate Modifies Media After Sanitize field is set to 10b.
+  A value of 0h indicates that the sanitize operation is expected
+  to be completed in the background when the Sanitize command that
+  started that operation is completed. A value of FFFFFFFFh indicates
+  that no time period is reported.
+
+``etcend``
+  Estimated Time For Crypto Erase With No-Deallocate Media Modification:
+  indicates the number of seconds required to complete a Crypto Erase
+  sanitize operation and the associated additional media modification
+  after the Crypto Erase sanitize operation in the background when
+  the No-Deallocate After Sanitize bit was set to 1 in the Sanitize
+  command that requested the Overwrite sanitize operation; and
+  the No-Deallocate Modifies Media After Sanitize field is set to 10b.
+  A value of 0h indicates that the sanitize operation is expected
+  to be completed in the background when the Sanitize command that
+  started that operation is completed. A value of FFFFFFFFh indicates
+  that no time period is reported.
+
+``rsvd32``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_sanitize_sstat
+
+   Sanitize Status (SSTAT)
+
+**Constants**
+
+``NVME_SANITIZE_SSTAT_STATUS_SHIFT``
+  Shift amount to get the status value of
+  the most recent sanitize operation from
+  the :c:type:`struct nvme_sanitize_log_page <nvme_sanitize_log_page>`.sstat
+  field.
+
+``NVME_SANITIZE_SSTAT_STATUS_MASK``
+  Mask to get the status value of the most
+  recent sanitize operation.
+
+``NVME_SANITIZE_SSTAT_STATUS_NEVER_SANITIZED``
+  The NVM subsystem has never been
+  sanitized.
+
+``NVME_SANITIZE_SSTAT_STATUS_COMPLETE_SUCCESS``
+  The most recent sanitize operation
+  completed successfully including any
+  additional media modification.
+
+``NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS``
+  A sanitize operation is currently in progress.
+
+``NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED``
+  The most recent sanitize operation
+  failed.
+
+``NVME_SANITIZE_SSTAT_STATUS_ND_COMPLETE_SUCCESS``
+  The most recent sanitize operation
+  for which No-Deallocate After Sanitize was
+  requested has completed successfully with
+  deallocation of all user data.
+
+``NVME_SANITIZE_SSTAT_COMPLETED_PASSES_SHIFT``
+  Shift amount to get the number
+  of completed passes if the most recent
+  sanitize operation was an Overwrite. This
+  value shall be cleared to 0h if the most
+  recent sanitize operation was not
+  an Overwrite.
+
+``NVME_SANITIZE_SSTAT_COMPLETED_PASSES_MASK``
+  Mask to get the number of completed
+  passes.
+
+``NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_SHIFT``
+  Shift amount to get the Global
+  Data Erased value from the
+  :c:type:`struct nvme_sanitize_log_page <nvme_sanitize_log_page>`.sstat field.
+
+``NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_MASK``
+  Mask to get the Global Data Erased
+  value.
+
+``NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED``
+  Global Data Erased: if set, then no
+  namespace user data in the NVM subsystem
+  has been written to and no Persistent
+  Memory Region in the NVM subsystem has
+  been enabled since being manufactured and
+  the NVM subsystem has never been sanitized;
+  or since the most recent successful sanitize
+  operation.
+
+
+
+
+.. c:struct:: nvme_zns_changed_zone_log
+
+   ZNS Changed Zone List log
+
+**Definition**
+
+::
+
+  struct nvme_zns_changed_zone_log {
+    __le16 nrzid;
+    __u8 rsvd2[6];
+    __le64 zid[NVME_ZNS_CHANGED_ZONES_MAX];
+  };
+
+**Members**
+
+``nrzid``
+  Number of Zone Identifiers
+
+``rsvd2``
+  Reserved
+
+``zid``
+  Zone Identifier
+
+
+
+
+
+.. c:enum:: nvme_zns_zt
+
+   Zone Descriptor Data Structure - Zone Type
+
+**Constants**
+
+``NVME_ZONE_TYPE_SEQWRITE_REQ``
+  Sequential Write Required
+
+
+
+
+.. c:enum:: nvme_zns_za
+
+   Zone Descriptor Data Structure
+
+**Constants**
+
+``NVME_ZNS_ZA_ZFC``
+  Zone Finished by Controller
+
+``NVME_ZNS_ZA_FZR``
+  Finish Zone Recommended
+
+``NVME_ZNS_ZA_RZR``
+  Reset Zone Recommended
+
+``NVME_ZNS_ZA_ZRWAV``
+
+``NVME_ZNS_ZA_ZDEV``
+  Zone Descriptor Extension Valid
+
+
+
+
+.. c:enum:: nvme_zns_zs
+
+   Zone Descriptor Data Structure - Zone State
+
+**Constants**
+
+``NVME_ZNS_ZS_EMPTY``
+  Empty state
+
+``NVME_ZNS_ZS_IMPL_OPEN``
+  Implicitly open state
+
+``NVME_ZNS_ZS_EXPL_OPEN``
+  Explicitly open state
+
+``NVME_ZNS_ZS_CLOSED``
+  Closed state
+
+``NVME_ZNS_ZS_READ_ONLY``
+  Read only state
+
+``NVME_ZNS_ZS_FULL``
+  Full state
+
+``NVME_ZNS_ZS_OFFLINE``
+  Offline state
+
+
+
+
+.. c:struct:: nvme_zns_desc
+
+   Zone Descriptor Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_zns_desc {
+    __u8 zt;
+    __u8 zs;
+    __u8 za;
+    __u8 zai;
+    __u8 rsvd4[4];
+    __le64 zcap;
+    __le64 zslba;
+    __le64 wp;
+    __u8 rsvd32[32];
+  };
+
+**Members**
+
+``zt``
+  Zone Type
+
+``zs``
+  Zone State
+
+``za``
+  Zone Attributes
+
+``zai``
+  Zone Attributes Information
+
+``rsvd4``
+  Reserved
+
+``zcap``
+  Zone Capacity
+
+``zslba``
+  Zone Start Logical Block Address
+
+``wp``
+  Write Pointer
+
+``rsvd32``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_zone_report
+
+   Report Zones Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_zone_report {
+    __le64 nr_zones;
+    __u8 rsvd8[56];
+    struct nvme_zns_desc    entries[];
+  };
+
+**Members**
+
+``nr_zones``
+  Number of descriptors in **entries**
+
+``rsvd8``
+  Reserved
+
+``entries``
+  Zoned namespace descriptors
+
+
+
+
+
+.. c:enum:: nvme_fdp_ruh_type
+
+   Reclaim Unit Handle Type
+
+**Constants**
+
+``NVME_FDP_RUHT_INITIALLY_ISOLATED``
+  Initially Isolated
+
+``NVME_FDP_RUHT_PERSISTENTLY_ISOLATED``
+  Persistently Isolated
+
+
+
+
+.. c:struct:: nvme_fdp_ruh_desc
+
+   Reclaim Unit Handle Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_fdp_ruh_desc {
+    __u8 ruht;
+    __u8 rsvd1[3];
+  };
+
+**Members**
+
+``ruht``
+  Reclaim Unit Handle Type
+
+``rsvd1``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_fdp_config_fdpa
+
+   FDP Attributes
+
+**Constants**
+
+``NVME_FDP_CONFIG_FDPA_RGIF_SHIFT``
+  Reclaim Group Identifier Format Shift
+
+``NVME_FDP_CONFIG_FDPA_RGIF_MASK``
+  Reclaim Group Identifier Format Mask
+
+``NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT``
+  FDP Volatile Write Cache Shift
+
+``NVME_FDP_CONFIG_FDPA_FDPVWC_MASK``
+  FDP Volatile Write Cache Mask
+
+``NVME_FDP_CONFIG_FDPA_VALID_SHIFT``
+  FDP Configuration Valid Shift
+
+``NVME_FDP_CONFIG_FDPA_VALID_MASK``
+  FDP Configuration Valid Mask
+
+
+
+
+.. c:struct:: nvme_fdp_config_desc
+
+   FDP Configuration Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_fdp_config_desc {
+    __u16 size;
+    __u8 fdpa;
+    __u8 vss;
+    __u32 nrg;
+    __u16 nruh;
+    __u16 maxpids;
+    __u32 nnss;
+    __u64 runs;
+    __u32 erutl;
+    __u8 rsvd28[36];
+    struct nvme_fdp_ruh_desc ruhs[];
+  };
+
+**Members**
+
+``size``
+  Descriptor size
+
+``fdpa``
+  FDP Attributes (:c:type:`enum nvme_fdp_config_fdpa <nvme_fdp_config_fdpa>`)
+
+``vss``
+  Vendor Specific Size
+
+``nrg``
+  Number of Reclaim Groups
+
+``nruh``
+  Number of Reclaim Unit Handles
+
+``maxpids``
+  Max Placement Identifiers
+
+``nnss``
+  Number of Namespaces Supported
+
+``runs``
+  Reclaim Unit Nominal Size
+
+``erutl``
+  Estimated Reclaim Unit Time Limit
+
+``rsvd28``
+  Reserved
+
+``ruhs``
+  Reclaim Unit Handle descriptors (:c:type:`struct nvme_fdp_ruh_desc <nvme_fdp_ruh_desc>`)
+
+
+
+
+
+.. c:struct:: nvme_fdp_config_log
+
+   FDP Configurations Log Page
+
+**Definition**
+
+::
+
+  struct nvme_fdp_config_log {
+    __u16 n;
+    __u8 version;
+    __u8 rsvd3;
+    __u32 size;
+    __u8 rsvd8[8];
+    struct nvme_fdp_config_desc configs[];
+  };
+
+**Members**
+
+``n``
+  Number of FDP Configurations
+
+``version``
+  Log page version
+
+``rsvd3``
+  Reserved
+
+``size``
+  Log page size in bytes
+
+``rsvd8``
+  Reserved
+
+``configs``
+  FDP Configuration descriptors (:c:type:`struct nvme_fdp_config_desc <nvme_fdp_config_desc>`)
+
+
+
+
+
+.. c:enum:: nvme_fdp_ruha
+
+   Reclaim Unit Handle Attributes
+
+**Constants**
+
+``NVME_FDP_RUHA_HOST_SHIFT``
+  Host Specified Reclaim Unit Handle Shift
+
+``NVME_FDP_RUHA_HOST_MASK``
+  Host Specified Reclaim Unit Handle Mask
+
+``NVME_FDP_RUHA_CTRL_SHIFT``
+  Controller Specified Reclaim Unit Handle Shift
+
+``NVME_FDP_RUHA_CTRL_MASK``
+  Controller Specified Reclaim Unit Handle Mask
+
+
+
+
+.. c:struct:: nvme_fdp_ruhu_desc
+
+   Reclaim Unit Handle Usage Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_fdp_ruhu_desc {
+    __u8 ruha;
+    __u8 rsvd1[7];
+  };
+
+**Members**
+
+``ruha``
+  Reclaim Unit Handle Attributes (:c:type:`enum nvme_fdp_ruha <nvme_fdp_ruha>`)
+
+``rsvd1``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_fdp_ruhu_log
+
+   Reclaim Unit Handle Usage Log Page
+
+**Definition**
+
+::
+
+  struct nvme_fdp_ruhu_log {
+    __u16 nruh;
+    __u8 rsvd2[6];
+    struct nvme_fdp_ruhu_desc ruhus[];
+  };
+
+**Members**
+
+``nruh``
+  Number of Reclaim Unit Handles
+
+``rsvd2``
+  Reserved
+
+``ruhus``
+  Reclaim Unit Handle Usage descriptors
+
+
+
+
+
+.. c:struct:: nvme_fdp_stats_log
+
+   FDP Statistics Log Page
+
+**Definition**
+
+::
+
+  struct nvme_fdp_stats_log {
+    __u8 hbmw[16];
+    __u8 mbmw[16];
+    __u8 mbe[16];
+    __u8 rsvd48[16];
+  };
+
+**Members**
+
+``hbmw``
+  Host Bytes with Metadata Written
+
+``mbmw``
+  Media Bytes with Metadata Written
+
+``mbe``
+  Media Bytes Erased
+
+``rsvd48``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_fdp_event_type
+
+   FDP Event Types
+
+**Constants**
+
+``NVME_FDP_EVENT_RUNFW``
+  Reclaim Unit Not Fully Written
+
+``NVME_FDP_EVENT_RUTLE``
+  Reclaim Unit Time Limit Exceeded
+
+``NVME_FDP_EVENT_RESET``
+  Controller Level Reset Modified Reclaim Unit Handles
+
+``NVME_FDP_EVENT_PID``
+  Invalid Placement Identifier
+
+``NVME_FDP_EVENT_REALLOC``
+  Media Reallocated
+
+``NVME_FDP_EVENT_MODIFY``
+  Implicitly Modified Reclaim Unit Handle
+
+
+
+
+.. c:enum:: nvme_fdp_event_realloc_flags
+
+   Media Reallocated Event Type Specific Flags
+
+**Constants**
+
+``NVME_FDP_EVENT_REALLOC_F_LBAV``
+  LBA Valid
+
+
+
+
+.. c:struct:: nvme_fdp_event_realloc
+
+   Media Reallocated Event Type Specific Information
+
+**Definition**
+
+::
+
+  struct nvme_fdp_event_realloc {
+    __u8 flags;
+    __u8 rsvd1;
+    __u16 nlbam;
+    __u64 lba;
+    __u8 rsvd12[4];
+  };
+
+**Members**
+
+``flags``
+  Event Type Specific flags (:c:type:`enum nvme_fdp_event_realloc_flags <nvme_fdp_event_realloc_flags>`)
+
+``rsvd1``
+  Reserved
+
+``nlbam``
+  Number of LBAs Moved
+
+``lba``
+  Logical Block Address
+
+``rsvd12``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_fdp_event_flags
+
+   FDP Event Flags
+
+**Constants**
+
+``NVME_FDP_EVENT_F_PIV``
+  Placement Identifier Valid
+
+``NVME_FDP_EVENT_F_NSIDV``
+  Namespace Identifier Valid
+
+``NVME_FDP_EVENT_F_LV``
+  Location Valid
+
+
+
+
+.. c:struct:: nvme_fdp_event
+
+   FDP Event
+
+**Definition**
+
+::
+
+  struct nvme_fdp_event {
+    __u8 type;
+    __u8 flags;
+    __u16 pid;
+    struct nvme_timestamp ts;
+    __u32 nsid;
+    __u8 type_specific[16];
+    __u16 rgid;
+    __u8 ruhid;
+    __u8 rsvd35[5];
+    __u8 vs[24];
+  };
+
+**Members**
+
+``type``
+  Event Type (:c:type:`enum nvme_fdp_event_type <nvme_fdp_event_type>`)
+
+``flags``
+  Event Flags (:c:type:`enum nvme_fdp_event_flags <nvme_fdp_event_flags>`)
+
+``pid``
+  Placement Identifier
+
+``ts``
+  Timestamp
+
+``nsid``
+  Namespace Identifier
+
+``type_specific``
+  Event Type Specific Information
+
+``rgid``
+  Reclaim Group Identifier
+
+``ruhid``
+  Reclaim Unit Handle Identifier
+
+``rsvd35``
+  Reserved
+
+``vs``
+  Vendor Specific
+
+
+
+
+
+.. c:struct:: nvme_fdp_events_log
+
+   FDP Events Log Page
+
+**Definition**
+
+::
+
+  struct nvme_fdp_events_log {
+    __u32 n;
+    __u8 rsvd4[60];
+    struct nvme_fdp_event events[63];
+  };
+
+**Members**
+
+``n``
+  Number of FDP Events
+
+``rsvd4``
+  Reserved
+
+``events``
+  FDP Events (:c:type:`struct nvme_fdp_event <nvme_fdp_event>`)
+
+
+
+
+
+.. c:struct:: nvme_feat_fdp_events_cdw11
+
+   FDP Events Feature Command Dword 11
+
+**Definition**
+
+::
+
+  struct nvme_feat_fdp_events_cdw11 {
+    __u16 phndl;
+    __u8 noet;
+    __u8 rsvd24;
+  };
+
+**Members**
+
+``phndl``
+  Placement Handle
+
+``noet``
+  Number of FDP Event Types
+
+``rsvd24``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_fdp_supported_event_attributes
+
+   Supported FDP Event Attributes
+
+**Constants**
+
+``NVME_FDP_SUPP_EVENT_ENABLED_SHIFT``
+  FDP Event Enable Shift
+
+``NVME_FDP_SUPP_EVENT_ENABLED_MASK``
+  FDP Event Enable Mask
+
+
+
+
+.. c:struct:: nvme_fdp_supported_event_desc
+
+   Supported FDP Event Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_fdp_supported_event_desc {
+    __u8 evt;
+    __u8 evta;
+  };
+
+**Members**
+
+``evt``
+  FDP Event Type
+
+``evta``
+  FDP Event Type Attributes (:c:type:`enum nvme_fdp_supported_event_attributes <nvme_fdp_supported_event_attributes>`)
+
+
+
+
+
+.. c:struct:: nvme_fdp_ruh_status_desc
+
+   Reclaim Unit Handle Status Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_fdp_ruh_status_desc {
+    __u16 pid;
+    __u16 ruhid;
+    __u32 earutr;
+    __u64 ruamw;
+    __u8 rsvd16[16];
+  };
+
+**Members**
+
+``pid``
+  Placement Identifier
+
+``ruhid``
+  Reclaim Unit Handle Identifier
+
+``earutr``
+  Estimated Active Reclaim Unit Time Remaining
+
+``ruamw``
+  Reclaim Unit Available Media Writes
+
+``rsvd16``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_fdp_ruh_status
+
+   Reclaim Unit Handle Status
+
+**Definition**
+
+::
+
+  struct nvme_fdp_ruh_status {
+    __u8 rsvd0[14];
+    __u16 nruhsd;
+    struct nvme_fdp_ruh_status_desc ruhss[];
+  };
+
+**Members**
+
+``rsvd0``
+  Reserved
+
+``nruhsd``
+  Number of Reclaim Unit Handle Status Descriptors
+
+``ruhss``
+  Reclaim Unit Handle Status descriptors
+
+
+
+
+
+.. c:struct:: nvme_lba_status_desc
+
+   LBA Status Descriptor Entry
+
+**Definition**
+
+::
+
+  struct nvme_lba_status_desc {
+    __le64 dslba;
+    __le32 nlb;
+    __u8 rsvd12;
+    __u8 status;
+    __u8 rsvd14[2];
+  };
+
+**Members**
+
+``dslba``
+  Descriptor Starting LBA
+
+``nlb``
+  Number of Logical Blocks
+
+``rsvd12``
+  Reserved
+
+``status``
+  Additional status about this LBA range
+
+``rsvd14``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_lba_status
+
+   LBA Status Descriptor List
+
+**Definition**
+
+::
+
+  struct nvme_lba_status {
+    __le32 nlsd;
+    __u8 cmpc;
+    __u8 rsvd5[3];
+    struct nvme_lba_status_desc descs[];
+  };
+
+**Members**
+
+``nlsd``
+  Number of LBA Status Descriptors
+
+``cmpc``
+  Completion Condition
+
+``rsvd5``
+  Reserved
+
+``descs``
+  LBA status descriptor Entry
+
+
+
+
+
+.. c:struct:: nvme_feat_auto_pst
+
+   Autonomous Power State Transition
+
+**Definition**
+
+::
+
+  struct nvme_feat_auto_pst {
+    __le64 apst_entry[32];
+  };
+
+**Members**
+
+``apst_entry``
+  See :c:type:`enum nvme_apst_entry <nvme_apst_entry>`
+
+
+
+
+
+.. c:enum:: nvme_apst_entry
+
+   Autonomous Power State Transition
+
+**Constants**
+
+``NVME_APST_ENTRY_ITPS_SHIFT``
+  Idle Transition Power State Shift
+
+``NVME_APST_ENTRY_ITPT_SHIFT``
+  Idle Time Prior to Transition Shift
+
+``NVME_APST_ENTRY_ITPS_MASK``
+  Idle Transition Power State Mask
+
+``NVME_APST_ENTRY_ITPT_MASK``
+  Idle Time Prior to Transition Mask
+
+
+
+
+.. c:struct:: nvme_metadata_element_desc
+
+   Metadata Element Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_metadata_element_desc {
+    __u8 type;
+    __u8 rev;
+    __u16 len;
+    __u8 val[0];
+  };
+
+**Members**
+
+``type``
+  Element Type (ET)
+
+``rev``
+  Element Revision (ER)
+
+``len``
+  Element Length (ELEN)
+
+``val``
+  Element Value (EVAL), UTF-8 string
+
+
+
+
+
+.. c:struct:: nvme_host_metadata
+
+   Host Metadata Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_host_metadata {
+    __u8 ndesc;
+    __u8 rsvd1;
+    union {
+      struct nvme_metadata_element_desc descs[0];
+      __u8 descs_buf[4094];
+    };
+  };
+
+**Members**
+
+``ndesc``
+  Number of metadata element descriptors
+
+``rsvd1``
+  Reserved
+
+``{unnamed_union}``
+  anonymous
+
+``descs``
+  Metadata element descriptors
+
+``descs_buf``
+  Metadata element descriptor buffer
+
+
+
+
+
+.. c:enum:: nvme_ctrl_metadata_type
+
+   Controller Metadata Element Types
+
+**Constants**
+
+``NVME_CTRL_METADATA_OS_CTRL_NAME``
+  Name of the controller in
+  the operating system.
+
+``NVME_CTRL_METADATA_OS_DRIVER_NAME``
+  Name of the driver in the
+  operating system.
+
+``NVME_CTRL_METADATA_OS_DRIVER_VER``
+  Version of the driver in
+  the operating system.
+
+``NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME``
+  Name of the controller in
+  the pre-boot environment.
+
+``NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME``
+  Name of the driver in the
+  pre-boot environment.
+
+``NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER``
+  Version of the driver in the
+  pre-boot environment.
+
+``NVME_CTRL_METADATA_SYS_PROC_MODEL``
+  Model of the processor.
+
+``NVME_CTRL_METADATA_CHIPSET_DRV_NAME``
+  Chipset driver name.
+
+``NVME_CTRL_METADATA_CHIPSET_DRV_VERSION``
+  Chipset driver version.
+
+``NVME_CTRL_METADATA_OS_NAME_AND_BUILD``
+  Operating system name and build.
+
+``NVME_CTRL_METADATA_SYS_PROD_NAME``
+  System product name.
+
+``NVME_CTRL_METADATA_FIRMWARE_VERSION``
+  Host firmware (e.g UEFI) version.
+
+``NVME_CTRL_METADATA_OS_DRIVER_FILENAME``
+  Operating system driver filename.
+
+``NVME_CTRL_METADATA_DISPLAY_DRV_NAME``
+  Display driver name.
+
+``NVME_CTRL_METADATA_DISPLAY_DRV_VERSION``
+  Display driver version.
+
+``NVME_CTRL_METADATA_HOST_DET_FAIL_REC``
+  Failure record.
+
+
+
+
+.. c:enum:: nvme_ns_metadata_type
+
+   Namespace Metadata Element Types
+
+**Constants**
+
+``NVME_NS_METADATA_OS_NS_NAME``
+  Name of the namespace in the
+  operating system
+
+``NVME_NS_METADATA_PRE_BOOT_NS_NAME``
+  Name of the namespace in the pre-boot
+  environment.
+
+``NVME_NS_METADATA_OS_NS_QUAL_1``
+  First qualifier of the Operating System
+  Namespace Name.
+
+``NVME_NS_METADATA_OS_NS_QUAL_2``
+  Second qualifier of the Operating System
+  Namespace Name.
+
+
+
+
+.. c:struct:: nvme_lba_range_type_entry
+
+   LBA Range Type - Data Structure Entry
+
+**Definition**
+
+::
+
+  struct nvme_lba_range_type_entry {
+    __u8 type;
+    __u8 attributes;
+    __u8 rsvd2[14];
+    __u64 slba;
+    __u64 nlb;
+    __u8 guid[16];
+    __u8 rsvd48[16];
+  };
+
+**Members**
+
+``type``
+  Specifies the Type of the LBA range
+
+``attributes``
+  Specifies attributes of the LBA range
+
+``rsvd2``
+  Reserved
+
+``slba``
+  Starting LBA
+
+``nlb``
+  Number of Logical Blocks
+
+``guid``
+  Unique Identifier
+
+``rsvd48``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_lbart
+
+   LBA Range Type - Data Structure Entry
+
+**Constants**
+
+``NVME_LBART_TYPE_GP``
+  General Purpose
+
+``NVME_LBART_TYPE_FS``
+  Filesystem
+
+``NVME_LBART_TYPE_RAID``
+  RAID
+
+``NVME_LBART_TYPE_CACHE``
+  Cache
+
+``NVME_LBART_TYPE_SWAP``
+  Page / swap file
+
+``NVME_LBART_ATTRIB_TEMP``
+  Temp
+
+``NVME_LBART_ATTRIB_HIDE``
+  Hidden
+
+
+
+
+.. c:struct:: nvme_lba_range_type
+
+   LBA Range Type
+
+**Definition**
+
+::
+
+  struct nvme_lba_range_type {
+    struct nvme_lba_range_type_entry entry[NVME_FEAT_LBA_RANGE_MAX];
+  };
+
+**Members**
+
+``entry``
+  LBA range type entry. See **struct** nvme_lba_range_type_entry
+
+
+
+
+
+.. c:struct:: nvme_plm_config
+
+   Predictable Latency Mode - Deterministic Threshold Configuration Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_plm_config {
+    __le16 ee;
+    __u8 rsvd2[30];
+    __le64 dtwinrt;
+    __le64 dtwinwt;
+    __le64 dtwintt;
+    __u8 rsvd56[456];
+  };
+
+**Members**
+
+``ee``
+  Enable Event
+
+``rsvd2``
+  Reserved
+
+``dtwinrt``
+  DTWIN Reads Threshold
+
+``dtwinwt``
+  DTWIN Writes Threshold
+
+``dtwintt``
+  DTWIN Time Threshold
+
+``rsvd56``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_feat_host_behavior
+
+   Host Behavior Support - Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_feat_host_behavior {
+    __u8 acre;
+    __u8 rsvd1[511];
+  };
+
+**Members**
+
+``acre``
+  Advanced Command Retry Enable
+
+``rsvd1``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_host_behavior_support
+
+   Enable Advanced Command
+
+**Constants**
+
+``NVME_ENABLE_ACRE``
+  Enable Advanced Command Retry Enable
+
+
+
+
+.. c:struct:: nvme_dsm_range
+
+   Dataset Management - Range Definition
+
+**Definition**
+
+::
+
+  struct nvme_dsm_range {
+    __le32 cattr;
+    __le32 nlb;
+    __le64 slba;
+  };
+
+**Members**
+
+``cattr``
+  Context Attributes
+
+``nlb``
+  Length in logical blocks
+
+``slba``
+  Starting LBA
+
+
+
+
+
+.. c:struct:: nvme_copy_range
+
+   Copy - Source Range Entries Descriptor Format
+
+**Definition**
+
+::
+
+  struct nvme_copy_range {
+    __u8 rsvd0[8];
+    __le64 slba;
+    __le16 nlb;
+    __u8 rsvd18[6];
+    __le32 eilbrt;
+    __le16 elbatm;
+    __le16 elbat;
+  };
+
+**Members**
+
+``rsvd0``
+  Reserved
+
+``slba``
+  Starting LBA
+
+``nlb``
+  Number of Logical Blocks
+
+``rsvd18``
+  Reserved
+
+``eilbrt``
+  Expected Initial Logical Block Reference Tag /
+  Expected Logical Block Storage Tag
+
+``elbatm``
+  Expected Logical Block Application Tag Mask
+
+``elbat``
+  Expected Logical Block Application Tag
+
+
+
+
+
+.. c:struct:: nvme_copy_range_f1
+
+   Copy - Source Range Entries Descriptor Format 1h
+
+**Definition**
+
+::
+
+  struct nvme_copy_range_f1 {
+    __u8 rsvd0[8];
+    __le64 slba;
+    __le16 nlb;
+    __u8 rsvd18[8];
+    __u8 elbt[10];
+    __le16 elbatm;
+    __le16 elbat;
+  };
+
+**Members**
+
+``rsvd0``
+  Reserved
+
+``slba``
+  Starting LBA
+
+``nlb``
+  Number of Logical Blocks
+
+``rsvd18``
+  Reserved
+
+``elbt``
+  Expected Initial Logical Block Reference Tag /
+  Expected Logical Block Storage Tag
+
+``elbatm``
+  Expected Logical Block Application Tag Mask
+
+``elbat``
+  Expected Logical Block Application Tag
+
+
+
+
+
+.. c:struct:: nvme_registered_ctrl
+
+   Registered Controller Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_registered_ctrl {
+    __le16 cntlid;
+    __u8 rcsts;
+    __u8 rsvd3[5];
+    __le64 hostid;
+    __le64 rkey;
+  };
+
+**Members**
+
+``cntlid``
+  Controller ID
+
+``rcsts``
+  Reservation Status
+
+``rsvd3``
+  Reserved
+
+``hostid``
+  Host Identifier
+
+``rkey``
+  Reservation Key
+
+
+
+
+
+.. c:struct:: nvme_registered_ctrl_ext
+
+   Registered Controller Extended Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_registered_ctrl_ext {
+    __le16 cntlid;
+    __u8 rcsts;
+    __u8 rsvd3[5];
+    __le64 rkey;
+    __u8 hostid[16];
+    __u8 rsvd32[32];
+  };
+
+**Members**
+
+``cntlid``
+  Controller ID
+
+``rcsts``
+  Reservation Status
+
+``rsvd3``
+  Reserved
+
+``rkey``
+  Reservation Key
+
+``hostid``
+  Host Identifier
+
+``rsvd32``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_resv_status
+
+   Reservation Status Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_resv_status {
+    __le32 gen;
+    __u8 rtype;
+    __u8 regctl[2];
+    __u8 rsvd7[2];
+    __u8 ptpls;
+    __u8 rsvd10[14];
+    union {
+      struct {
+        __u8 rsvd24[40];
+        struct nvme_registered_ctrl_ext regctl_eds[0];
+      };
+      struct nvme_registered_ctrl regctl_ds[0];
+    };
+  };
+
+**Members**
+
+``gen``
+  Generation
+
+``rtype``
+  Reservation Type
+
+``regctl``
+  Number of Registered Controllers
+
+``rsvd7``
+  Reserved
+
+``ptpls``
+  Persist Through Power Loss State
+
+``rsvd10``
+  Reserved
+
+``{unnamed_union}``
+  anonymous
+
+``{unnamed_struct}``
+  anonymous
+
+``rsvd24``
+  Reserved
+
+``regctl_eds``
+  Registered Controller Extended Data Structure
+
+``regctl_ds``
+  Registered Controller Data Structure
+
+
+
+
+
+.. c:struct:: nvme_streams_directive_params
+
+   Streams Directive - Return Parameters Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_streams_directive_params {
+    __le16 msl;
+    __le16 nssa;
+    __le16 nsso;
+    __u8 nssc;
+    __u8 rsvd[9];
+    __le32 sws;
+    __le16 sgs;
+    __le16 nsa;
+    __le16 nso;
+    __u8 rsvd2[6];
+  };
+
+**Members**
+
+``msl``
+  Max Streams Limit
+
+``nssa``
+  NVM Subsystem Streams Available
+
+``nsso``
+  NVM Subsystem Streams Open
+
+``nssc``
+  NVM Subsystem Stream Capability
+
+``rsvd``
+  Reserved
+
+``sws``
+  Stream Write Size
+
+``sgs``
+  Stream Granularity Size
+
+``nsa``
+  Namespace Streams Allocated
+
+``nso``
+  Namespace Streams Open
+
+``rsvd2``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_streams_directive_status
+
+   Streams Directive - Get Status Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_streams_directive_status {
+    __le16 osc;
+    __le16 sid[];
+  };
+
+**Members**
+
+``osc``
+  Open Stream Count
+
+``sid``
+  Stream Identifier
+
+
+
+
+
+.. c:struct:: nvme_id_directives
+
+   Identify Directive - Return Parameters Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_id_directives {
+    __u8 supported[32];
+    __u8 enabled[32];
+    __u8 rsvd64[4032];
+  };
+
+**Members**
+
+``supported``
+  Identify directive is supported
+
+``enabled``
+  Identify directive is Enabled
+
+``rsvd64``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_directive_types
+
+   Directives Supported or Enabled
+
+**Constants**
+
+``NVME_ID_DIR_ID_BIT``
+  Identify directive is supported
+
+``NVME_ID_DIR_SD_BIT``
+  Streams directive is supported
+
+
+
+
+.. c:struct:: nvme_host_mem_buf_attrs
+
+   Host Memory Buffer - Attributes Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_host_mem_buf_attrs {
+    __le32 hsize;
+    __le32 hmdlal;
+    __le32 hmdlau;
+    __le32 hmdlec;
+    __u8 rsvd16[4080];
+  };
+
+**Members**
+
+``hsize``
+  Host Memory Buffer Size
+
+``hmdlal``
+  Host Memory Descriptor List Lower Address
+
+``hmdlau``
+  Host Memory Descriptor List Upper Address
+
+``hmdlec``
+  Host Memory Descriptor List Entry Count
+
+``rsvd16``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_ae_type
+
+   Asynchronous Event Type
+
+**Constants**
+
+``NVME_AER_ERROR``
+  Error event
+
+``NVME_AER_SMART``
+  SMART / Health Status event
+
+``NVME_AER_NOTICE``
+  Notice event
+
+``NVME_AER_CSS``
+  NVM Command Set Specific events
+
+``NVME_AER_VS``
+  Vendor Specific event
+
+
+
+
+.. c:enum:: nvme_ae_info_error
+
+   Asynchronous Event Information - Error Status
+
+**Constants**
+
+``NVME_AER_ERROR_INVALID_DB_REG``
+  Write to Invalid Doorbell Register
+
+``NVME_AER_ERROR_INVALID_DB_VAL``
+  Invalid Doorbell Write Value
+
+``NVME_AER_ERROR_DIAG_FAILURE``
+  Diagnostic Failure
+
+``NVME_AER_ERROR_PERSISTENT_INTERNAL_ERROR``
+  Persistent Internal Error
+
+``NVME_AER_ERROR_TRANSIENT_INTERNAL_ERROR``
+  Transient Internal Error
+
+``NVME_AER_ERROR_FW_IMAGE_LOAD_ERROR``
+  Firmware Image Load Error
+
+
+
+
+.. c:enum:: nvme_ae_info_smart
+
+   Asynchronous Event Information - SMART / Health Status
+
+**Constants**
+
+``NVME_AER_SMART_SUBSYSTEM_RELIABILITY``
+  NVM subsystem Reliability
+
+``NVME_AER_SMART_TEMPERATURE_THRESHOLD``
+  Temperature Threshold
+
+``NVME_AER_SMART_SPARE_THRESHOLD``
+  Spare Below Threshold
+
+
+
+
+.. c:enum:: nvme_ae_info_css_nvm
+
+   Asynchronous Event Information - I/O Command Specific Status
+
+**Constants**
+
+``NVME_AER_CSS_NVM_RESERVATION``
+  Reservation Log Page Available
+
+``NVME_AER_CSS_NVM_SANITIZE_COMPLETED``
+  Sanitize Operation Completed
+
+``NVME_AER_CSS_NVM_UNEXPECTED_SANITIZE_DEALLOC``
+  Sanitize Operation Completed
+  With Unexpected Deallocation
+
+
+
+
+.. c:enum:: nvme_ae_info_notice
+
+   Asynchronous Event Information - Notice
+
+**Constants**
+
+``NVME_AER_NOTICE_NS_CHANGED``
+  Namespace Attribute Changed
+
+``NVME_AER_NOTICE_FW_ACT_STARTING``
+  Firmware Activation Starting
+
+``NVME_AER_NOTICE_TELEMETRY``
+  Telemetry Log Changed
+
+``NVME_AER_NOTICE_ANA``
+  Asymmetric Namespace Access Change
+
+``NVME_AER_NOTICE_PL_EVENT``
+  Predictable Latency Event Aggregate Log Change
+
+``NVME_AER_NOTICE_LBA_STATUS_ALERT``
+  LBA Status Information Alert
+
+``NVME_AER_NOTICE_EG_EVENT``
+  Endurance Group Event Aggregate Log Page Change
+
+``NVME_AER_NOTICE_DISC_CHANGED``
+  Discovery Log Page Change
+
+
+
+
+.. c:enum:: nvme_subsys_type
+
+   Type of the NVM subsystem.
+
+**Constants**
+
+``NVME_NQN_DISC``
+  Discovery type target subsystem. Describes a referral to another
+  Discovery Service composed of Discovery controllers that provide
+  additional discovery records. Multiple Referral entries may
+  be reported for each Discovery Service (if that Discovery Service
+  has multiple NVM subsystem ports or supports multiple protocols).
+
+``NVME_NQN_NVME``
+  NVME type target subsystem. Describes an NVM subsystem whose
+  controllers may have attached namespaces (an NVM subsystem
+  that is not composed of Discovery controllers). Multiple NVM
+  Subsystem entries may be reported for each NVM subsystem if
+  that NVM subsystem has multiple NVM subsystem ports.
+
+``NVME_NQN_CURR``
+  Current Discovery type target subsystem. Describes this Discovery
+  subsystem (the Discovery Service that contains the controller
+  processing the Get Log Page command). Multiple Current Discovery
+  Subsystem entries may be reported for this Discovery subsystem
+  if the current Discovery subsystem has multiple NVM subsystem
+  ports.
+
+
+
+
+.. c:enum:: nvmf_disc_eflags
+
+   Discovery Log Page entry flags.
+
+**Constants**
+
+``NVMF_DISC_EFLAGS_NONE``
+  Indicates that none of the DUPRETINFO or EPCSD
+  features are supported.
+
+``NVMF_DISC_EFLAGS_DUPRETINFO``
+  Duplicate Returned Information (DUPRETINFO):
+  Indicates that using the content of this entry
+  to access this Discovery Service returns the same
+  information that is returned by using the content
+  of other entries in this log page that also have
+  this flag set.
+
+``NVMF_DISC_EFLAGS_EPCSD``
+  Explicit Persistent Connection Support for Discovery (EPCSD):
+  Indicates that Explicit Persistent Connections are
+  supported for the Discovery controller.
+
+``NVMF_DISC_EFLAGS_NCC``
+  No CDC Connectivity (NCC): If set to
+  '1', then no DDC that describes this entry
+  is currently connected to the CDC. If
+  cleared to '0', then at least one DDC that
+  describes this entry is currently
+  connected to the CDC. If the Discovery
+  controller returning this log page is not
+  a CDC, then this bit shall be cleared to
+  '0' and should be ignored by the host.
+
+
+
+
+.. c:union:: nvmf_tsas
+
+   Transport Specific Address Subtype
+
+**Definition**
+
+::
+
+  union nvmf_tsas {
+    char common[NVMF_TSAS_SIZE];
+    struct rdma {
+      __u8 qptype;
+      __u8 prtype;
+      __u8 cms;
+      __u8 rsvd3[5];
+      __u16 pkey;
+      __u8 rsvd10[246];
+    } rdma;
+    struct tcp {
+      __u8 sectype;
+    } tcp;
+  };
+
+**Members**
+
+``common``
+  Common transport specific attributes
+
+``rdma``
+  RDMA transport specific attribute settings
+
+``tcp``
+  TCP transport specific attribute settings
+
+
+
+
+
+.. c:struct:: nvmf_disc_log_entry
+
+   Discovery Log Page entry
+
+**Definition**
+
+::
+
+  struct nvmf_disc_log_entry {
+    __u8 trtype;
+    __u8 adrfam;
+    __u8 subtype;
+    __u8 treq;
+    __le16 portid;
+    __le16 cntlid;
+    __le16 asqsz;
+    __le16 eflags;
+    __u8 rsvd12[20];
+    char trsvcid[NVMF_TRSVCID_SIZE];
+    __u8 rsvd64[192];
+    char subnqn[NVME_NQN_LENGTH];
+    char traddr[NVMF_TRADDR_SIZE];
+    union nvmf_tsas tsas;
+  };
+
+**Members**
+
+``trtype``
+  Transport Type (TRTYPE): Specifies the NVMe Transport type.
+  See :c:type:`enum nvmf_trtype <nvmf_trtype>`.
+
+``adrfam``
+  Address Family (ADRFAM): Specifies the address family.
+  See :c:type:`enum nvmf_addr_family <nvmf_addr_family>`.
+
+``subtype``
+  Subsystem Type (SUBTYPE): Specifies the type of the NVM subsystem
+  that is indicated in this entry. See :c:type:`enum nvme_subsys_type <nvme_subsys_type>`.
+
+``treq``
+  Transport Requirements (TREQ): Indicates requirements for the NVMe
+  Transport. See :c:type:`enum nvmf_treq <nvmf_treq>`.
+
+``portid``
+  Port ID (PORTID): Specifies a particular NVM subsystem port.
+  Different NVMe Transports or address families may utilize the same
+  Port ID value (e.g. a Port ID may support both iWARP and RoCE).
+
+``cntlid``
+  Controller ID (CNTLID): Specifies the controller ID. If the NVM
+  subsystem uses a dynamic controller model, then this field shall
+  be set to FFFFh. If the NVM subsystem uses a static controller model,
+  then this field may be set to a specific controller ID (values 0h
+  to FFEFh are valid). If the NVM subsystem uses a static controller
+  model and the value indicated is FFFEh, then the host should remember
+  the Controller ID returned as part of the Fabrics Connect command
+  in order to re-establish an association in the future with the same
+  controller.
+
+``asqsz``
+  Admin Max SQ Size (ASQSZ): Specifies the maximum size of an Admin
+  Submission Queue. This applies to all controllers in the NVM
+  subsystem. The value shall be a minimum of 32 entries.
+
+``eflags``
+  Entry Flags (EFLAGS): Indicates additional information related to
+  the current entry. See :c:type:`enum nvmf_disc_eflags <nvmf_disc_eflags>`.
+
+``rsvd12``
+  Reserved
+
+``trsvcid``
+  Transport Service Identifier (TRSVCID): Specifies the NVMe Transport
+  service identifier as an ASCII string. The NVMe Transport service
+  identifier is specified by the associated NVMe Transport binding
+  specification.
+
+``rsvd64``
+  Reserved
+
+``subnqn``
+  NVM Subsystem Qualified Name (SUBNQN): NVMe Qualified Name (NQN)
+  that uniquely identifies the NVM subsystem. For a subsystem, if that
+  Discovery subsystem has a unique NQN (i.e., the NVM Subsystem NVMe
+  Qualified Name (SUBNQN) field in that Discovery subsystem's Identify
+  Controller data structure contains a unique NQN value), then the
+  value returned shall be that unique NQN. If the Discovery subsystem
+  does not have a unique NQN, then the value returned shall be the
+  well-known Discovery Service NQN (nqn.2014-08.org.nvmexpress.discovery).
+
+``traddr``
+  Transport Address (TRADDR): Specifies the address of the NVM subsystem
+  that may be used for a Connect command as an ASCII string. The
+  Address Family field describes the reference for parsing this field.
+
+``tsas``
+  Transport specific attribute settings
+
+
+
+
+
+.. c:enum:: nvmf_trtype
+
+   Transport Type codes for Discovery Log Page entry TRTYPE field
+
+**Constants**
+
+``NVMF_TRTYPE_UNSPECIFIED``
+  Not indicated
+
+``NVMF_TRTYPE_RDMA``
+  RDMA
+
+``NVMF_TRTYPE_FC``
+  Fibre Channel
+
+``NVMF_TRTYPE_TCP``
+  TCP
+
+``NVMF_TRTYPE_LOOP``
+  Intra-host Transport (i.e., loopback), reserved
+  for host usage.
+
+``NVMF_TRTYPE_MAX``
+  Maximum value for :c:type:`enum nvmf_trtype <nvmf_trtype>`
+
+
+
+
+.. c:enum:: nvmf_addr_family
+
+   Address Family codes for Discovery Log Page entry ADRFAM field
+
+**Constants**
+
+``NVMF_ADDR_FAMILY_PCI``
+  PCIe
+
+``NVMF_ADDR_FAMILY_IP4``
+  AF_INET: IPv4 address family.
+
+``NVMF_ADDR_FAMILY_IP6``
+  AF_INET6: IPv6 address family.
+
+``NVMF_ADDR_FAMILY_IB``
+  AF_IB: InfiniBand address family.
+
+``NVMF_ADDR_FAMILY_FC``
+  Fibre Channel address family.
+
+``NVMF_ADDR_FAMILY_LOOP``
+  Intra-host Transport (i.e., loopback), reserved
+  for host usage.
+
+
+
+
+.. c:enum:: nvmf_treq
+
+   Transport Requirements codes for Discovery Log Page entry TREQ field
+
+**Constants**
+
+``NVMF_TREQ_NOT_SPECIFIED``
+  Not specified
+
+``NVMF_TREQ_REQUIRED``
+  Required
+
+``NVMF_TREQ_NOT_REQUIRED``
+  Not Required
+
+``NVMF_TREQ_DISABLE_SQFLOW``
+  SQ flow control disable supported
+
+
+
+
+.. c:enum:: nvmf_rdma_qptype
+
+   RDMA QP Service Type codes for Discovery Log Page entry TSAS RDMA_QPTYPE field
+
+**Constants**
+
+``NVMF_RDMA_QPTYPE_CONNECTED``
+  Reliable Connected
+
+``NVMF_RDMA_QPTYPE_DATAGRAM``
+  Reliable Datagram
+
+
+
+
+.. c:enum:: nvmf_rdma_prtype
+
+   RDMA Provider Type codes for Discovery Log Page entry TSAS RDMA_PRTYPE field
+
+**Constants**
+
+``NVMF_RDMA_PRTYPE_NOT_SPECIFIED``
+  No Provider Specified
+
+``NVMF_RDMA_PRTYPE_IB``
+  InfiniBand
+
+``NVMF_RDMA_PRTYPE_ROCE``
+  InfiniBand RoCE
+
+``NVMF_RDMA_PRTYPE_ROCEV2``
+  InfiniBand RoCEV2
+
+``NVMF_RDMA_PRTYPE_IWARP``
+  iWARP
+
+
+
+
+.. c:enum:: nvmf_rdma_cms
+
+   RDMA Connection Management Service Type codes for Discovery Log Page entry TSAS RDMA_CMS field
+
+**Constants**
+
+``NVMF_RDMA_CMS_RDMA_CM``
+  Sockets based endpoint addressing
+
+
+
+
+.. c:enum:: nvmf_tcp_sectype
+
+   Transport Specific Address Subtype Definition for NVMe/TCP Transport
+
+**Constants**
+
+``NVMF_TCP_SECTYPE_NONE``
+  No Security
+
+``NVMF_TCP_SECTYPE_TLS``
+  Transport Layer Security version 1.2
+
+``NVMF_TCP_SECTYPE_TLS13``
+  Transport Layer Security version 1.3 or a subsequent
+  version. The TLS protocol negotiates the version and
+  cipher suite for each TCP connection.
+
+
+
+
+.. c:enum:: nvmf_log_discovery_lid_support
+
+   Discovery log specific support
+
+**Constants**
+
+``NVMF_LOG_DISC_LID_NONE``
+  None
+
+``NVMF_LOG_DISC_LID_EXTDLPES``
+  Extended Discovery Log Page Entries Supported
+
+``NVMF_LOG_DISC_LID_PLEOS``
+  Port Local Entries Only Supported
+
+``NVMF_LOG_DISC_LID_ALLSUBES``
+  All NVM Subsystem Entries Supported
+
+
+
+
+.. c:enum:: nvmf_log_discovery_lsp
+
+   Discovery log specific field
+
+**Constants**
+
+``NVMF_LOG_DISC_LSP_NONE``
+  None
+
+``NVMF_LOG_DISC_LSP_EXTDLPE``
+  Extended Discovery Log Page Entries
+
+``NVMF_LOG_DISC_LSP_PLEO``
+  Port Local Entries Only
+
+``NVMF_LOG_DISC_LSP_ALLSUBE``
+  All NVM Subsystem Entries
+
+
+
+
+.. c:struct:: nvmf_discovery_log
+
+   Discovery Log Page (Log Identifier 70h)
+
+**Definition**
+
+::
+
+  struct nvmf_discovery_log {
+    __le64 genctr;
+    __le64 numrec;
+    __le16 recfmt;
+    __u8 rsvd14[1006];
+    struct nvmf_disc_log_entry entries[];
+  };
+
+**Members**
+
+``genctr``
+  Generation Counter (GENCTR): Indicates the version of the discovery
+  information, starting at a value of 0h. For each change in the
+  Discovery Log Page, this counter is incremented by one. If the value
+  of this field is FFFFFFFF_FFFFFFFFh, then the field shall be cleared
+  to 0h when incremented (i.e., rolls over to 0h).
+
+``numrec``
+  Number of Records (NUMREC): Indicates the number of records
+  contained in the log.
+
+``recfmt``
+  Record Format (RECFMT): Specifies the format of the Discovery Log
+  Page. If a new format is defined, this value is incremented by one.
+  The format of the record specified in this definition shall be 0h.
+
+``rsvd14``
+  Reserved
+
+``entries``
+  Discovery Log Page Entries - see :c:type:`struct nvmf_disc_log_entry <nvmf_disc_log_entry>`.
+
+
+
+
+
+.. c:enum:: nvmf_dim_tas
+
+   Discovery Information Management Task
+
+**Constants**
+
+``NVMF_DIM_TAS_REGISTER``
+  Register
+
+``NVMF_DIM_TAS_DEREGISTER``
+  Deregister
+
+``NVMF_DIM_TAS_UPDATE``
+  Update
+
+
+
+
+.. c:enum:: nvmf_dim_entfmt
+
+   Discovery Information Management Entry Format
+
+**Constants**
+
+``NVMF_DIM_ENTFMT_BASIC``
+  Basic discovery information entry
+
+``NVMF_DIM_ENTFMT_EXTENDED``
+  Extended discovery information entry
+
+
+
+
+.. c:enum:: nvmf_dim_etype
+
+   Discovery Information Management Entity Type
+
+**Constants**
+
+``NVMF_DIM_ETYPE_HOST``
+  Host
+
+``NVMF_DIM_ETYPE_DDC``
+  Direct Discovery controller
+
+``NVMF_DIM_ETYPE_CDC``
+  Centralized Discovery controller
+
+
+
+
+.. c:enum:: nvmf_exattype
+
+   Extended Attribute Type
+
+**Constants**
+
+``NVMF_EXATTYPE_HOSTID``
+  Host Identifier
+
+``NVMF_EXATTYPE_SYMNAME``
+  Symblic Name
+
+
+
+
+.. c:struct:: nvmf_ext_attr
+
+   Extended Attribute (EXAT)
+
+**Definition**
+
+::
+
+  struct nvmf_ext_attr {
+    __le16 exattype;
+    __le16 exatlen;
+    __u8 exatval[];
+  };
+
+**Members**
+
+``exattype``
+  Extended Attribute Type (EXATTYPE) - see **enum** nvmf_exattype
+
+``exatlen``
+  Extended Attribute Length (EXATLEN)
+
+``exatval``
+  Extended Attribute Value (EXATVAL) - size allocated for array
+  must be a multiple of 4 bytes
+
+
+
+
+
+.. c:struct:: nvmf_ext_die
+
+   Extended Discovery Information Entry (DIE)
+
+**Definition**
+
+::
+
+  struct nvmf_ext_die {
+    __u8 trtype;
+    __u8 adrfam;
+    __u8 subtype;
+    __u8 treq;
+    __le16 portid;
+    __le16 cntlid;
+    __le16 asqsz;
+    __u8 rsvd10[22];
+    char trsvcid[NVMF_TRSVCID_SIZE];
+    __u8 resv64[192];
+    char nqn[NVME_NQN_LENGTH];
+    char traddr[NVMF_TRADDR_SIZE];
+    union nvmf_tsas         tsas;
+    __le32 tel;
+    __le16 numexat;
+    __u8 resv1030[2];
+    struct nvmf_ext_attr    exat[];
+  };
+
+**Members**
+
+``trtype``
+  Transport Type (:c:type:`enum nvmf_trtype <nvmf_trtype>`)
+
+``adrfam``
+  Address Family (:c:type:`enum nvmf_addr_family <nvmf_addr_family>`)
+
+``subtype``
+  Subsystem Type (:c:type:`enum nvme_subsys_type <nvme_subsys_type>`)
+
+``treq``
+  Transport Requirements (:c:type:`enum nvmf_treq <nvmf_treq>`)
+
+``portid``
+  Port ID
+
+``cntlid``
+  Controller ID
+
+``asqsz``
+  Admin Max SQ Size
+
+``rsvd10``
+  Reserved
+
+``trsvcid``
+  Transport Service Identifier
+
+``resv64``
+  Reserved
+
+``nqn``
+  NVM Qualified Name
+
+``traddr``
+  Transport Address
+
+``tsas``
+  Transport Specific Address Subtype (:c:type:`union nvmf_tsas <nvmf_tsas>`)
+
+``tel``
+  Total Entry Length
+
+``numexat``
+  Number of Extended Attributes
+
+``resv1030``
+  Reserved
+
+``exat``
+  Extended Attributes 0 (:c:type:`struct nvmf_ext_attr <nvmf_ext_attr>`)
+
+
+
+
+
+.. c:union:: nvmf_die
+
+   Discovery Information Entry (DIE)
+
+**Definition**
+
+::
+
+  union nvmf_die {
+    struct nvmf_disc_log_entry      basic[0];
+    struct nvmf_ext_die             extended;
+  };
+
+**Members**
+
+``basic``
+  Basic format (:c:type:`struct nvmf_disc_log_entry <nvmf_disc_log_entry>`)
+
+``extended``
+  Extended format (:c:type:`struct nvmf_ext_die <nvmf_ext_die>`)
+
+
+**Description**
+
+Depending on the ENTFMT specified in the DIM, DIEs can be entered
+with the Basic or Extended formats. For Basic format, each entry
+has a fixed length. Therefore, the "basic" field defined below can
+be accessed as a C array. For the Extended format, however, each
+entry is of variable length (TEL). Therefore, the "extended" field
+defined below cannot be accessed as a C array. Instead, the
+"extended" field is akin to a linked-list, where one can "walk"
+through the list. To move to the next entry, one simply adds the
+current entry's length (TEL) to the "walk" pointer. The number of
+entries in the list is specified by NUMENT.  Although extended
+entries are of a variable lengths (TEL), TEL is always a multiple of
+4 bytes.
+
+
+
+
+.. c:struct:: nvmf_dim_data
+
+   Discovery Information Management (DIM) - Data
+
+**Definition**
+
+::
+
+  struct nvmf_dim_data {
+    __le32 tdl;
+    __u8 rsvd4[4];
+    __le64 nument;
+    __le16 entfmt;
+    __le16 etype;
+    __u8 portlcl;
+    __u8 rsvd21;
+    __le16 ektype;
+    char eid[NVME_NQN_LENGTH];
+    char ename[NVMF_ENAME_LEN];
+    char ever[NVMF_EVER_LEN];
+    __u8 rsvd600[424];
+    union nvmf_die  die[];
+  };
+
+**Members**
+
+``tdl``
+  Total Data Length
+
+``rsvd4``
+  Reserved
+
+``nument``
+  Number of entries
+
+``entfmt``
+  Entry Format (:c:type:`enum nvmf_dim_entfmt <nvmf_dim_entfmt>`)
+
+``etype``
+  Entity Type (:c:type:`enum nvmf_dim_etype <nvmf_dim_etype>`)
+
+``portlcl``
+  Port Local
+
+``rsvd21``
+  Reserved
+
+``ektype``
+  Entry Key Type
+
+``eid``
+  Entity Identifier (e.g. Host NQN)
+
+``ename``
+  Entity Name (e.g. hostname)
+
+``ever``
+  Entity Version (e.g. OS Name/Version)
+
+``rsvd600``
+  Reserved
+
+``die``
+  Discovery Information Entry (see **nument** above)
+
+
+
+
+
+.. c:struct:: nvmf_connect_data
+
+   Data payload for the 'connect' command
+
+**Definition**
+
+::
+
+  struct nvmf_connect_data {
+    __u8 hostid[16];
+    __le16 cntlid;
+    char rsvd4[238];
+    char subsysnqn[NVME_NQN_LENGTH];
+    char hostnqn[NVME_NQN_LENGTH];
+    char rsvd5[256];
+  };
+
+**Members**
+
+``hostid``
+  Host ID of the connecting host
+
+``cntlid``
+  Requested controller ID
+
+``rsvd4``
+  Reserved
+
+``subsysnqn``
+  Subsystem NQN to connect to
+
+``hostnqn``
+  Host NQN of the connecting host
+
+``rsvd5``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_read_nvm_ss_info
+
+   NVM Subsystem Information Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_mi_read_nvm_ss_info {
+    __u8 nump;
+    __u8 mjr;
+    __u8 mnr;
+    __u8 rsvd3[29];
+  };
+
+**Members**
+
+``nump``
+  Number of Ports
+
+``mjr``
+  NVMe-MI Major Version Number
+
+``mnr``
+  NVMe-MI Minor Version Number
+
+``rsvd3``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_port_pcie
+
+   PCIe Port Specific Data
+
+**Definition**
+
+::
+
+  struct nvme_mi_port_pcie {
+    __u8 mps;
+    __u8 sls;
+    __u8 cls;
+    __u8 mlw;
+    __u8 nlw;
+    __u8 pn;
+    __u8 rsvd14[18];
+  };
+
+**Members**
+
+``mps``
+  PCIe Maximum Payload Size
+
+``sls``
+  PCIe Supported Link Speeds Vector
+
+``cls``
+  PCIe Current Link Speed
+
+``mlw``
+  PCIe Maximum Link Width
+
+``nlw``
+  PCIe Negotiated Link Width
+
+``pn``
+  PCIe Port Number
+
+``rsvd14``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_port_smb
+
+   SMBus Port Specific Data
+
+**Definition**
+
+::
+
+  struct nvme_mi_port_smb {
+    __u8 vpd_addr;
+    __u8 mvpd_freq;
+    __u8 mme_addr;
+    __u8 mme_freq;
+    __u8 nvmebm;
+    __u8 rsvd13[19];
+  };
+
+**Members**
+
+``vpd_addr``
+  Current VPD SMBus/I2C Address
+
+``mvpd_freq``
+  Maximum VPD Access SMBus/I2C Frequency
+
+``mme_addr``
+  Current Management Endpoint SMBus/I2C Address
+
+``mme_freq``
+  Maximum Management Endpoint SMBus/I2C Frequency
+
+``nvmebm``
+  NVMe Basic Management
+
+``rsvd13``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_read_port_info
+
+   Port Information Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_mi_read_port_info {
+    __u8 portt;
+    __u8 rsvd1;
+    __le16 mmctptus;
+    __le32 meb;
+    union {
+      struct nvme_mi_port_pcie pcie;
+      struct nvme_mi_port_smb smb;
+    };
+  };
+
+**Members**
+
+``portt``
+  Port Type
+
+``rsvd1``
+  Reserved
+
+``mmctptus``
+  Maximum MCTP Transmission Unit Size
+
+``meb``
+  Management Endpoint Buffer Size
+
+``{unnamed_union}``
+  anonymous
+
+``pcie``
+  PCIe Port Specific Data
+
+``smb``
+  SMBus Port Specific Data
+
+
+
+
+
+.. c:struct:: nvme_mi_read_ctrl_info
+
+   Controller Information Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_mi_read_ctrl_info {
+    __u8 portid;
+    __u8 rsvd1[4];
+    __u8 prii;
+    __le16 pri;
+    __le16 vid;
+    __le16 did;
+    __le16 ssvid;
+    __le16 ssid;
+    __u8 rsvd16[16];
+  };
+
+**Members**
+
+``portid``
+  Port Identifier
+
+``rsvd1``
+  Reserved
+
+``prii``
+  PCIe Routing ID Information
+
+``pri``
+  PCIe Routing ID
+
+``vid``
+  PCI Vendor ID
+
+``did``
+  PCI Device ID
+
+``ssvid``
+  PCI Subsystem Vendor ID
+
+``ssid``
+  PCI Subsystem Device ID
+
+``rsvd16``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_osc
+
+   Optionally Supported Command Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_mi_osc {
+    __u8 type;
+    __u8 opc;
+  };
+
+**Members**
+
+``type``
+  Command Type
+
+``opc``
+  Opcode
+
+
+
+
+
+.. c:struct:: nvme_mi_read_sc_list
+
+   Management Endpoint Buffer Supported Command List Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_mi_read_sc_list {
+    __le16 numcmd;
+    struct nvme_mi_osc cmds[];
+  };
+
+**Members**
+
+``numcmd``
+  Number of Commands
+
+``cmds``
+  MEB supported Command Data Structure.
+  See **struct** nvme_mi_osc
+
+
+
+
+
+.. c:struct:: nvme_mi_nvm_ss_health_status
+
+   Subsystem Management Data Structure
+
+**Definition**
+
+::
+
+  struct nvme_mi_nvm_ss_health_status {
+    __u8 nss;
+    __u8 sw;
+    __u8 ctemp;
+    __u8 pdlu;
+    __le16 ccs;
+    __u8 rsvd8[2];
+  };
+
+**Members**
+
+``nss``
+  NVM Subsystem Status
+
+``sw``
+  Smart Warnings
+
+``ctemp``
+  Composite Temperature
+
+``pdlu``
+  Percentage Drive Life Used
+
+``ccs``
+  Composite Controller Status
+
+``rsvd8``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_mi_ccs
+
+   Get State Control Primitive Success Response Fields - Control Primitive Specific Response
+
+**Constants**
+
+``NVME_MI_CCS_RDY``
+  Ready
+
+``NVME_MI_CCS_CFS``
+  Controller Fatal Status
+
+``NVME_MI_CCS_SHST``
+  Shutdown Status
+
+``NVME_MI_CCS_NSSRO``
+  NVM Subsystem Reset Occurred
+
+``NVME_MI_CCS_CECO``
+  Controller Enable Change Occurred
+
+``NVME_MI_CCS_NAC``
+  Namespace Attribute Changed
+
+``NVME_MI_CCS_FA``
+  Firmware Activated
+
+``NVME_MI_CCS_CSTS``
+  Controller Status Change
+
+``NVME_MI_CCS_CTEMP``
+  Composite Temperature Change
+
+``NVME_MI_CCS_PDLU``
+  Percentage Used
+
+``NVME_MI_CCS_SPARE``
+  Available Spare
+
+``NVME_MI_CCS_CCWARN``
+  Critical Warning
+
+
+
+
+.. c:struct:: nvme_mi_ctrl_health_status
+
+   Controller Health Data Structure (CHDS)
+
+**Definition**
+
+::
+
+  struct nvme_mi_ctrl_health_status {
+    __le16 ctlid;
+    __le16 csts;
+    __le16 ctemp;
+    __u8 pdlu;
+    __u8 spare;
+    __u8 cwarn;
+    __u8 rsvd9[7];
+  };
+
+**Members**
+
+``ctlid``
+  Controller Identifier
+
+``csts``
+  Controller Status
+
+``ctemp``
+  Composite Temperature
+
+``pdlu``
+  Percentage Used
+
+``spare``
+  Available Spare
+
+``cwarn``
+  Critical Warning
+
+``rsvd9``
+  Reserved
+
+
+
+
+
+.. c:enum:: nvme_mi_csts
+
+   Controller Health Data Structure (CHDS) - Controller Status (CSTS)
+
+**Constants**
+
+``NVME_MI_CSTS_RDY``
+  Ready
+
+``NVME_MI_CSTS_CFS``
+  Controller Fatal Status
+
+``NVME_MI_CSTS_SHST``
+  Shutdown Status
+
+``NVME_MI_CSTS_NSSRO``
+  NVM Subsystem Reset Occurred
+
+``NVME_MI_CSTS_CECO``
+  Controller Enable Change Occurred
+
+``NVME_MI_CSTS_NAC``
+  Namespace Attribute Changed
+
+``NVME_MI_CSTS_FA``
+  Firmware Activated
+
+
+
+
+.. c:enum:: nvme_mi_cwarn
+
+   Controller Health Data Structure (CHDS) - Critical Warning (CWARN)
+
+**Constants**
+
+``NVME_MI_CWARN_ST``
+  Spare Threshold
+
+``NVME_MI_CWARN_TAUT``
+  Temperature Above or Under Threshold
+
+``NVME_MI_CWARN_RD``
+  Reliability Degraded
+
+``NVME_MI_CWARN_RO``
+  Read Only
+
+``NVME_MI_CWARN_VMBF``
+  Volatile Memory Backup Failed
+
+
+
+
+.. c:struct:: nvme_mi_vpd_mra
+
+   NVMe MultiRecord Area
+
+**Definition**
+
+::
+
+  struct nvme_mi_vpd_mra {
+    __u8 nmravn;
+    __u8 ff;
+    __u8 rsvd7[6];
+    __u8 i18vpwr;
+    __u8 m18vpwr;
+    __u8 i33vpwr;
+    __u8 m33vpwr;
+    __u8 rsvd17;
+    __u8 m33vapsr;
+    __u8 i5vapsr;
+    __u8 m5vapsr;
+    __u8 i12vapsr;
+    __u8 m12vapsr;
+    __u8 mtl;
+    __u8 tnvmcap[16];
+    __u8 rsvd37[27];
+  };
+
+**Members**
+
+``nmravn``
+  NVMe MultiRecord Area Version Number
+
+``ff``
+  Form Factor
+
+``rsvd7``
+  Reserved
+
+``i18vpwr``
+  Initial 1.8 V Power Supply Requirements
+
+``m18vpwr``
+  Maximum 1.8 V Power Supply Requirements
+
+``i33vpwr``
+  Initial 3.3 V Power Supply Requirements
+
+``m33vpwr``
+  Maximum 3.3 V Power Supply Requirements
+
+``rsvd17``
+  Reserved
+
+``m33vapsr``
+  Maximum 3.3 Vi aux Power Supply Requirements
+
+``i5vapsr``
+  Initial 5 V Power Supply Requirements
+
+``m5vapsr``
+  Maximum 5 V Power Supply Requirements
+
+``i12vapsr``
+  Initial 12 V Power Supply Requirements
+
+``m12vapsr``
+  Maximum 12 V Power Supply Requirements
+
+``mtl``
+  Maximum Thermal Load
+
+``tnvmcap``
+  Total NVM Capacity
+
+``rsvd37``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_vpd_ppmra
+
+   NVMe PCIe Port MultiRecord Area
+
+**Definition**
+
+::
+
+  struct nvme_mi_vpd_ppmra {
+    __u8 nppmravn;
+    __u8 pn;
+    __u8 ppi;
+    __u8 ls;
+    __u8 mlw;
+    __u8 mctp;
+    __u8 refccap;
+    __u8 pi;
+    __u8 rsvd13[3];
+  };
+
+**Members**
+
+``nppmravn``
+  NVMe PCIe Port MultiRecord Area Version Number
+
+``pn``
+  PCIe Port Number
+
+``ppi``
+  Port Information
+
+``ls``
+  PCIe Link Speed
+
+``mlw``
+  PCIe Maximum Link Width
+
+``mctp``
+  MCTP Support
+
+``refccap``
+  Ref Clk Capability
+
+``pi``
+  Port Identifier
+
+``rsvd13``
+  Reserved
+
+
+
+
+
+.. c:struct:: nvme_mi_vpd_telem
+
+   Vital Product Data Element Descriptor
+
+**Definition**
+
+::
+
+  struct nvme_mi_vpd_telem {
+    __u8 type;
+    __u8 rev;
+    __u8 len;
+    __u8 data[0];
+  };
+
+**Members**
+
+``type``
+  Type of the Element Descriptor
+
+``rev``
+  Revision of the Element Descriptor
+
+``len``
+  Number of bytes in the Element Descriptor
+
+``data``
+  Type-specific information associated with
+  the Element Descriptor
+
+
+
+
+
+.. c:enum:: nvme_mi_elem
+
+   Element Descriptor Types
+
+**Constants**
+
+``NVME_MI_ELEM_EED``
+  Extended Element Descriptor
+
+``NVME_MI_ELEM_USCE``
+  Upstream Connector Element Descriptor
+
+``NVME_MI_ELEM_ECED``
+  Expansion Connector Element Descriptor
+
+``NVME_MI_ELEM_LED``
+  Label Element Descriptor
+
+``NVME_MI_ELEM_SMBMED``
+  SMBus/I2C Mux Element Descriptor
+
+``NVME_MI_ELEM_PCIESED``
+  PCIe Switch Element Descriptor
+
+``NVME_MI_ELEM_NVMED``
+  NVM Subsystem Element Descriptor
+
+
+
+
+.. c:struct:: nvme_mi_vpd_tra
+
+   Vital Product Data Topology MultiRecord
+
+**Definition**
+
+::
+
+  struct nvme_mi_vpd_tra {
+    __u8 vn;
+    __u8 rsvd6;
+    __u8 ec;
+    struct nvme_mi_vpd_telem elems[0];
+  };
+
+**Members**
+
+``vn``
+  Version Number
+
+``rsvd6``
+  Reserved
+
+``ec``
+  Element Count
+
+``elems``
+  Element Descriptor
+
+
+
+
+
+.. c:struct:: nvme_mi_vpd_mr_common
+
+   NVMe MultiRecord Area
+
+**Definition**
+
+::
+
+  struct nvme_mi_vpd_mr_common {
+    __u8 type;
+    __u8 rf;
+    __u8 rlen;
+    __u8 rchksum;
+    __u8 hchksum;
+    union {
+      struct nvme_mi_vpd_mra nmra;
+      struct nvme_mi_vpd_ppmra ppmra;
+      struct nvme_mi_vpd_tra tmra;
+    };
+  };
+
+**Members**
+
+``type``
+  NVMe Record Type ID
+
+``rf``
+  Record Format
+
+``rlen``
+  Record Length
+
+``rchksum``
+  Record Checksum
+
+``hchksum``
+  Header Checksum
+
+``{unnamed_union}``
+  anonymous
+
+``nmra``
+  NVMe MultiRecord Area
+
+``ppmra``
+  NVMe PCIe Port MultiRecord Area
+
+``tmra``
+  Topology MultiRecord Area
+
+
+
+
+
+.. c:struct:: nvme_mi_vpd_hdr
+
+   Vital Product Data Common Header
+
+**Definition**
+
+::
+
+  struct nvme_mi_vpd_hdr {
+    __u8 ipmiver;
+    __u8 iuaoff;
+    __u8 ciaoff;
+    __u8 biaoff;
+    __u8 piaoff;
+    __u8 mrioff;
+    __u8 rsvd6;
+    __u8 chchk;
+    __u8 vpd[];
+  };
+
+**Members**
+
+``ipmiver``
+  IPMI Format Version Number
+
+``iuaoff``
+  Internal Use Area Starting Offset
+
+``ciaoff``
+  Chassis Info Area Starting Offset
+
+``biaoff``
+  Board Info Area Starting Offset
+
+``piaoff``
+  Product Info Area Starting Offset
+
+``mrioff``
+  MultiRecord Info Area Starting Offset
+
+``rsvd6``
+  Reserved
+
+``chchk``
+  Common Header Checksum
+
+``vpd``
+  Vital Product Data
+
+
+
+
+
+.. c:enum:: nvme_status_field
+
+   Defines all parts of the nvme status field: status code, status code type, and additional flags.
+
+**Constants**
+
+``NVME_SCT_GENERIC``
+  Generic errors applicable to multiple opcodes
+
+``NVME_SCT_CMD_SPECIFIC``
+  Errors associated to a specific opcode
+
+``NVME_SCT_MEDIA``
+  Errors associated with media and data integrity
+
+``NVME_SCT_PATH``
+  Errors associated with the paths connection
+
+``NVME_SCT_VS``
+  Vendor specific errors
+
+``NVME_SCT_MASK``
+  Mask to get the value of the Status Code Type
+
+``NVME_SCT_SHIFT``
+  Shift value to get the value of the Status
+  Code Type
+
+``NVME_SC_MASK``
+  Mask to get the value of the status code.
+
+``NVME_SC_SHIFT``
+  Shift value to get the value of the status
+  code.
+
+``NVME_SC_SUCCESS``
+  Successful Completion: The command
+  completed without error.
+
+``NVME_SC_INVALID_OPCODE``
+  Invalid Command Opcode: A reserved coded
+  value or an unsupported value in the
+  command opcode field.
+
+``NVME_SC_INVALID_FIELD``
+  Invalid Field in Command: A reserved
+  coded value or an unsupported value in a
+  defined field.
+
+``NVME_SC_CMDID_CONFLICT``
+  Command ID Conflict: The command
+  identifier is already in use.
+
+``NVME_SC_DATA_XFER_ERROR``
+  Data Transfer Error: Transferring the
+  data or metadata associated with a
+  command experienced an error.
+
+``NVME_SC_POWER_LOSS``
+  Commands Aborted due to Power Loss
+  Notification: Indicates that the command
+  was aborted due to a power loss
+  notification.
+
+``NVME_SC_INTERNAL``
+  Internal Error: The command was not
+  completed successfully due to an internal error.
+
+``NVME_SC_ABORT_REQ``
+  Command Abort Requested: The command was
+  aborted due to an Abort command being
+  received that specified the Submission
+  Queue Identifier and Command Identifier
+  of this command.
+
+``NVME_SC_ABORT_QUEUE``
+  Command Aborted due to SQ Deletion: The
+  command was aborted due to a Delete I/O
+  Submission Queue request received for the
+  Submission Queue to which the command was
+  submitted.
+
+``NVME_SC_FUSED_FAIL``
+  Command Aborted due to Failed Fused Command:
+  The command was aborted due to the other
+  command in a fused operation failing.
+
+``NVME_SC_FUSED_MISSING``
+  Aborted due to Missing Fused Command: The
+  fused command was aborted due to the
+  adjacent submission queue entry not
+  containing a fused command that is the
+  other command.
+
+``NVME_SC_INVALID_NS``
+  Invalid Namespace or Format: The
+  namespace or the format of that namespace
+  is invalid.
+
+``NVME_SC_CMD_SEQ_ERROR``
+  Command Sequence Error: The command was
+  aborted due to a protocol violation in a
+  multi-command sequence.
+
+``NVME_SC_SGL_INVALID_LAST``
+  Invalid SGL Segment Descriptor: The
+  command includes an invalid SGL Last
+  Segment or SGL Segment descriptor.
+
+``NVME_SC_SGL_INVALID_COUNT``
+  Invalid Number of SGL Descriptors: There
+  is an SGL Last Segment descriptor or an
+  SGL Segment descriptor in a location
+  other than the last descriptor of a
+  segment based on the length indicated.
+
+``NVME_SC_SGL_INVALID_DATA``
+  Data SGL Length Invalid: This may occur
+  if the length of a Data SGL is too short.
+  This may occur if the length of a Data
+  SGL is too long and the controller does
+  not support SGL transfers longer than the
+  amount of data to be transferred as
+  indicated in the SGL Support field of the
+  Identify Controller data structure.
+
+``NVME_SC_SGL_INVALID_METADATA``
+  Metadata SGL Length Invalid: This may
+  occur if the length of a Metadata SGL is
+  too short. This may occur if the length
+  of a Metadata SGL is too long and the
+  controller does not support SGL transfers
+  longer than the amount of data to be
+  transferred as indicated in the SGL
+  Support field of the Identify Controller
+  data structure.
+
+``NVME_SC_SGL_INVALID_TYPE``
+  SGL Descriptor Type Invalid: The type of
+  an SGL Descriptor is a type that is not
+  supported by the controller.
+
+``NVME_SC_CMB_INVALID_USE``
+  Invalid Use of Controller Memory Buffer:
+  The attempted use of the Controller
+  Memory Buffer is not supported by the
+  controller.
+
+``NVME_SC_PRP_INVALID_OFFSET``
+  PRP Offset Invalid: The Offset field for
+  a PRP entry is invalid.
+
+``NVME_SC_AWU_EXCEEDED``
+  Atomic Write Unit Exceeded: The length
+  specified exceeds the atomic write unit size.
+
+``NVME_SC_OP_DENIED``
+  Operation Denied: The command was denied
+  due to lack of access rights. Refer to
+  the appropriate security specification.
+
+``NVME_SC_SGL_INVALID_OFFSET``
+  SGL Offset Invalid: The offset specified
+  in a descriptor is invalid. This may
+  occur when using capsules for data
+  transfers in NVMe over Fabrics
+  implementations and an invalid offset in
+  the capsule is specified.
+
+``NVME_SC_HOSTID_FORMAT``
+  Host Identifier Inconsistent Format: The
+  NVM subsystem detected the simultaneous
+  use of 64- bit and 128-bit Host
+  Identifier values on different
+  controllers.
+
+``NVME_SC_KAT_EXPIRED``
+  Keep Alive Timer Expired: The Keep Alive
+  Timer expired.
+
+``NVME_SC_KAT_INVALID``
+  Keep Alive Timeout Invalid: The Keep
+  Alive Timeout value specified is invalid.
+
+``NVME_SC_CMD_ABORTED_PREMEPT``
+  Command Aborted due to Preempt and Abort:
+  The command was aborted due to a
+  Reservation Acquire command.
+
+``NVME_SC_SANITIZE_FAILED``
+  Sanitize Failed: The most recent sanitize
+  operation failed and no recovery action
+  has been successfully completed.
+
+``NVME_SC_SANITIZE_IN_PROGRESS``
+  Sanitize In Progress: The requested
+  function (e.g., command) is prohibited
+  while a sanitize operation is in
+  progress.
+
+``NVME_SC_SGL_INVALID_GRANULARITY``
+  SGL Data Block Granularity Invalid: The
+  Address alignment or Length granularity
+  for an SGL Data Block descriptor is
+  invalid.
+
+``NVME_SC_CMD_IN_CMBQ_NOT_SUPP``
+  Command Not Supported for Queue in CMB:
+  The implementation does not support
+  submission of the command to a Submission
+  Queue in the Controller Memory Buffer or
+  command completion to a Completion Queue
+  in the Controller Memory Buffer.
+
+``NVME_SC_NS_WRITE_PROTECTED``
+  Namespace is Write Protected: The command
+  is prohibited while the namespace is
+  write protected as a result of a change
+  in the namespace write protection state
+  as defined by the Namespace Write
+  Protection State Machine.
+
+``NVME_SC_CMD_INTERRUPTED``
+  Command Interrupted: Command processing
+  was interrupted and the controller is
+  unable to successfully complete the
+  command. The host should retry the
+  command.
+
+``NVME_SC_TRAN_TPORT_ERROR``
+  Transient Transport Error: A transient
+  transport error was detected. If the
+  command is retried on the same
+  controller, the command is likely to
+  succeed. A command that fails with a
+  transient transport error four or more
+  times should be treated as a persistent
+  transport error that is not likely to
+  succeed if retried on the same
+  controller.
+
+``NVME_SC_PROHIBITED_BY_CMD_AND_FEAT``
+  Command Prohibited by Command and Feature
+  Lockdown: The command was aborted due to
+  command execution being prohibited by
+  the Command and Feature Lockdown.
+
+``NVME_SC_ADMIN_CMD_MEDIA_NOT_READY``
+  Admin Command Media Not Ready: The Admin
+  command requires access to media and
+  the media is not ready.
+
+``NVME_SC_LBA_RANGE``
+  LBA Out of Range: The command references
+  an LBA that exceeds the size of the namespace.
+
+``NVME_SC_CAP_EXCEEDED``
+  Capacity Exceeded: Execution of the
+  command has caused the capacity of the
+  namespace to be exceeded.
+
+``NVME_SC_NS_NOT_READY``
+  Namespace Not Ready: The namespace is not
+  ready to be accessed as a result of a
+  condition other than a condition that is
+  reported as an Asymmetric Namespace
+  Access condition.
+
+``NVME_SC_RESERVATION_CONFLICT``
+  Reservation Conflict: The command was
+  aborted due to a conflict with a
+  reservation held on the accessed
+  namespace.
+
+``NVME_SC_FORMAT_IN_PROGRESS``
+  Format In Progress: A Format NVM command
+  is in progress on the namespace.
+
+``NVME_SC_CQ_INVALID``
+  Completion Queue Invalid: The Completion
+  Queue identifier specified in the command
+  does not exist.
+
+``NVME_SC_QID_INVALID``
+  Invalid Queue Identifier: The creation of
+  the I/O Completion Queue failed due to an
+  invalid queue identifier specified as
+  part of the command. An invalid queue
+  identifier is one that is currently in
+  use or one that is outside the range
+  supported by the controller.
+
+``NVME_SC_QUEUE_SIZE``
+  Invalid Queue Size: The host attempted to
+  create an I/O Completion Queue with an
+  invalid number of entries.
+
+``NVME_SC_ABORT_LIMIT``
+  Abort Command Limit Exceeded: The number
+  of concurrently outstanding Abort commands
+  has exceeded the limit indicated in the
+  Identify Controller data structure.
+
+``NVME_SC_ABORT_MISSING``
+  Abort Command is missing: The abort
+  command is missing.
+
+``NVME_SC_ASYNC_LIMIT``
+  Asynchronous Event Request Limit
+  Exceeded: The number of concurrently
+  outstanding Asynchronous Event Request
+  commands has been exceeded.
+
+``NVME_SC_FIRMWARE_SLOT``
+  Invalid Firmware Slot: The firmware slot
+  indicated is invalid or read only. This
+  error is indicated if the firmware slot
+  exceeds the number supported.
+
+``NVME_SC_FIRMWARE_IMAGE``
+  Invalid Firmware Image: The firmware
+  image specified for activation is invalid
+  and not loaded by the controller.
+
+``NVME_SC_INVALID_VECTOR``
+  Invalid Interrupt Vector: The creation of
+  the I/O Completion Queue failed due to an
+  invalid interrupt vector specified as
+  part of the command.
+
+``NVME_SC_INVALID_LOG_PAGE``
+  Invalid Log Page: The log page indicated
+  is invalid. This error condition is also
+  returned if a reserved log page is
+  requested.
+
+``NVME_SC_INVALID_FORMAT``
+  Invalid Format: The LBA Format specified
+  is not supported.
+
+``NVME_SC_FW_NEEDS_CONV_RESET``
+  Firmware Activation Requires Conventional Reset:
+  The firmware commit was successful,
+  however, activation of the firmware image
+  requires a conventional reset.
+
+``NVME_SC_INVALID_QUEUE``
+  Invalid Queue Deletion: Invalid I/O
+  Completion Queue specified to delete.
+
+``NVME_SC_FEATURE_NOT_SAVEABLE``
+  Feature Identifier Not Saveable: The
+  Feature Identifier specified does not
+  support a saveable value.
+
+``NVME_SC_FEATURE_NOT_CHANGEABLE``
+  Feature Not Changeable: The Feature
+  Identifier is not able to be changed.
+
+``NVME_SC_FEATURE_NOT_PER_NS``
+  Feature Not Namespace Specific: The
+  Feature Identifier specified is not
+  namespace specific. The Feature
+  Identifier settings apply across all
+  namespaces.
+
+``NVME_SC_FW_NEEDS_SUBSYS_RESET``
+  Firmware Activation Requires NVM
+  Subsystem Reset: The firmware commit was
+  successful, however, activation of the
+  firmware image requires an NVM Subsystem.
+
+``NVME_SC_FW_NEEDS_RESET``
+  Firmware Activation Requires Controller
+  Level Reset: The firmware commit was
+  successful; however, the image specified
+  does not support being activated without
+  a reset.
+
+``NVME_SC_FW_NEEDS_MAX_TIME``
+  Firmware Activation Requires Maximum Time
+  Violation: The image specified if
+  activated immediately would exceed the
+  Maximum Time for Firmware Activation
+  (MTFA) value reported in Identify
+  Controller.
+
+``NVME_SC_FW_ACTIVATE_PROHIBITED``
+  Firmware Activation Prohibited: The image
+  specified is being prohibited from
+  activation by the controller for vendor
+  specific reasons.
+
+``NVME_SC_OVERLAPPING_RANGE``
+  Overlapping Range: The downloaded
+  firmware image has overlapping ranges.
+
+``NVME_SC_NS_INSUFFICIENT_CAP``
+  Namespace Insufficient Capacity: Creating
+  the namespace requires more free space
+  than is currently available.
+
+``NVME_SC_NS_ID_UNAVAILABLE``
+  Namespace Identifier Unavailable: The
+  number of namespaces supported has been
+  exceeded.
+
+``NVME_SC_NS_ALREADY_ATTACHED``
+  Namespace Already Attached: The
+  controller is already attached to the
+  namespace specified.
+
+``NVME_SC_NS_IS_PRIVATE``
+  Namespace Is Private: The namespace is
+  private and is already attached to one
+  controller.
+
+``NVME_SC_NS_NOT_ATTACHED``
+  Namespace Not Attached: The request to
+  detach the controller could not be
+  completed because the controller is not
+  attached to the namespace.
+
+``NVME_SC_THIN_PROV_NOT_SUPP``
+  Thin Provisioning Not Supported: Thin
+  provisioning is not supported by the
+  controller.
+
+``NVME_SC_CTRL_LIST_INVALID``
+  Controller List Invalid: The controller
+  list provided contains invalid controller
+  ids.
+
+``NVME_SC_SELF_TEST_IN_PROGRESS``
+  Device Self-test In Progress: The controller
+  or NVM subsystem already has a device
+  self-test operation in process.
+
+``NVME_SC_BP_WRITE_PROHIBITED``
+  Boot Partition Write Prohibited: The
+  command is trying to modify a locked Boot
+  Partition.
+
+``NVME_SC_INVALID_CTRL_ID``
+  Invalid Controller Identifier:
+
+``NVME_SC_INVALID_SEC_CTRL_STATE``
+  Invalid Secondary Controller State
+
+``NVME_SC_INVALID_CTRL_RESOURCES``
+  Invalid Number of Controller Resources
+
+``NVME_SC_INVALID_RESOURCE_ID``
+  Invalid Resource Identifier
+
+``NVME_SC_PMR_SAN_PROHIBITED``
+  Sanitize Prohibited While Persistent
+  Memory Region is Enabled
+
+``NVME_SC_ANA_GROUP_ID_INVALID``
+  ANA Group Identifier Invalid: The specified
+  ANA Group Identifier (ANAGRPID) is not
+  supported in the submitted command.
+
+``NVME_SC_ANA_ATTACH_FAILED``
+  ANA Attach Failed: The controller is not
+  attached to the namespace as a result
+  of an ANA condition.
+
+``NVME_SC_INSUFFICIENT_CAP``
+  Insufficient Capacity: Requested operation
+  requires more free space than is currently
+  available.
+
+``NVME_SC_NS_ATTACHMENT_LIMIT_EXCEEDED``
+  Namespace Attachment Limit Exceeded:
+  Attaching the ns to a controller causes
+  max number of ns attachments allowed
+  to be exceeded.
+
+``NVME_SC_PROHIBIT_CMD_EXEC_NOT_SUPPORTED``
+  Prohibition of Command Execution
+  Not Supported
+
+``NVME_SC_IOCS_NOT_SUPPORTED``
+  I/O Command Set Not Supported
+
+``NVME_SC_IOCS_NOT_ENABLED``
+  I/O Command Set Not Enabled
+
+``NVME_SC_IOCS_COMBINATION_REJECTED``
+  I/O Command Set Combination Rejected
+
+``NVME_SC_INVALID_IOCS``
+  Invalid I/O Command Set
+
+``NVME_SC_ID_UNAVAILABLE``
+  Identifier Unavailable
+
+``NVME_SC_INVALID_DISCOVERY_INFO``
+  The discovery information provided in
+  one or more extended discovery
+  information entries is not applicable
+  for the type of entity selected in
+  the Entity Type (ETYPE) field of the
+  Discovery Information Management
+  command data portion’s header.
+
+``NVME_SC_ZONING_DATA_STRUCT_LOCKED``
+  The requested Zoning data structure
+  is locked on the CDC.
+
+``NVME_SC_ZONING_DATA_STRUCT_NOTFND``
+  The requested Zoning data structure
+  does not exist on the CDC.
+
+``NVME_SC_INSUFFICIENT_DISC_RES``
+  The number of discover information
+  entries provided in the data portion
+  of the Discovery Information
+  Management command for a registration
+  task (i.e., TAS field cleared to 0h)
+  exceeds the available capacity for
+  new discovery information entries on
+  the CDC or DDC. This may be a
+  transient condition.
+
+``NVME_SC_REQSTD_FUNCTION_DISABLED``
+  Fabric Zoning is not enabled on the
+  CDC
+
+``NVME_SC_ZONEGRP_ORIGINATOR_INVLD``
+  The NQN contained in the ZoneGroup
+  Originator field does not match the
+  Host NQN used by the DDC to connect
+  to the CDC.
+
+``NVME_SC_BAD_ATTRIBUTES``
+  Conflicting Dataset Management Attributes
+
+``NVME_SC_INVALID_PI``
+  Invalid Protection Information
+
+``NVME_SC_READ_ONLY``
+  Attempted Write to Read Only Range
+
+``NVME_SC_CMD_SIZE_LIMIT_EXCEEDED``
+  Command Size Limit Exceeded
+
+``NVME_SC_CONNECT_FORMAT``
+  Incompatible Format: The NVM subsystem
+  does not support the record format
+  specified by the host.
+
+``NVME_SC_CONNECT_CTRL_BUSY``
+  Controller Busy: The controller is
+  already associated with a host.
+
+``NVME_SC_CONNECT_INVALID_PARAM``
+  Connect Invalid Parameters: One or more
+  of the command parameters.
+
+``NVME_SC_CONNECT_RESTART_DISC``
+  Connect Restart Discovery: The NVM
+  subsystem requested is not available.
+
+``NVME_SC_CONNECT_INVALID_HOST``
+  Connect Invalid Host: The host is either
+  not allowed to establish an association
+  to any controller in the NVM subsystem or
+  the host is not allowed to establish an
+  association to the specified controller
+
+``NVME_SC_DISCONNECT_INVALID_QTYPE``
+  Invalid Queue Type: The command was sent
+  on the wrong queue type.
+
+``NVME_SC_DISCOVERY_RESTART``
+  Discover Restart: The snapshot of the
+  records is now invalid or out of date.
+
+``NVME_SC_AUTH_REQUIRED``
+  Authentication Required: NVMe in-band
+  authentication is required and the queue
+  has not yet been authenticated.
+
+``NVME_SC_ZNS_INVALID_OP_REQUEST``
+  Invalid Zone Operation Request:
+  The operation requested is invalid. This may be due to
+  various conditions, including: attempting to allocate a
+  ZRWA when a zone is not in the ZSE:Empty state; or
+  invalid Flush Explicit ZRWA Range Send Zone Action
+  operation.
+
+``NVME_SC_ZNS_ZRWA_RESOURCES_UNAVAILABLE``
+  ZRWA Resources Unavailable:
+  No ZRWAs are available.
+
+``NVME_SC_ZNS_BOUNDARY_ERROR``
+  Zone Boundary Error: The command specifies
+  logical blocks in more than one zone.
+
+``NVME_SC_ZNS_FULL``
+  Zone Is Full: The accessed zone is in the
+  ZSF:Full state.
+
+``NVME_SC_ZNS_READ_ONLY``
+  Zone Is Read Only: The accessed zone is
+  in the ZSRO:Read Only state.
+
+``NVME_SC_ZNS_OFFLINE``
+  Zone Is Offline: The accessed zone is
+  in the ZSO:Offline state.
+
+``NVME_SC_ZNS_INVALID_WRITE``
+  Zone Invalid Write: The write to a zone
+  was not at the write pointer.
+
+``NVME_SC_ZNS_TOO_MANY_ACTIVE``
+  Too Many Active Zones: The controller
+  does not allow additional active zones.
+
+``NVME_SC_ZNS_TOO_MANY_OPENS``
+  Too Many Open Zones: The controller does
+  not allow additional open zones.
+
+``NVME_SC_ZNS_INVAL_TRANSITION``
+  Invalid Zone State Transition: The request
+  is not a valid zone state transition.
+
+``NVME_SC_WRITE_FAULT``
+  Write Fault: The write data could not be
+  committed to the media.
+
+``NVME_SC_READ_ERROR``
+  Unrecovered Read Error: The read data
+  could not be recovered from the media.
+
+``NVME_SC_GUARD_CHECK``
+  End-to-end Guard Check Error: The command
+  was aborted due to an end-to-end guard
+  check failure.
+
+``NVME_SC_APPTAG_CHECK``
+  End-to-end Application Tag Check Error:
+  The command was aborted due to an
+  end-to-end application tag check failure.
+
+``NVME_SC_REFTAG_CHECK``
+  End-to-end Reference Tag Check Error: The
+  command was aborted due to an end-to-end
+  reference tag check failure.
+
+``NVME_SC_COMPARE_FAILED``
+  Compare Failure: The command failed due
+  to a miscompare during a Compare command.
+
+``NVME_SC_ACCESS_DENIED``
+  Access Denied: Access to the namespace
+  and/or LBA range is denied due to lack of
+  access rights.
+
+``NVME_SC_UNWRITTEN_BLOCK``
+  Deallocated or Unwritten Logical Block:
+  The command failed due to an attempt to
+  read from or verify an LBA range
+  containing a deallocated or unwritten
+  logical block.
+
+``NVME_SC_STORAGE_TAG_CHECK``
+  End-to-End Storage Tag Check Error: The
+  command was aborted due to an end-to-end
+  storage tag check failure.
+
+``NVME_SC_ANA_INTERNAL_PATH_ERROR``
+  Internal Path Error: The command was not
+  completed as the result of a controller
+  internal error that is specific to the
+  controller processing the command.
+
+``NVME_SC_ANA_PERSISTENT_LOSS``
+  Asymmetric Access Persistent Loss: The
+  requested function (e.g., command) is not
+  able to be performed as a result of the
+  relationship between the controller and
+  the namespace being in the ANA Persistent
+  Loss state.
+
+``NVME_SC_ANA_INACCESSIBLE``
+  Asymmetric Access Inaccessible: The
+  requested function (e.g., command) is not
+  able to be performed as a result of the
+  relationship between the controller and
+  the namespace being in the ANA
+  Inaccessible state.
+
+``NVME_SC_ANA_TRANSITION``
+  Asymmetric Access Transition: The
+  requested function (e.g., command) is not
+  able to be performed as a result of the
+  relationship between the controller and
+  the namespace transitioning between
+  Asymmetric Namespace Access states.
+
+``NVME_SC_CTRL_PATH_ERROR``
+  Controller Pathing Error: A pathing error
+  was detected by the controller.
+
+``NVME_SC_HOST_PATH_ERROR``
+  Host Pathing Error: A pathing error was
+  detected by the host.
+
+``NVME_SC_CMD_ABORTED_BY_HOST``
+  Command Aborted By Host: The command was
+  aborted as a result of host action.
+
+``NVME_SC_CRD``
+  Mask to get value of Command Retry Delay
+  index
+
+``NVME_SC_MORE``
+  More bit. If set, more status information
+  for this command as part of the Error
+  Information log that may be retrieved with
+  the Get Log Page command.
+
+``NVME_SC_DNR``
+  Do Not Retry bit. If set, if the same
+  command is re-submitted to any controller
+  in the NVM subsystem, then that
+  re-submitted command is expected to fail.
+
+
+.. c:function:: __u16 nvme_status_code_type (__u16 status_field)
+
+   Returns the NVMe Status Code Type
+
+**Parameters**
+
+``__u16 status_field``
+  The NVMe Completion Queue Entry's Status Field
+  See :c:type:`enum nvme_status_field <nvme_status_field>`
+
+**Return**
+
+status code type
+
+
+.. c:function:: __u16 nvme_status_code (__u16 status_field)
+
+   Returns the NVMe Status Code
+
+**Parameters**
+
+``__u16 status_field``
+  The NVMe Completion Queue Entry's Status Field
+  See :c:type:`enum nvme_status_field <nvme_status_field>`
+
+**Return**
+
+status code
+
+
+
+
+.. c:enum:: nvme_status_type
+
+   type encoding for NVMe return values, when represented as an int.
+
+**Constants**
+
+``NVME_STATUS_TYPE_SHIFT``
+  shift value for status bits
+
+``NVME_STATUS_TYPE_MASK``
+  mask value for status bits
+
+``NVME_STATUS_TYPE_NVME``
+  NVMe command status value, typically from CDW3
+
+``NVME_STATUS_TYPE_MI``
+  NVMe-MI header status
+
+**Description**
+
+
+The nvme_* api returns an int, with negative values indicating an internal
+or syscall error, zero signifying success, positive values representing
+the NVMe status.
+
+That latter case (the NVMe status) may represent status values from
+different parts of the transport/controller/etc, and are at most 16 bits of
+data. So, we use the most-significant 3 bits of the signed int to indicate
+which type of status this is.
+
+
+.. c:function:: __u32 nvme_status_get_type (int status)
+
+   extract the type from a nvme_* return value
+
+**Parameters**
+
+``int status``
+  the (non-negative) return value from the NVMe API
+
+**Return**
+
+the type component of the status.
+
+
+.. c:function:: __u32 nvme_status_get_value (int status)
+
+   extract the status value from a nvme_* return value
+
+**Parameters**
+
+``int status``
+  the (non-negative) return value from the NVMe API
+
+**Return**
+
+the value component of the status; the set of values will depend
+on the status type.
+
+
+.. c:function:: __u32 nvme_status_equals (int status, enum nvme_status_type type, unsigned int value)
+
+   helper to check a status against a type and value
+
+**Parameters**
+
+``int status``
+  the (non-negative) return value from the NVMe API
+
+``enum nvme_status_type type``
+  the status type
+
+``unsigned int value``
+  the status value
+
+**Return**
+
+true if **status** is of the specified type and value
+
+
+
+
+.. c:enum:: nvme_admin_opcode
+
+   Known NVMe admin opcodes
+
+**Constants**
+
+``nvme_admin_delete_sq``
+  Delete I/O Submission Queue
+
+``nvme_admin_create_sq``
+  Create I/O Submission Queue
+
+``nvme_admin_get_log_page``
+  Get Log Page
+
+``nvme_admin_delete_cq``
+  Delete I/O Completion Queue
+
+``nvme_admin_create_cq``
+  Create I/O Completion Queue
+
+``nvme_admin_identify``
+  Identify
+
+``nvme_admin_abort_cmd``
+  Abort
+
+``nvme_admin_set_features``
+  Set Features
+
+``nvme_admin_get_features``
+  Get Features
+
+``nvme_admin_async_event``
+  Asynchronous Event Request
+
+``nvme_admin_ns_mgmt``
+  Namespace Management
+
+``nvme_admin_fw_commit``
+  Firmware Commit
+
+``nvme_admin_fw_activate``
+  Firmware Commit
+
+``nvme_admin_fw_download``
+  Firmware Image Download
+
+``nvme_admin_dev_self_test``
+  Device Self-test
+
+``nvme_admin_ns_attach``
+  Namespace Attachment
+
+``nvme_admin_keep_alive``
+  Keep Alive
+
+``nvme_admin_directive_send``
+  Directive Send
+
+``nvme_admin_directive_recv``
+  Directive Receive
+
+``nvme_admin_virtual_mgmt``
+  Virtualization Management
+
+``nvme_admin_nvme_mi_send``
+  NVMe-MI Send
+
+``nvme_admin_nvme_mi_recv``
+  NVMe-MI Receive
+
+``nvme_admin_capacity_mgmt``
+  Capacity Management
+
+``nvme_admin_discovery_info_mgmt``
+  Discovery Information Management (DIM)
+
+``nvme_admin_fabric_zoning_recv``
+  Fabric Zoning Receive
+
+``nvme_admin_lockdown``
+  Lockdown
+
+``nvme_admin_fabric_zoning_lookup``
+  Fabric Zoning Lookup
+
+``nvme_admin_fabric_zoning_send``
+  Fabric Zoning Send
+
+``nvme_admin_dbbuf``
+  Doorbell Buffer Config
+
+``nvme_admin_fabrics``
+  Fabrics Commands
+
+``nvme_admin_format_nvm``
+  Format NVM
+
+``nvme_admin_security_send``
+  Security Send
+
+``nvme_admin_security_recv``
+  Security Receive
+
+``nvme_admin_sanitize_nvm``
+  Sanitize
+
+``nvme_admin_get_lba_status``
+  Get LBA Status
+
+
+
+
+.. c:enum:: nvme_identify_cns
+
+   Identify - CNS Values
+
+**Constants**
+
+``NVME_IDENTIFY_CNS_NS``
+  Identify Namespace data structure
+
+``NVME_IDENTIFY_CNS_CTRL``
+  Identify Controller data structure
+
+``NVME_IDENTIFY_CNS_NS_ACTIVE_LIST``
+  Active Namespace ID list
+
+``NVME_IDENTIFY_CNS_NS_DESC_LIST``
+  Namespace Identification Descriptor list
+
+``NVME_IDENTIFY_CNS_NVMSET_LIST``
+  NVM Set List
+
+``NVME_IDENTIFY_CNS_CSI_NS``
+  I/O Command Set specific Identify
+  Namespace data structure
+
+``NVME_IDENTIFY_CNS_CSI_CTRL``
+  I/O Command Set specific Identify
+  Controller data structure
+
+``NVME_IDENTIFY_CNS_CSI_NS_ACTIVE_LIST``
+  Active Namespace ID list associated
+  with the specified I/O Command Set
+
+``NVME_IDENTIFY_CNS_CSI_INDEPENDENT_ID_NS``
+  I/O Command Set Independent Identify
+
+``NVME_IDENTIFY_CNS_NS_USER_DATA_FORMAT``
+  Namespace user data format
+
+``NVME_IDENTIFY_CNS_CSI_NS_USER_DATA_FORMAT``
+  I/O Command Set specific user data
+  format
+  Namespace data structure
+
+``NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST``
+  Allocated Namespace ID list
+
+``NVME_IDENTIFY_CNS_ALLOCATED_NS``
+  Identify Namespace data structure for
+  the specified allocated NSID
+
+``NVME_IDENTIFY_CNS_NS_CTRL_LIST``
+  Controller List of controllers attached
+  to the specified NSID
+
+``NVME_IDENTIFY_CNS_CTRL_LIST``
+  Controller List of controllers that exist
+  in the NVM subsystem
+
+``NVME_IDENTIFY_CNS_PRIMARY_CTRL_CAP``
+  Primary Controller Capabilities data
+  structure for the specified primary controller
+
+``NVME_IDENTIFY_CNS_SECONDARY_CTRL_LIST``
+  Secondary Controller list of controllers
+  associated with the primary controller
+  processing the command
+
+``NVME_IDENTIFY_CNS_NS_GRANULARITY``
+  A Namespace Granularity List
+
+``NVME_IDENTIFY_CNS_UUID_LIST``
+  A UUID List
+
+``NVME_IDENTIFY_CNS_DOMAIN_LIST``
+  Domain List
+
+``NVME_IDENTIFY_CNS_ENDURANCE_GROUP_ID``
+  Endurance Group List
+
+``NVME_IDENTIFY_CNS_CSI_ALLOCATED_NS_LIST``
+  I/O Command Set specific Allocated Namespace
+  ID list
+
+``NVME_IDENTIFY_CNS_CSI_ID_NS_DATA_STRUCTURE``
+  I/O Command Set specific ID Namespace
+  Data Structure for Allocated Namespace ID
+
+``NVME_IDENTIFY_CNS_COMMAND_SET_STRUCTURE``
+  Base Specification 2.0a section 5.17.2.21
+
+
+
+
+.. c:enum:: nvme_cmd_get_log_lid
+
+   Get Log Page -Log Page Identifiers
+
+**Constants**
+
+``NVME_LOG_LID_SUPPORTED_LOG_PAGES``
+  Supported Log Pages
+
+``NVME_LOG_LID_ERROR``
+  Error Information
+
+``NVME_LOG_LID_SMART``
+  SMART / Health Information
+
+``NVME_LOG_LID_FW_SLOT``
+  Firmware Slot Information
+
+``NVME_LOG_LID_CHANGED_NS``
+  Changed Namespace List
+
+``NVME_LOG_LID_CMD_EFFECTS``
+  Commands Supported and Effects
+
+``NVME_LOG_LID_DEVICE_SELF_TEST``
+  Device Self-test
+
+``NVME_LOG_LID_TELEMETRY_HOST``
+  Telemetry Host-Initiated
+
+``NVME_LOG_LID_TELEMETRY_CTRL``
+  Telemetry Controller-Initiated
+
+``NVME_LOG_LID_ENDURANCE_GROUP``
+  Endurance Group Information
+
+``NVME_LOG_LID_PREDICTABLE_LAT_NVMSET``
+  Predictable Latency Per NVM Set
+
+``NVME_LOG_LID_PREDICTABLE_LAT_AGG``
+  Predictable Latency Event Aggregate
+
+``NVME_LOG_LID_ANA``
+  Asymmetric Namespace Access
+
+``NVME_LOG_LID_PERSISTENT_EVENT``
+  Persistent Event Log
+
+``NVME_LOG_LID_LBA_STATUS``
+  LBA Status Information
+
+``NVME_LOG_LID_ENDURANCE_GRP_EVT``
+  Endurance Group Event Aggregate
+
+``NVME_LOG_LID_MEDIA_UNIT_STATUS``
+  Media Unit Status
+
+``NVME_LOG_LID_SUPPORTED_CAP_CONFIG_LIST``
+  Supported Capacity Configuration Lis
+
+``NVME_LOG_LID_FID_SUPPORTED_EFFECTS``
+  Feature Identifiers Supported and Effects
+
+``NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS``
+  NVMe-MI Commands Supported and Effects
+
+``NVME_LOG_LID_BOOT_PARTITION``
+  Boot Partition
+
+``NVME_LOG_LID_FDP_CONFIGS``
+  FDP Configurations
+
+``NVME_LOG_LID_FDP_RUH_USAGE``
+  Reclaim Unit Handle Usage
+
+``NVME_LOG_LID_FDP_STATS``
+  FDP Statistics
+
+``NVME_LOG_LID_FDP_EVENTS``
+  FDP Events
+
+``NVME_LOG_LID_DISCOVER``
+  Discovery
+
+``NVME_LOG_LID_RESERVATION``
+  Reservation Notification
+
+``NVME_LOG_LID_SANITIZE``
+  Sanitize Status
+
+``NVME_LOG_LID_ZNS_CHANGED_ZONES``
+  Changed Zone List
+
+
+
+
+.. c:enum:: nvme_features_id
+
+   Features - Feature Identifiers
+
+**Constants**
+
+``NVME_FEAT_FID_ARBITRATION``
+  Arbitration
+
+``NVME_FEAT_FID_POWER_MGMT``
+  Power Management
+
+``NVME_FEAT_FID_LBA_RANGE``
+  LBA Range Type
+
+``NVME_FEAT_FID_TEMP_THRESH``
+  Temperature Threshold
+
+``NVME_FEAT_FID_ERR_RECOVERY``
+  Error Recovery
+
+``NVME_FEAT_FID_VOLATILE_WC``
+  Volatile Write Cache
+
+``NVME_FEAT_FID_NUM_QUEUES``
+  Number of Queues
+
+``NVME_FEAT_FID_IRQ_COALESCE``
+  Interrupt Coalescing
+
+``NVME_FEAT_FID_IRQ_CONFIG``
+  Interrupt Vector Configuration
+
+``NVME_FEAT_FID_WRITE_ATOMIC``
+  Write Atomicity Normal
+
+``NVME_FEAT_FID_ASYNC_EVENT``
+  Asynchronous Event Configuration
+
+``NVME_FEAT_FID_AUTO_PST``
+  Autonomous Power State Transition
+
+``NVME_FEAT_FID_HOST_MEM_BUF``
+  Host Memory Buffer
+
+``NVME_FEAT_FID_TIMESTAMP``
+  Timestamp
+
+``NVME_FEAT_FID_KATO``
+  Keep Alive Timer
+
+``NVME_FEAT_FID_HCTM``
+  Host Controlled Thermal Management
+
+``NVME_FEAT_FID_NOPSC``
+  Non-Operational Power State Config
+
+``NVME_FEAT_FID_RRL``
+  Read Recovery Level Config
+
+``NVME_FEAT_FID_PLM_CONFIG``
+  Predictable Latency Mode Config
+
+``NVME_FEAT_FID_PLM_WINDOW``
+  Predictable Latency Mode Window
+
+``NVME_FEAT_FID_LBA_STS_INTERVAL``
+  LBA Status Information Report Interval
+
+``NVME_FEAT_FID_HOST_BEHAVIOR``
+  Host Behavior Support
+
+``NVME_FEAT_FID_SANITIZE``
+  Endurance Group Event Configuration
+
+``NVME_FEAT_FID_ENDURANCE_EVT_CFG``
+  Endurance Group Event Configuration
+
+``NVME_FEAT_FID_IOCS_PROFILE``
+  I/O Command Set Profile
+
+``NVME_FEAT_FID_SPINUP_CONTROL``
+  Spinup Control
+
+``NVME_FEAT_FID_FDP``
+  Flexible Data Placement
+
+``NVME_FEAT_FID_FDP_EVENTS``
+  FDP Events
+
+``NVME_FEAT_FID_ENH_CTRL_METADATA``
+  Enhanced Controller Metadata
+
+``NVME_FEAT_FID_CTRL_METADATA``
+  Controller Metadata
+
+``NVME_FEAT_FID_NS_METADATA``
+  Namespace Metadata
+
+``NVME_FEAT_FID_SW_PROGRESS``
+  Software Progress Marker
+
+``NVME_FEAT_FID_HOST_ID``
+  Host Identifier
+
+``NVME_FEAT_FID_RESV_MASK``
+  Reservation Notification Mask
+
+``NVME_FEAT_FID_RESV_PERSIST``
+  Reservation Persistence
+
+``NVME_FEAT_FID_WRITE_PROTECT``
+  Namespace Write Protection Config
+
+
+
+
+.. c:enum:: nvme_feat
+
+   Features Access Shifts/Masks values
+
+**Constants**
+
+``NVME_FEAT_ARBITRATION_BURST_SHIFT``
+
+``NVME_FEAT_ARBITRATION_BURST_MASK``
+
+``NVME_FEAT_ARBITRATION_LPW_SHIFT``
+
+``NVME_FEAT_ARBITRATION_LPW_MASK``
+
+``NVME_FEAT_ARBITRATION_MPW_SHIFT``
+
+``NVME_FEAT_ARBITRATION_MPW_MASK``
+
+``NVME_FEAT_ARBITRATION_HPW_SHIFT``
+
+``NVME_FEAT_ARBITRATION_HPW_MASK``
+
+``NVME_FEAT_PWRMGMT_PS_SHIFT``
+
+``NVME_FEAT_PWRMGMT_PS_MASK``
+
+``NVME_FEAT_PWRMGMT_WH_SHIFT``
+
+``NVME_FEAT_PWRMGMT_WH_MASK``
+
+``NVME_FEAT_LBAR_NR_SHIFT``
+
+``NVME_FEAT_LBAR_NR_MASK``
+
+``NVME_FEAT_TT_TMPTH_SHIFT``
+
+``NVME_FEAT_TT_TMPTH_MASK``
+
+``NVME_FEAT_TT_TMPSEL_SHIFT``
+
+``NVME_FEAT_TT_TMPSEL_MASK``
+
+``NVME_FEAT_TT_THSEL_SHIFT``
+
+``NVME_FEAT_TT_THSEL_MASK``
+
+``NVME_FEAT_ERROR_RECOVERY_TLER_SHIFT``
+
+``NVME_FEAT_ERROR_RECOVERY_TLER_MASK``
+
+``NVME_FEAT_ERROR_RECOVERY_DULBE_SHIFT``
+
+``NVME_FEAT_ERROR_RECOVERY_DULBE_MASK``
+
+``NVME_FEAT_VWC_WCE_SHIFT``
+
+``NVME_FEAT_VWC_WCE_MASK``
+
+``NVME_FEAT_NRQS_NSQR_SHIFT``
+
+``NVME_FEAT_NRQS_NSQR_MASK``
+
+``NVME_FEAT_NRQS_NCQR_SHIFT``
+
+``NVME_FEAT_NRQS_NCQR_MASK``
+
+``NVME_FEAT_IRQC_THR_SHIFT``
+
+``NVME_FEAT_IRQC_THR_MASK``
+
+``NVME_FEAT_IRQC_TIME_SHIFT``
+
+``NVME_FEAT_IRQC_TIME_MASK``
+
+``NVME_FEAT_ICFG_IV_SHIFT``
+
+``NVME_FEAT_ICFG_IV_MASK``
+
+``NVME_FEAT_ICFG_CD_SHIFT``
+
+``NVME_FEAT_ICFG_CD_MASK``
+
+``NVME_FEAT_WA_DN_SHIFT``
+
+``NVME_FEAT_WA_DN_MASK``
+
+``NVME_FEAT_AE_SMART_SHIFT``
+
+``NVME_FEAT_AE_SMART_MASK``
+
+``NVME_FEAT_AE_NAN_SHIFT``
+
+``NVME_FEAT_AE_NAN_MASK``
+
+``NVME_FEAT_AE_FW_SHIFT``
+
+``NVME_FEAT_AE_FW_MASK``
+
+``NVME_FEAT_AE_TELEM_SHIFT``
+
+``NVME_FEAT_AE_TELEM_MASK``
+
+``NVME_FEAT_AE_ANA_SHIFT``
+
+``NVME_FEAT_AE_ANA_MASK``
+
+``NVME_FEAT_AE_PLA_SHIFT``
+
+``NVME_FEAT_AE_PLA_MASK``
+
+``NVME_FEAT_AE_LBAS_SHIFT``
+
+``NVME_FEAT_AE_LBAS_MASK``
+
+``NVME_FEAT_AE_EGA_SHIFT``
+
+``NVME_FEAT_AE_EGA_MASK``
+
+``NVME_FEAT_APST_APSTE_SHIFT``
+
+``NVME_FEAT_APST_APSTE_MASK``
+
+``NVME_FEAT_HMEM_EHM_SHIFT``
+
+``NVME_FEAT_HMEM_EHM_MASK``
+
+``NVME_FEAT_HCTM_TMT2_SHIFT``
+
+``NVME_FEAT_HCTM_TMT2_MASK``
+
+``NVME_FEAT_HCTM_TMT1_SHIFT``
+
+``NVME_FEAT_HCTM_TMT1_MASK``
+
+``NVME_FEAT_NOPS_NOPPME_SHIFT``
+
+``NVME_FEAT_NOPS_NOPPME_MASK``
+
+``NVME_FEAT_RRL_RRL_SHIFT``
+
+``NVME_FEAT_RRL_RRL_MASK``
+
+``NVME_FEAT_PLM_PLME_SHIFT``
+
+``NVME_FEAT_PLM_PLME_MASK``
+
+``NVME_FEAT_PLMW_WS_SHIFT``
+
+``NVME_FEAT_PLMW_WS_MASK``
+
+``NVME_FEAT_LBAS_LSIRI_SHIFT``
+
+``NVME_FEAT_LBAS_LSIRI_MASK``
+
+``NVME_FEAT_LBAS_LSIPI_SHIFT``
+
+``NVME_FEAT_LBAS_LSIPI_MASK``
+
+``NVME_FEAT_SC_NODRM_SHIFT``
+
+``NVME_FEAT_SC_NODRM_MASK``
+
+``NVME_FEAT_EG_ENDGID_SHIFT``
+
+``NVME_FEAT_EG_ENDGID_MASK``
+
+``NVME_FEAT_EG_EGCW_SHIFT``
+
+``NVME_FEAT_EG_EGCW_MASK``
+
+``NVME_FEAT_SPM_PBSLC_SHIFT``
+
+``NVME_FEAT_SPM_PBSLC_MASK``
+
+``NVME_FEAT_HOSTID_EXHID_SHIFT``
+
+``NVME_FEAT_HOSTID_EXHID_MASK``
+
+``NVME_FEAT_RM_REGPRE_SHIFT``
+
+``NVME_FEAT_RM_REGPRE_MASK``
+
+``NVME_FEAT_RM_RESREL_SHIFT``
+
+``NVME_FEAT_RM_RESREL_MASK``
+
+``NVME_FEAT_RM_RESPRE_SHIFT``
+
+``NVME_FEAT_RM_RESPRE_MASK``
+
+``NVME_FEAT_RP_PTPL_SHIFT``
+
+``NVME_FEAT_RP_PTPL_MASK``
+
+``NVME_FEAT_WP_WPS_SHIFT``
+
+``NVME_FEAT_WP_WPS_MASK``
+
+``NVME_FEAT_IOCSP_IOCSCI_SHIFT``
+
+``NVME_FEAT_IOCSP_IOCSCI_MASK``
+
+``NVME_FEAT_FDP_ENABLED_SHIFT``
+
+``NVME_FEAT_FDP_ENABLED_MASK``
+
+``NVME_FEAT_FDP_INDEX_SHIFT``
+
+``NVME_FEAT_FDP_INDEX_MASK``
+
+``NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT``
+
+``NVME_FEAT_FDP_EVENTS_ENABLE_MASK``
+
+
+
+
+.. c:enum:: nvme_get_features_sel
+
+   Get Features - Select
+
+**Constants**
+
+``NVME_GET_FEATURES_SEL_CURRENT``
+  Current value
+
+``NVME_GET_FEATURES_SEL_DEFAULT``
+  Default value
+
+``NVME_GET_FEATURES_SEL_SAVED``
+  Saved value
+
+``NVME_GET_FEATURES_SEL_SUPPORTED``
+  Supported capabilities
+
+
+
+
+.. c:enum:: nvme_cmd_format_mset
+
+   Format NVM - Metadata Settings
+
+**Constants**
+
+``NVME_FORMAT_MSET_SEPARATE``
+  indicates that the metadata is transferred
+  as part of a separate buffer.
+
+``NVME_FORMAT_MSET_EXTENDED``
+  indicates that the metadata is transferred
+  as part of an extended data LBA.
+
+
+
+
+.. c:enum:: nvme_cmd_format_pi
+
+   Format NVM - Protection Information
+
+**Constants**
+
+``NVME_FORMAT_PI_DISABLE``
+  Protection information is not enabled.
+
+``NVME_FORMAT_PI_TYPE1``
+  Protection information is enabled, Type 1.
+
+``NVME_FORMAT_PI_TYPE2``
+  Protection information is enabled, Type 2.
+
+``NVME_FORMAT_PI_TYPE3``
+  Protection information is enabled, Type 3.
+
+
+
+
+.. c:enum:: nvme_cmd_format_pil
+
+   Format NVM - Protection Information Location
+
+**Constants**
+
+``NVME_FORMAT_PIL_LAST``
+  Protection information is transferred as the last
+  bytes of metadata.
+
+``NVME_FORMAT_PIL_FIRST``
+  Protection information is transferred as the first
+  bytes of metadata.
+
+
+
+
+.. c:enum:: nvme_cmd_format_ses
+
+   Format NVM - Secure Erase Settings
+
+**Constants**
+
+``NVME_FORMAT_SES_NONE``
+  No secure erase operation requested.
+
+``NVME_FORMAT_SES_USER_DATA_ERASE``
+  User Data Erase: All user data shall be erased,
+  contents of the user data after the erase is
+  indeterminate (e.g. the user data may be zero
+  filled, one filled, etc.). If a User Data Erase
+  is requested and all affected user data is
+  encrypted, then the controller is allowed
+  to use a cryptographic erase to perform
+  the requested User Data Erase.
+
+``NVME_FORMAT_SES_CRYPTO_ERASE``
+  Cryptographic Erase: All user data shall
+  be erased cryptographically. This is
+  accomplished by deleting the encryption key.
+
+
+
+
+.. c:enum:: nvme_ns_mgmt_sel
+
+   Namespace Management - Select
+
+**Constants**
+
+``NVME_NS_MGMT_SEL_CREATE``
+  Namespace Create selection
+
+``NVME_NS_MGMT_SEL_DELETE``
+  Namespace Delete selection
+
+
+
+
+.. c:enum:: nvme_ns_attach_sel
+
+   Namespace Attachment - Select
+
+**Constants**
+
+``NVME_NS_ATTACH_SEL_CTRL_ATTACH``
+  Namespace attach selection
+
+``NVME_NS_ATTACH_SEL_CTRL_DEATTACH``
+  Namespace detach selection
+
+
+
+
+.. c:enum:: nvme_fw_commit_ca
+
+   Firmware Commit - Commit Action
+
+**Constants**
+
+``NVME_FW_COMMIT_CA_REPLACE``
+  Downloaded image replaces the existing
+  image, if any, in the specified Firmware
+  Slot. The newly placed image is not
+  activated.
+
+``NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE``
+  Downloaded image replaces the existing
+  image, if any, in the specified Firmware
+  Slot. The newly placed image is activated
+  at the next Controller Level Reset.
+
+``NVME_FW_COMMIT_CA_SET_ACTIVE``
+  The existing image in the specified
+  Firmware Slot is activated at the
+  next Controller Level Reset.
+
+``NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE_IMMEDIATE``
+  Downloaded image replaces the existing
+  image, if any, in the specified Firmware
+  Slot and is then activated immediately.
+  If there is not a newly downloaded image,
+  then the existing image in the specified
+  firmware slot is activated immediately.
+
+``NVME_FW_COMMIT_CA_REPLACE_BOOT_PARTITION``
+  Downloaded image replaces the Boot
+  Partition specified by the Boot
+  Partition ID field.
+
+``NVME_FW_COMMIT_CA_ACTIVATE_BOOT_PARTITION``
+  Mark the Boot Partition specified in
+  the BPID field as active and update
+  BPINFO.ABPID.
+
+
+
+
+.. c:enum:: nvme_directive_dtype
+
+   Directive Types
+
+**Constants**
+
+``NVME_DIRECTIVE_DTYPE_IDENTIFY``
+  Identify directive type
+
+``NVME_DIRECTIVE_DTYPE_STREAMS``
+  Streams directive type
+
+
+
+
+.. c:enum:: nvme_directive_receive_doper
+
+   Directive Receive Directive Operation
+
+**Constants**
+
+``NVME_DIRECTIVE_RECEIVE_IDENTIFY_DOPER_PARAM``
+
+``NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_PARAM``
+
+``NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_STATUS``
+
+``NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_RESOURCE``
+
+
+
+
+.. c:enum:: nvme_directive_send_doper
+
+   Directive Send Directive Operation
+
+**Constants**
+
+``NVME_DIRECTIVE_SEND_IDENTIFY_DOPER_ENDIR``
+
+``NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_IDENTIFIER``
+
+``NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_RESOURCE``
+
+
+
+
+.. c:enum:: nvme_directive_send_identify_endir
+
+   Enable Directive
+
+**Constants**
+
+``NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_DISABLE``
+
+``NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_ENABLE``
+
+
+
+
+.. c:enum:: nvme_sanitize_sanact
+
+   Sanitize Action
+
+**Constants**
+
+``NVME_SANITIZE_SANACT_EXIT_FAILURE``
+  Exit Failure Mode.
+
+``NVME_SANITIZE_SANACT_START_BLOCK_ERASE``
+  Start a Block Erase sanitize operation.
+
+``NVME_SANITIZE_SANACT_START_OVERWRITE``
+  Start an Overwrite sanitize operation.
+
+``NVME_SANITIZE_SANACT_START_CRYPTO_ERASE``
+  Start a Crypto Erase sanitize operation.
+
+
+
+
+.. c:enum:: nvme_dst_stc
+
+   Action taken by the Device Self-test command
+
+**Constants**
+
+``NVME_DST_STC_SHORT``
+  Start a short device self-test operation
+
+``NVME_DST_STC_LONG``
+  Start an extended device self-test operation
+
+``NVME_DST_STC_VS``
+  Start a vendor specific device self-test operation
+
+``NVME_DST_STC_ABORT``
+  Abort device self-test operation
+
+
+
+
+.. c:enum:: nvme_virt_mgmt_act
+
+   Virtualization Management - Action
+
+**Constants**
+
+``NVME_VIRT_MGMT_ACT_PRIM_CTRL_FLEX_ALLOC``
+  Primary Controller Flexible
+  Allocation
+
+``NVME_VIRT_MGMT_ACT_OFFLINE_SEC_CTRL``
+  Secondary Controller Offline
+
+``NVME_VIRT_MGMT_ACT_ASSIGN_SEC_CTRL``
+  Secondary Controller Assign
+
+``NVME_VIRT_MGMT_ACT_ONLINE_SEC_CTRL``
+  Secondary Controller Online
+
+
+
+
+.. c:enum:: nvme_virt_mgmt_rt
+
+   Virtualization Management - Resource Type
+
+**Constants**
+
+``NVME_VIRT_MGMT_RT_VQ_RESOURCE``
+  VQ Resources
+
+``NVME_VIRT_MGMT_RT_VI_RESOURCE``
+  VI Resources
+
+
+
+
+.. c:enum:: nvme_ns_write_protect_cfg
+
+   Write Protection - Write Protection State
+
+**Constants**
+
+``NVME_NS_WP_CFG_NONE``
+  No Write Protect
+
+``NVME_NS_WP_CFG_PROTECT``
+  Write Protect
+
+``NVME_NS_WP_CFG_PROTECT_POWER_CYCLE``
+  Write Protect Until Power Cycle
+
+``NVME_NS_WP_CFG_PROTECT_PERMANENT``
+  Permanent Write Protect
+
+
+
+
+.. c:enum:: nvme_log_ana_lsp
+
+   Asymmetric Namespace Access - Return Groups Only
+
+**Constants**
+
+``NVME_LOG_ANA_LSP_RGO_NAMESPACES``
+
+``NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY``
+
+
+
+
+.. c:enum:: nvme_pevent_log_action
+
+   Persistent Event Log - Action
+
+**Constants**
+
+``NVME_PEVENT_LOG_READ``
+  Read Log Data
+
+``NVME_PEVENT_LOG_EST_CTX_AND_READ``
+  Establish Context and Read Log Data
+
+``NVME_PEVENT_LOG_RELEASE_CTX``
+  Release Context
+
+
+
+
+.. c:enum:: nvme_feat_tmpthresh_thsel
+
+   Temperature Threshold - Threshold Type Select
+
+**Constants**
+
+``NVME_FEATURE_TEMPTHRESH_THSEL_OVER``
+  Over temperature threshold select
+
+``NVME_FEATURE_TEMPTHRESH_THSEL_UNDER``
+  Under temperature threshold select
+
+
+
+
+.. c:enum:: nvme_features_async_event_config_flags
+
+   Asynchronous Event Configuration configuration flags
+
+**Constants**
+
+``NVME_FEATURE_AENCFG_SMART_CRIT_SPARE``
+
+``NVME_FEATURE_AENCFG_SMART_CRIT_TEMPERATURE``
+
+``NVME_FEATURE_AENCFG_SMART_CRIT_DEGRADED``
+
+``NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY``
+
+``NVME_FEATURE_AENCFG_SMART_CRIT_VOLATILE_BACKUP``
+
+``NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY_PMR``
+
+``NVME_FEATURE_AENCFG_NOTICE_NAMESPACE_ATTRIBUTES``
+
+``NVME_FEATURE_AENCFG_NOTICE_FIRMWARE_ACTIVATION``
+
+``NVME_FEATURE_AENCFG_NOTICE_TELEMETRY_LOG``
+
+``NVME_FEATURE_AENCFG_NOTICE_ANA_CHANGE``
+
+``NVME_FEATURE_AENCFG_NOTICE_PL_EVENT``
+
+``NVME_FEATURE_AENCFG_NOTICE_LBA_STATUS``
+
+``NVME_FEATURE_AENCFG_NOTICE_EG_EVENT``
+
+``NVME_FEATURE_AENCFG_NOTICE_DISCOVERY_CHANGE``
+
+
+
+
+.. c:enum:: nvme_feat_plm_window_select
+
+   Predictable Latency Per NVM Set Log
+
+**Constants**
+
+``NVME_FEATURE_PLM_DTWIN``
+  Deterministic Window select
+
+``NVME_FEATURE_PLM_NDWIN``
+  Non-Deterministic Window select
+
+
+
+
+.. c:enum:: nvme_feat_resv_notify_flags
+
+   Reservation Notification Configuration
+
+**Constants**
+
+``NVME_FEAT_RESV_NOTIFY_REGPRE``
+  Mask Registration Preempted Notification
+
+``NVME_FEAT_RESV_NOTIFY_RESREL``
+  Mask Reservation Released Notification
+
+``NVME_FEAT_RESV_NOTIFY_RESPRE``
+  Mask Reservation Preempted Notification
+
+
+
+
+.. c:enum:: nvme_feat_nswpcfg_state
+
+   Write Protection - Write Protection State
+
+**Constants**
+
+``NVME_FEAT_NS_NO_WRITE_PROTECT``
+  No Write Protect
+
+``NVME_FEAT_NS_WRITE_PROTECT``
+  Write Protect
+
+``NVME_FEAT_NS_WRITE_PROTECT_PWR_CYCLE``
+  Write Protect Until Power Cycle
+
+``NVME_FEAT_NS_WRITE_PROTECT_PERMANENT``
+  Permanent Write Protect
+
+
+
+
+.. c:enum:: nvme_fctype
+
+   Fabrics Command Types
+
+**Constants**
+
+``nvme_fabrics_type_property_set``
+  Property set
+
+``nvme_fabrics_type_connect``
+  Connect
+
+``nvme_fabrics_type_property_get``
+  Property Get
+
+``nvme_fabrics_type_auth_send``
+  Authentication Send
+
+``nvme_fabrics_type_auth_receive``
+  Authentication Receive
+
+``nvme_fabrics_type_disconnect``
+  Disconnect
+
+
+
+
+.. c:enum:: nvme_data_tfr
+
+   Data transfer direction of the command
+
+**Constants**
+
+``NVME_DATA_TFR_NO_DATA_TFR``
+  No data transfer
+
+``NVME_DATA_TFR_HOST_TO_CTRL``
+  Host to controller
+
+``NVME_DATA_TFR_CTRL_TO_HOST``
+  Controller to host
+
+``NVME_DATA_TFR_BIDIRECTIONAL``
+  Bidirectional
+
+
+
+
+.. c:enum:: nvme_io_opcode
+
+   Opcodes for I/O Commands
+
+**Constants**
+
+``nvme_cmd_flush``
+  Flush
+
+``nvme_cmd_write``
+  Write
+
+``nvme_cmd_read``
+  Read
+
+``nvme_cmd_write_uncor``
+  Write Uncorrectable
+
+``nvme_cmd_compare``
+  Compare
+
+``nvme_cmd_write_zeroes``
+  write Zeros
+
+``nvme_cmd_dsm``
+  Dataset Management
+
+``nvme_cmd_verify``
+  Verify
+
+``nvme_cmd_resv_register``
+  Reservation Register
+
+``nvme_cmd_resv_report``
+  Reservation Report
+
+``nvme_cmd_resv_acquire``
+  Reservation Acquire
+
+``nvme_cmd_io_mgmt_recv``
+  I/O Management Receive
+
+``nvme_cmd_resv_release``
+  Reservation Release
+
+``nvme_cmd_copy``
+  Copy
+
+``nvme_cmd_io_mgmt_send``
+  I/O Management Send
+
+``nvme_zns_cmd_mgmt_send``
+  Zone Management Send
+
+``nvme_zns_cmd_mgmt_recv``
+  Zone Management Receive
+
+``nvme_zns_cmd_append``
+  Zone Append
+
+
+
+
+.. c:enum:: nvme_io_control_flags
+
+   I/O control flags
+
+**Constants**
+
+``NVME_IO_DTYPE_STREAMS``
+  Directive Type Streams
+
+``NVME_IO_STC``
+  Storage Tag Check
+
+``NVME_IO_DEAC``
+  Deallocate
+
+``NVME_IO_ZNS_APPEND_PIREMAP``
+  Protection Information Remap
+
+``NVME_IO_PRINFO_PRCHK_REF``
+  Protection Information Check Reference Tag
+
+``NVME_IO_PRINFO_PRCHK_APP``
+  Protection Information Check Application Tag
+
+``NVME_IO_PRINFO_PRCHK_GUARD``
+  Protection Information Check Guard field
+
+``NVME_IO_PRINFO_PRACT``
+  Protection Information Action
+
+``NVME_IO_FUA``
+  Force Unit Access
+
+``NVME_IO_LR``
+  Limited Retry
+
+
+
+
+.. c:enum:: nvme_io_dsm_flags
+
+   Dataset Management flags
+
+**Constants**
+
+``NVME_IO_DSM_FREQ_UNSPEC``
+  No frequency information provided
+
+``NVME_IO_DSM_FREQ_TYPICAL``
+  Typical number of reads and writes
+  expected for this LBA range
+
+``NVME_IO_DSM_FREQ_RARE``
+  Infrequent writes and infrequent
+  reads to the LBA range indicated
+
+``NVME_IO_DSM_FREQ_READS``
+  Infrequent writes and frequent
+  reads to the LBA range indicated
+
+``NVME_IO_DSM_FREQ_WRITES``
+  Frequent writes and infrequent
+  reads to the LBA range indicated
+
+``NVME_IO_DSM_FREQ_RW``
+  Frequent writes and frequent reads
+  to the LBA range indicated
+
+``NVME_IO_DSM_FREQ_ONCE``
+
+``NVME_IO_DSM_FREQ_PREFETCH``
+
+``NVME_IO_DSM_FREQ_TEMP``
+
+``NVME_IO_DSM_LATENCY_NONE``
+  No latency information provided
+
+``NVME_IO_DSM_LATENCY_IDLE``
+  Longer latency acceptable
+
+``NVME_IO_DSM_LATENCY_NORM``
+  Typical latency
+
+``NVME_IO_DSM_LATENCY_LOW``
+  Smallest possible latency
+
+``NVME_IO_DSM_SEQ_REQ``
+
+``NVME_IO_DSM_COMPRESSED``
+
+
+
+
+.. c:enum:: nvme_dsm_attributes
+
+   Dataset Management attributes
+
+**Constants**
+
+``NVME_DSMGMT_IDR``
+  Attribute -Integral Dataset for Read
+
+``NVME_DSMGMT_IDW``
+  Attribute - Integral Dataset for Write
+
+``NVME_DSMGMT_AD``
+  Attribute - Deallocate
+
+
+
+
+.. c:enum:: nvme_resv_rtype
+
+   Reservation Type Encoding
+
+**Constants**
+
+``NVME_RESERVATION_RTYPE_WE``
+  Write Exclusive Reservation
+
+``NVME_RESERVATION_RTYPE_EA``
+  Exclusive Access Reservation
+
+``NVME_RESERVATION_RTYPE_WERO``
+  Write Exclusive - Registrants Only Reservation
+
+``NVME_RESERVATION_RTYPE_EARO``
+  Exclusive Access - Registrants Only Reservation
+
+``NVME_RESERVATION_RTYPE_WEAR``
+  Write Exclusive - All Registrants Reservation
+
+``NVME_RESERVATION_RTYPE_EAAR``
+  Exclusive Access - All Registrants Reservation
+
+
+
+
+.. c:enum:: nvme_resv_racqa
+
+   Reservation Acquire - Reservation Acquire Action
+
+**Constants**
+
+``NVME_RESERVATION_RACQA_ACQUIRE``
+  Acquire
+
+``NVME_RESERVATION_RACQA_PREEMPT``
+  Preempt
+
+``NVME_RESERVATION_RACQA_PREEMPT_AND_ABORT``
+  Preempt and Abort
+
+
+
+
+.. c:enum:: nvme_resv_rrega
+
+   Reservation Register - Reservation Register Action
+
+**Constants**
+
+``NVME_RESERVATION_RREGA_REGISTER_KEY``
+  Register Reservation Key
+
+``NVME_RESERVATION_RREGA_UNREGISTER_KEY``
+  Unregister Reservation Key
+
+``NVME_RESERVATION_RREGA_REPLACE_KEY``
+  Replace Reservation Key
+
+
+
+
+.. c:enum:: nvme_resv_cptpl
+
+   Reservation Register - Change Persist Through Power Loss State
+
+**Constants**
+
+``NVME_RESERVATION_CPTPL_NO_CHANGE``
+  No change to PTPL state
+
+``NVME_RESERVATION_CPTPL_CLEAR``
+  Reservations are released and
+  registrants are cleared on a power on
+
+``NVME_RESERVATION_CPTPL_PERSIST``
+  Reservations and registrants persist
+  across a power loss
+
+
+
+
+.. c:enum:: nvme_resv_rrela
+
+   Reservation Release - Reservation Release Action
+
+**Constants**
+
+``NVME_RESERVATION_RRELA_RELEASE``
+  Release
+
+``NVME_RESERVATION_RRELA_CLEAR``
+  Clear
+
+
+
+
+.. c:enum:: nvme_zns_send_action
+
+   Zone Management Send - Zone Send Action
+
+**Constants**
+
+``NVME_ZNS_ZSA_CLOSE``
+  Close Zone
+
+``NVME_ZNS_ZSA_FINISH``
+  Finish Zone
+
+``NVME_ZNS_ZSA_OPEN``
+  Open Zone
+
+``NVME_ZNS_ZSA_RESET``
+  Reset Zone
+
+``NVME_ZNS_ZSA_OFFLINE``
+  Offline Zone
+
+``NVME_ZNS_ZSA_SET_DESC_EXT``
+  Set Zone Descriptor Extension
+
+``NVME_ZNS_ZSA_ZRWA_FLUSH``
+  Flush
+
+
+
+
+.. c:enum:: nvme_zns_recv_action
+
+   Zone Management Receive - Zone Receive Action Specific Features
+
+**Constants**
+
+``NVME_ZNS_ZRA_REPORT_ZONES``
+  Report Zones
+
+``NVME_ZNS_ZRA_EXTENDED_REPORT_ZONES``
+  Extended Report Zones
+
+
+
+
+.. c:enum:: nvme_zns_report_options
+
+   Zone Management Receive - Zone Receive Action Specific Field
+
+**Constants**
+
+``NVME_ZNS_ZRAS_REPORT_ALL``
+  List all zones
+
+``NVME_ZNS_ZRAS_REPORT_EMPTY``
+  List the zones in the ZSE:Empty state
+
+``NVME_ZNS_ZRAS_REPORT_IMPL_OPENED``
+  List the zones in the ZSIO:Implicitly Opened state
+
+``NVME_ZNS_ZRAS_REPORT_EXPL_OPENED``
+  List the zones in the ZSEO:Explicitly Opened state
+
+``NVME_ZNS_ZRAS_REPORT_CLOSED``
+  List the zones in the ZSC:Closed state
+
+``NVME_ZNS_ZRAS_REPORT_FULL``
+  List the zones in the ZSF:Full state
+
+``NVME_ZNS_ZRAS_REPORT_READ_ONLY``
+  List the zones in the ZSRO:Read Only state
+
+``NVME_ZNS_ZRAS_REPORT_OFFLINE``
+  List the zones in the ZSO:Offline state
+
+
+
+
+.. c:enum:: nvme_io_mgmt_recv_mo
+
+   I/O Management Receive - Management Operation
+
+**Constants**
+
+``NVME_IO_MGMT_RECV_RUH_STATUS``
+  Reclaim Unit Handle Status
+
+
+
+
+.. c:enum:: nvme_io_mgmt_send_mo
+
+   I/O Management Send - Management Operation
+
+**Constants**
+
+``NVME_IO_MGMT_SEND_RUH_UPDATE``
+  Reclaim Unit Handle Update
+
+
diff --git a/doc/rst/util.rst b/doc/rst/util.rst
new file mode 100644 (file)
index 0000000..4b85492
--- /dev/null
@@ -0,0 +1,577 @@
+.. _util.h:
+
+**util.h**
+
+
+libnvme utility functions
+
+
+
+.. c:enum:: nvme_connect_err
+
+   nvme connect error codes
+
+**Constants**
+
+``ENVME_CONNECT_RESOLVE``
+  failed to resolve host
+
+``ENVME_CONNECT_ADDRFAM``
+  unrecognized address family
+
+``ENVME_CONNECT_TRADDR``
+  failed to get traddr
+
+``ENVME_CONNECT_TARG``
+  need a transport (-t) argument
+
+``ENVME_CONNECT_AARG``
+  need a address (-a) argument
+
+``ENVME_CONNECT_OPEN``
+  failed to open nvme-fabrics device
+
+``ENVME_CONNECT_WRITE``
+  failed to write to nvme-fabrics device
+
+``ENVME_CONNECT_READ``
+  failed to read from nvme-fabrics device
+
+``ENVME_CONNECT_PARSE``
+  failed to parse ctrl info
+
+``ENVME_CONNECT_INVAL_TR``
+  invalid transport type
+
+``ENVME_CONNECT_LOOKUP_SUBSYS_NAME``
+  failed to lookup subsystem name
+
+``ENVME_CONNECT_LOOKUP_SUBSYS``
+  failed to lookup subsystem
+
+``ENVME_CONNECT_ALREADY``
+  the connect attempt failed, already connected
+
+``ENVME_CONNECT_INVAL``
+  invalid arguments/configuration
+
+``ENVME_CONNECT_ADDRINUSE``
+  hostnqn already in use
+
+``ENVME_CONNECT_NODEV``
+  invalid interface
+
+``ENVME_CONNECT_OPNOTSUPP``
+  not supported
+
+``ENVME_CONNECT_CONNREFUSED``
+  connection refused
+
+
+.. c:function:: __u8 nvme_status_to_errno (int status, bool fabrics)
+
+   Converts nvme return status to errno
+
+**Parameters**
+
+``int status``
+  Return status from an nvme passthrough command
+
+``bool fabrics``
+  Set to true if :c:type:`status` is to a fabrics target.
+
+**Return**
+
+An errno representing the nvme status if it is an nvme status field,
+or unchanged status is < 0 since errno is already set.
+
+
+.. c:function:: const char * nvme_status_to_string (int status, bool fabrics)
+
+   Returns string describing nvme return status.
+
+**Parameters**
+
+``int status``
+  Return status from an nvme passthrough command
+
+``bool fabrics``
+  Set to true if :c:type:`status` is to a fabrics target.
+
+**Return**
+
+String representation of the nvme status if it is an nvme status field,
+or a standard errno string if status is < 0.
+
+
+.. c:function:: const char * nvme_errno_to_string (int err)
+
+   Returns string describing nvme connect failures
+
+**Parameters**
+
+``int err``
+  Returned error code from nvme_add_ctrl()
+
+**Return**
+
+String representation of the nvme connect error codes
+
+
+.. c:function:: void nvme_init_ctrl_list (struct nvme_ctrl_list *cntlist, __u16 num_ctrls, __u16 *ctrlist)
+
+   Initialize an nvme_ctrl_list structure from an array.
+
+**Parameters**
+
+``struct nvme_ctrl_list *cntlist``
+  The controller list structure to initialize
+
+``__u16 num_ctrls``
+  The number of controllers in the array, :c:type:`ctrlist`.
+
+``__u16 *ctrlist``
+  An array of controller identifiers in CPU native endian.
+
+**Description**
+
+This is intended to be used with any command that takes a controller list
+argument. See nvme_ns_attach_ctrls() and nvme_ns_detach().
+
+
+.. c:function:: void nvme_init_dsm_range (struct nvme_dsm_range *dsm, __u32 *ctx_attrs, __u32 *llbas, __u64 *slbas, __u16 nr_ranges)
+
+   Constructs a data set range structure
+
+**Parameters**
+
+``struct nvme_dsm_range *dsm``
+  DSM range array
+
+``__u32 *ctx_attrs``
+  Array of context attributes
+
+``__u32 *llbas``
+  Array of length in logical blocks
+
+``__u64 *slbas``
+  Array of starting logical blocks
+
+``__u16 nr_ranges``
+  The size of the dsm arrays
+
+**Description**
+
+Each array must be the same size of size 'nr_ranges'. This is intended to be
+used with constructing a payload for nvme_dsm().
+
+**Return**
+
+The nvme command status if a response was received or -errno
+otherwise.
+
+
+.. c:function:: void nvme_init_copy_range (struct nvme_copy_range *copy, __u16 *nlbs, __u64 *slbas, __u32 *eilbrts, __u32 *elbatms, __u32 *elbats, __u16 nr)
+
+   Constructs a copy range structure
+
+**Parameters**
+
+``struct nvme_copy_range *copy``
+  Copy range array
+
+``__u16 *nlbs``
+  Number of logical blocks
+
+``__u64 *slbas``
+  Starting LBA
+
+``__u32 *eilbrts``
+  Expected initial logical block reference tag
+
+``__u32 *elbatms``
+  Expected logical block application tag mask
+
+``__u32 *elbats``
+  Expected logical block application tag
+
+``__u16 nr``
+  Number of descriptors to construct
+
+
+.. c:function:: void nvme_init_copy_range_f1 (struct nvme_copy_range_f1 *copy, __u16 *nlbs, __u64 *slbas, __u64 *eilbrts, __u32 *elbatms, __u32 *elbats, __u16 nr)
+
+   Constructs a copy range f1 structure
+
+**Parameters**
+
+``struct nvme_copy_range_f1 *copy``
+  Copy range array
+
+``__u16 *nlbs``
+  Number of logical blocks
+
+``__u64 *slbas``
+  Starting LBA
+
+``__u64 *eilbrts``
+  Expected initial logical block reference tag
+
+``__u32 *elbatms``
+  Expected logical block application tag mask
+
+``__u32 *elbats``
+  Expected logical block application tag
+
+``__u16 nr``
+  Number of descriptors to construct
+
+
+.. c:function:: int nvme_get_feature_length (int fid, __u32 cdw11, __u32 *len)
+
+   Retreive the command payload length for a specific feature identifier
+
+**Parameters**
+
+``int fid``
+  Feature identifier, see :c:type:`enum nvme_features_id <nvme_features_id>`.
+
+``__u32 cdw11``
+  The cdw11 value may affect the transfer (only known fid is
+  ``NVME_FEAT_FID_HOST_ID``)
+
+``__u32 *len``
+  On success, set to this features payload length in bytes.
+
+**Return**
+
+0 on success, -1 with errno set to EINVAL if the function did not
+recognize :c:type:`fid`.
+
+
+.. c:function:: int nvme_get_feature_length2 (int fid, __u32 cdw11, enum nvme_data_tfr dir, __u32 *len)
+
+   Retreive the command payload length for a specific feature identifier
+
+**Parameters**
+
+``int fid``
+  Feature identifier, see :c:type:`enum nvme_features_id <nvme_features_id>`.
+
+``__u32 cdw11``
+  The cdw11 value may affect the transfer (only known fid is
+  ``NVME_FEAT_FID_HOST_ID``)
+
+``enum nvme_data_tfr dir``
+  Data transfer direction: false - host to controller, true -
+  controller to host may affect the transfer (only known fid is
+  ``NVME_FEAT_FID_HOST_MEM_BUF``).
+
+``__u32 *len``
+  On success, set to this features payload length in bytes.
+
+**Return**
+
+0 on success, -1 with errno set to EINVAL if the function did not
+recognize :c:type:`fid`.
+
+
+.. c:function:: int nvme_get_directive_receive_length (enum nvme_directive_dtype dtype, enum nvme_directive_receive_doper doper, __u32 *len)
+
+   Get directive receive length
+
+**Parameters**
+
+``enum nvme_directive_dtype dtype``
+  Directive type, see :c:type:`enum nvme_directive_dtype <nvme_directive_dtype>`
+
+``enum nvme_directive_receive_doper doper``
+  Directive receive operation, see :c:type:`enum nvme_directive_receive_doper <nvme_directive_receive_doper>`
+
+``__u32 *len``
+  On success, set to this directives payload length in bytes.
+
+**Return**
+
+0 on success, -1 with errno set to EINVAL if the function did not
+recognize :c:type:`dtype` or :c:type:`doper`.
+
+
+.. c:function:: size_t get_entity_name (char *buffer, size_t bufsz)
+
+   Get Entity Name (ENAME).
+
+**Parameters**
+
+``char *buffer``
+  The buffer where the ENAME will be saved as an ASCII string.
+
+``size_t bufsz``
+  The size of **buffer**.
+
+**Description**
+
+Per TP8010, ENAME is defined as the name associated with the host (i.e.
+hostname).
+
+**Return**
+
+Number of characters copied to **buffer**.
+
+
+.. c:function:: size_t get_entity_version (char *buffer, size_t bufsz)
+
+   Get Entity Version (EVER).
+
+**Parameters**
+
+``char *buffer``
+  The buffer where the EVER will be saved as an ASCII string.
+
+``size_t bufsz``
+  The size of **buffer**.
+
+**Description**
+
+EVER is defined as the operating system name and version as an ASCII
+string. This function reads different files from the file system and
+builds a string as follows: [os type] [os release] [distro release]
+
+    E.g. "Linux 5.17.0-rc1 SLES 15.4"
+
+**Return**
+
+Number of characters copied to **buffer**.
+
+
+.. c:function:: char * kv_strip (char *kv)
+
+   Strip blanks from key value string
+
+**Parameters**
+
+``char *kv``
+  The key-value string to strip
+
+**Description**
+
+Strip leading/trailing blanks as well as trailing comments from the
+Key=Value string pointed to by **kv**.
+
+**Return**
+
+A pointer to the stripped string. Note that the original string,
+**kv**, gets modified.
+
+
+.. c:function:: char * kv_keymatch (const char *kv, const char *key)
+
+   Look for key in key value string
+
+**Parameters**
+
+``const char *kv``
+  The key=value string to search for the presence of **key**
+
+``const char *key``
+  The key to look for
+
+**Description**
+
+Look for **key** in the Key=Value pair pointed to by **k** and return a
+pointer to the Value if **key** is found.
+
+Check if **kv** starts with **key**. If it does then make sure that we
+have a whole-word match on the **key**, and if we do, return a pointer
+to the first character of value (i.e. skip leading spaces, tabs,
+and equal sign)
+
+**Return**
+
+A pointer to the first character of "value" if a match is found.
+NULL otherwise.
+
+
+.. c:function:: char * startswith (const char *s, const char *prefix)
+
+   Checks that a string starts with a given prefix.
+
+**Parameters**
+
+``const char *s``
+  The string to check
+
+``const char *prefix``
+  A string that **s** could be starting with
+
+**Return**
+
+If **s** starts with **prefix**, then return a pointer within **s** at
+the first character after the matched **prefix**. NULL otherwise.
+
+
+.. c:macro:: round_up
+
+``round_up (val, mult)``
+
+   Round a value **val** to the next multiple specified by **mult**.
+
+**Parameters**
+
+``val``
+  Value to round
+
+``mult``
+  Multiple to round to.
+
+**Description**
+
+usage: int x = round_up(13, sizeof(__u32)); // 13 -> 16
+
+
+.. c:function:: __u16 nvmf_exat_len (size_t val_len)
+
+   Return length rounded up by 4
+
+**Parameters**
+
+``size_t val_len``
+  Value length
+
+**Description**
+
+Return the size in bytes, rounded to a multiple of 4 (e.g., size of
+__u32), of the buffer needed to hold the exat value of size
+**val_len**.
+
+**Return**
+
+Length rounded up by 4
+
+
+.. c:function:: __u16 nvmf_exat_size (size_t val_len)
+
+   Return min aligned size to hold value
+
+**Parameters**
+
+``size_t val_len``
+  This is the length of the data to be copied to the "exatval"
+  field of a "struct nvmf_ext_attr".
+
+**Description**
+
+Return the size of the "struct nvmf_ext_attr" needed to hold
+a value of size **val_len**.
+
+**Return**
+
+The size in bytes, rounded to a multiple of 4 (i.e. size of
+__u32), of the "struct nvmf_ext_attr" required to hold a string of
+length **val_len**.
+
+
+.. c:function:: struct nvmf_ext_attr * nvmf_exat_ptr_next (struct nvmf_ext_attr *p)
+
+   Increment **p** to the next element in the array.
+
+**Parameters**
+
+``struct nvmf_ext_attr *p``
+  Pointer to an element of an array of "struct nvmf_ext_attr".
+
+**Description**
+
+Extended attributes are saved to an array of "struct nvmf_ext_attr"
+where each element of the array is of variable size. In order to
+move to the next element in the array one must increment the
+pointer to the current element (**p**) by the size of the current
+element.
+
+**Return**
+
+Pointer to the next element in the array.
+
+
+
+
+.. c:enum:: nvme_version
+
+   Selector for version to be returned by **nvme_get_version**
+
+**Constants**
+
+``NVME_VERSION_PROJECT``
+  Project release version
+
+``NVME_VERSION_GIT``
+  Git reference
+
+
+.. c:function:: const char * nvme_get_version (enum nvme_version type)
+
+   Return version libnvme string
+
+**Parameters**
+
+``enum nvme_version type``
+  Selects which version type (see **struct** nvme_version)
+
+**Return**
+
+Returns version string for known types or else "n/a"
+
+
+.. c:function:: int nvme_uuid_to_string (unsigned char uuid[NVME_UUID_LEN], char *str)
+
+   Return string represenation of encoded UUID
+
+**Parameters**
+
+``unsigned char uuid[NVME_UUID_LEN]``
+  Binary encoded input UUID
+
+``char *str``
+  Output string represenation of UUID
+
+**Return**
+
+Returns error code if type conversion fails.
+
+
+.. c:function:: int nvme_uuid_from_string (const char *str, unsigned char uuid[NVME_UUID_LEN])
+
+   Return encoded UUID represenation of string UUID
+
+**Parameters**
+
+``const char *str``
+  Output string represenation of UUID
+
+``unsigned char uuid[NVME_UUID_LEN]``
+  Binary encoded input UUID
+
+**Return**
+
+Returns error code if type conversion fails.
+
+
+.. c:function:: int nvme_uuid_random (unsigned char uuid[NVME_UUID_LEN])
+
+   Generate random UUID
+
+**Parameters**
+
+``unsigned char uuid[NVME_UUID_LEN]``
+  Generated random UUID
+
+**Description**
+
+Generate random number according
+https://www.rfc-editor.org/rfc/rfc4122#section-4.4
+
+**Return**
+
+Returns error code if generating of random number fails.
+
+