nvme_spec.h File Reference

NVMe specification definitions. More...

Data Structures

union  spdk_nvme_cap_register
 
union  spdk_nvme_cc_register
 
union  spdk_nvme_csts_register
 
union  spdk_nvme_aqa_register
 
union  spdk_nvme_vs_register
 
union  spdk_nvme_cmbloc_register
 
union  spdk_nvme_cmbsz_register
 
union  spdk_nvme_cmbmsc_register
 
union  spdk_nvme_cmbsts_register
 
union  spdk_nvme_pmrcap_register
 
union  spdk_nvme_pmrctl_register
 
union  spdk_nvme_pmrsts_register
 
union  spdk_nvme_pmrebs_register
 
union  spdk_nvme_pmrswtp_register
 
union  spdk_nvme_pmrmscl_register
 
union  spdk_nvme_bpinfo_register
 Boot partition information. More...
 
union  spdk_nvme_bprsel_register
 Boot partition read select. More...
 
struct  spdk_nvme_registers
 
struct  spdk_nvme_sgl_descriptor
 
union  spdk_nvme_feat_arbitration
 Data used by Set Features/Get Features SPDK_NVME_FEAT_ARBITRATION. More...
 
union  spdk_nvme_feat_power_management
 Data used by Set Features/Get Features SPDK_NVME_FEAT_POWER_MANAGEMENT. More...
 
union  spdk_nvme_feat_lba_range_type
 Data used by Set Features/Get Features SPDK_NVME_FEAT_LBA_RANGE_TYPE. More...
 
union  spdk_nvme_feat_temperature_threshold
 Data used by Set Features/Get Features SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD. More...
 
union  spdk_nvme_feat_error_recovery
 Data used by Set Features/Get Features SPDK_NVME_FEAT_ERROR_RECOVERY. More...
 
union  spdk_nvme_feat_volatile_write_cache
 Data used by Set Features/Get Features SPDK_NVME_FEAT_VOLATILE_WRITE_CACHE. More...
 
union  spdk_nvme_feat_number_of_queues
 Data used by Set Features/Get Features SPDK_NVME_FEAT_NUMBER_OF_QUEUES. More...
 
union  spdk_nvme_feat_interrupt_coalescing
 Data used by Set Features/Get Features SPDK_NVME_FEAT_INTERRUPT_COALESCING. More...
 
union  spdk_nvme_feat_interrupt_vector_configuration
 Data used by Set Features/Get Features SPDK_NVME_FEAT_INTERRUPT_VECTOR_CONFIGURATION. More...
 
union  spdk_nvme_feat_write_atomicity
 Data used by Set Features/Get Features SPDK_NVME_FEAT_WRITE_ATOMICITY. More...
 
union  spdk_nvme_critical_warning_state
 
union  spdk_nvme_feat_async_event_configuration
 Data used by Set Features / Get Features SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION. More...
 
union  spdk_nvme_feat_autonomous_power_state_transition
 Data used by Set Features/Get Features SPDK_NVME_FEAT_AUTONOMOUS_POWER_STATE_TRANSITION. More...
 
union  spdk_nvme_feat_host_mem_buffer
 Data used by Set Features/Get Features SPDK_NVME_FEAT_HOST_MEM_BUFFER. More...
 
union  spdk_nvme_feat_keep_alive_timer
 Data used by Set Features/Get Features SPDK_NVME_FEAT_KEEP_ALIVE_TIMER. More...
 
union  spdk_nvme_feat_host_controlled_thermal_management
 Data used by Set Features/Get Features SPDK_NVME_FEAT_HOST_CONTROLLED_THERMAL_MANAGEMENT. More...
 
union  spdk_nvme_feat_non_operational_power_state_config
 Data used by Set Features/Get Features SPDK_NVME_FEAT_NON_OPERATIONAL_POWER_STATE_CONFIG. More...
 
union  spdk_nvme_feat_software_progress_marker
 Data used by Set Features/Get Features SPDK_NVME_FEAT_SOFTWARE_PROGRESS_MARKER. More...
 
union  spdk_nvme_feat_host_identifier
 Data used by Set Features/Get Features SPDK_NVME_FEAT_HOST_IDENTIFIER. More...
 
union  spdk_nvme_feat_reservation_notification_mask
 Data used by Set Features/Get Features SPDK_NVME_FEAT_HOST_RESERVE_MASK. More...
 
union  spdk_nvme_feat_reservation_persistence
 Data used by Set Features/Get Features SPDK_NVME_FEAT_HOST_RESERVE_PERSIST. More...
 
union  spdk_nvme_feat_fdp_cdw11
 Data used by Set Features/Get Features SPDK_NVME_FEAT_FDP. More...
 
union  spdk_nvme_feat_fdp_cdw12
 Data used by Set Features/Get Features SPDK_NVME_FEAT_FDP. More...
 
union  spdk_nvme_feat_fdp_events_cdw11
 Data used by Set Features/Get Features SPDK_NVME_FEAT_FDP_EVENTS. More...
 
union  spdk_nvme_feat_fdp_events_cdw12
 Data used by Set Feature SPDK_NVME_FEAT_FDP_EVENTS. More...
 
union  spdk_nvme_cmd_cdw10
 
union  spdk_nvme_cmd_cdw11
 
union  spdk_nvme_cmd_cdw12
 
union  spdk_nvme_cmd_cdw13
 
struct  spdk_nvme_cmd
 
struct  spdk_nvme_status
 
struct  spdk_nvme_cpl
 Completion queue entry. More...
 
struct  spdk_nvme_dsm_range
 Dataset Management range. More...
 
struct  spdk_nvme_scc_source_range
 Simple Copy Command source range. More...
 
struct  spdk_nvme_host_behavior
 
struct  spdk_nvme_fdp_event_desc
 Supported FDP event descriptor. More...
 
struct  spdk_nvme_fdp_ruhs_desc
 Reclaim unit handle status descriptor. More...
 
struct  spdk_nvme_fdp_ruhs
 Reclaim unit handle status. More...
 
struct  spdk_nvme_power_state
 
struct  spdk_nvme_cdata_nvmf_specific
 Identify Controller data NVMe over Fabrics-specific fields. More...
 
struct  spdk_nvme_cdata_sgls
 Identify Controller data SGL support. More...
 
struct  spdk_nvme_cdata_oncs
 Identify Controller data Optional NVM Command Support. More...
 
struct  spdk_nvme_cdata_oacs
 
struct  spdk_nvme_cdata_fuses
 
struct  spdk_nvme_cdata_oaes
 
union  spdk_nvme_cdata_ctratt
 
struct  spdk_nvme_ctrlr_data
 
struct  spdk_nvme_zns_ctrlr_data
 
struct  spdk_nvme_primary_ctrl_capabilities
 
struct  spdk_nvme_secondary_ctrl_entry
 
struct  spdk_nvme_secondary_ctrl_list
 
struct  spdk_nvme_ns_data
 
struct  spdk_nvme_nvm_ctrlr_data
 
struct  spdk_nvme_zns_ns_data
 
struct  spdk_nvme_iocs_vector
 IO command set vector for IDENTIFY_IOCS. More...
 
struct  spdk_nvme_reservation_acquire_data
 
struct  spdk_nvme_reservation_status_data
 
struct  spdk_nvme_reservation_status_extended_data
 
struct  spdk_nvme_registered_ctrlr_data
 
struct  spdk_nvme_registered_ctrlr_extended_data
 
struct  spdk_nvme_reservation_register_data
 
struct  spdk_nvme_reservation_key_data
 
struct  spdk_nvme_reservation_notification_log
 Reservation notification log. More...
 
struct  spdk_nvme_error_information_entry
 Error information log page (SPDK_NVME_LOG_ERROR) More...
 
struct  spdk_nvme_health_information_page
 SMART / health information page (SPDK_NVME_LOG_HEALTH_INFORMATION) More...
 
struct  spdk_nvme_cmds_and_effect_entry
 
struct  spdk_nvme_cmds_and_effect_log_page
 
struct  spdk_nvme_telemetry_log_page_hdr
 
struct  spdk_nvme_sanitize_status_sstat
 Sanitize status sstat field. More...
 
struct  spdk_nvme_sanitize_status_log_page
 Sanitize log page. More...
 
union  spdk_nvme_async_event_completion
 Asynchronous Event Request Completion. More...
 
struct  spdk_nvme_firmware_page
 Firmware slot information page (SPDK_NVME_LOG_FIRMWARE_SLOT) More...
 
struct  spdk_nvme_ana_page
 Asymmetric Namespace Access page (SPDK_NVME_LOG_ASYMMETRIC_NAMESPACE_ACCESS) More...
 
struct  spdk_nvme_ana_group_descriptor
 
struct  spdk_nvme_fdp_ruh_descriptor
 
struct  spdk_nvme_fdp_cfg_descriptor
 
struct  spdk_nvme_fdp_cfg_log_page
 
struct  spdk_nvme_fdp_ruhu_descriptor
 
struct  spdk_nvme_fdp_ruhu_log_page
 
struct  spdk_nvme_fdp_stats_log_page
 
struct  spdk_nvme_fdp_event_media_reallocated
 
struct  spdk_nvme_fdp_event
 
struct  spdk_nvme_fdp_events_log_page
 
struct  spdk_nvme_ns_list
 
struct  spdk_nvme_ns_id_desc
 
struct  spdk_nvme_ctrlr_list
 
struct  spdk_nvme_format
 
struct  spdk_nvme_protection_info
 
struct  spdk_nvme_sanitize
 
struct  spdk_nvme_fw_commit
 Parameters for SPDK_NVME_OPC_FIRMWARE_COMMIT cdw10. More...
 
struct  spdk_nvme_zns_zone_desc
 
struct  spdk_nvme_zns_zone_report
 
struct  spdk_nvme_ns_identify_directive_param
 
struct  spdk_nvme_ns_streams_data
 
struct  spdk_nvme_ns_streams_status
 

Macros

#define SPDK_NVME_GLOBAL_NS_TAG   ((uint32_t)0xFFFFFFFF)
 Use to mark a command to apply to all namespaces, or to retrieve global log pages.
 
#define SPDK_NVME_MAX_IO_QUEUES   (65535)
 
#define SPDK_NVME_QUEUE_MIN_ENTRIES   (2)
 
#define SPDK_NVME_ADMIN_QUEUE_MIN_ENTRIES   SPDK_NVME_QUEUE_MIN_ENTRIES
 
#define SPDK_NVME_ADMIN_QUEUE_MAX_ENTRIES   4096
 
#define SPDK_NVME_ADMIN_QUEUE_QUIRK_ENTRIES_MULTIPLE   64
 
#define SPDK_NVME_IO_QUEUE_MIN_ENTRIES   SPDK_NVME_QUEUE_MIN_ENTRIES
 
#define SPDK_NVME_IO_QUEUE_MAX_ENTRIES   65536
 
#define SPDK_NVME_DATASET_MANAGEMENT_MAX_RANGES   256
 Indicates the maximum number of range sets that may be specified in the dataset management command.
 
#define SPDK_NVME_DATASET_MANAGEMENT_RANGE_MAX_BLOCKS   0xFFFFFFFFu
 Maximum number of blocks that may be specified in a single dataset management range.
 
#define SPDK_NVME_MAX_CHANGED_NAMESPACES   1024
 Maximum number of entries in the log page of Changed Namespace List.
 
#define SPDK_NVME_DOORBELL_REGISTER_SIZE   4
 
#define SPDK_NVME_CAP_CSS_NVM   (1u << SPDK_NVME_CC_CSS_NVM)
 NVM command set supported.
 
#define SPDK_NVME_CAP_CSS_IOCS   (1u << SPDK_NVME_CC_CSS_IOCS)
 One or more I/O Command sets supported.
 
#define SPDK_NVME_CAP_CSS_NOIO   (1u << SPDK_NVME_CC_CSS_NOIO)
 No I/O, only admin.
 
#define SPDK_NVME_VERSION(mjr, mnr, ter)
 Generate raw version in the same format as spdk_nvme_vs_register for comparison. More...
 
#define SPDK_NVME_NSSR_VALUE   0x4E564D65
 Value to write to NSSR to indicate a NVM subsystem reset ("NVMe")
 
#define SPDK_NVME_CREATE_IO_SQ_QPRIO_MASK   0x3
 
#define SPDK_NVME_ARBITRATION_BURST_UNLIMITED   0x7
 
#define SPDK_NVME_MAX_OPC   0xff
 
#define SPDK_NVME_CTRLR_SN_LEN   20
 
#define SPDK_NVME_CTRLR_MN_LEN   40
 
#define SPDK_NVME_CTRLR_FR_LEN   8
 
#define SPDK_NVME_CTRLR_MEGCAP_LEN   16
 
#define SPDK_NVME_MAXDNA_FIELD_SIZE   16
 
#define SPDK_NVME_NQN_FIELD_SIZE   256
 
#define SPDK_NVME_REGISTRATION_PREEMPTED_MASK   (1U << 1)
 
#define SPDK_NVME_RESERVATION_RELEASED_MASK   (1U << 2)
 
#define SPDK_NVME_RESERVATION_PREEMPTED_MASK   (1U << 3)
 
#define spdk_nvme_log_page_is_vendor_specific(lid)   ((lid) >= SPDK_NVME_LOG_VENDOR_SPECIFIC_START)
 
#define spdk_nvme_cpl_is_error(cpl)
 
#define spdk_nvme_cpl_is_success(cpl)   (!spdk_nvme_cpl_is_error(cpl))
 
#define spdk_nvme_cpl_is_pi_error(cpl)
 
#define spdk_nvme_cpl_is_abort_success(cpl)    (spdk_nvme_cpl_is_success(cpl) && !((cpl)->cdw0 & 1U))
 
#define spdk_nvme_cpl_is_path_error(cpl)    ((cpl)->status.sct == SPDK_NVME_SCT_PATH)
 
#define spdk_nvme_cpl_is_ana_error(cpl)
 
#define spdk_nvme_cpl_is_aborted_sq_deletion(cpl)
 
#define spdk_nvme_cpl_is_aborted_by_request(cpl)
 
#define SPDK_NVME_IO_FLAGS_FUSE_FIRST   (SPDK_NVME_CMD_FUSE_FIRST << 0)
 Set fused operation.
 
#define SPDK_NVME_IO_FLAGS_FUSE_SECOND   (SPDK_NVME_CMD_FUSE_SECOND << 0)
 
#define SPDK_NVME_IO_FLAGS_FUSE_MASK   (SPDK_NVME_CMD_FUSE_MASK << 0)
 
#define SPDK_NVME_IO_FLAGS_DIRECTIVE(dtype)   (dtype << 20)
 For enabling directive types on write-oriented commands.
 
#define SPDK_NVME_IO_FLAGS_STREAMS_DIRECTIVE    SPDK_NVME_IO_FLAGS_DIRECTIVE(SPDK_NVME_DIRECTIVE_TYPE_STREAMS)
 
#define SPDK_NVME_IO_FLAGS_DATA_PLACEMENT_DIRECTIVE    SPDK_NVME_IO_FLAGS_DIRECTIVE(SPDK_NVME_DIRECTIVE_TYPE_DATA_PLACEMENT)
 
#define SPDK_NVME_IO_FLAGS_ZONE_APPEND_PIREMAP   (1U << 25)
 Zone append specific, determines the contents of the reference tag written to the media.
 
#define SPDK_NVME_IO_FLAGS_PRCHK_REFTAG   (1U << 26)
 Enable protection information checking of the Logical Block Reference Tag field.
 
#define SPDK_NVME_IO_FLAGS_PRCHK_APPTAG   (1U << 27)
 Enable protection information checking of the Application Tag field.
 
#define SPDK_NVME_IO_FLAGS_PRCHK_GUARD   (1U << 28)
 Enable protection information checking of the Guard field.
 
#define SPDK_NVME_IO_FLAGS_PRACT   (1U << 29)
 The protection information is stripped or inserted when set this bit.
 
#define SPDK_NVME_IO_FLAGS_FORCE_UNIT_ACCESS   (1U << 30)
 
#define SPDK_NVME_IO_FLAGS_LIMITED_RETRY   (1U << 31)
 
#define SPDK_NVME_IO_FLAGS_VALID_MASK   0xFFFF0003
 Mask of valid io flags mask.
 
#define SPDK_NVME_IO_FLAGS_CDW12_MASK   0xFFFF0000
 
#define SPDK_NVME_IDENTIFY_BUFLEN   4096
 Identify command buffer response size.
 

Enumerations

enum  spdk_nvme_cc_css { SPDK_NVME_CC_CSS_NVM = 0x0 , SPDK_NVME_CC_CSS_IOCS = 0x6 , SPDK_NVME_CC_CSS_NOIO = 0x7 }
 I/O Command Set Selected. More...
 
enum  spdk_nvme_shn_value { SPDK_NVME_SHN_NORMAL = 0x1 , SPDK_NVME_SHN_ABRUPT = 0x2 }
 
enum  spdk_nvme_shst_value { SPDK_NVME_SHST_NORMAL = 0x0 , SPDK_NVME_SHST_OCCURRING = 0x1 , SPDK_NVME_SHST_COMPLETE = 0x2 }
 
enum  spdk_nvme_brs_value { SPDK_NVME_BRS_NO_READ = 0x0 , SPDK_NVME_BRS_READ_IN_PROGRESS = 0x1 , SPDK_NVME_BRS_READ_SUCCESS = 0x2 , SPDK_NVME_BRS_READ_ERROR = 0x3 }
 Boot read status values.
 
enum  spdk_nvme_sgl_descriptor_type {
  SPDK_NVME_SGL_TYPE_DATA_BLOCK = 0x0 , SPDK_NVME_SGL_TYPE_BIT_BUCKET = 0x1 , SPDK_NVME_SGL_TYPE_SEGMENT = 0x2 , SPDK_NVME_SGL_TYPE_LAST_SEGMENT = 0x3 ,
  SPDK_NVME_SGL_TYPE_KEYED_DATA_BLOCK = 0x4 , SPDK_NVME_SGL_TYPE_TRANSPORT_DATA_BLOCK = 0x5 , SPDK_NVME_SGL_TYPE_VENDOR_SPECIFIC = 0xF
}
 
enum  spdk_nvme_sgl_descriptor_subtype { SPDK_NVME_SGL_SUBTYPE_ADDRESS = 0x0 , SPDK_NVME_SGL_SUBTYPE_OFFSET = 0x1 , SPDK_NVME_SGL_SUBTYPE_TRANSPORT = 0xa }
 
enum  spdk_nvme_psdt_value { SPDK_NVME_PSDT_PRP = 0x0 , SPDK_NVME_PSDT_SGL_MPTR_CONTIG = 0x1 , SPDK_NVME_PSDT_SGL_MPTR_SGL = 0x2 , SPDK_NVME_PSDT_RESERVED = 0x3 }
 
enum  spdk_nvme_qprio { SPDK_NVME_QPRIO_URGENT = 0x0 , SPDK_NVME_QPRIO_HIGH = 0x1 , SPDK_NVME_QPRIO_MEDIUM = 0x2 , SPDK_NVME_QPRIO_LOW = 0x3 }
 Submission queue priority values for Create I/O Submission Queue Command. More...
 
enum  spdk_nvme_cap_ams { SPDK_NVME_CAP_AMS_WRR = 0x1 , SPDK_NVME_CAP_AMS_VS = 0x2 }
 Optional Arbitration Mechanism Supported by the controller. More...
 
enum  spdk_nvme_cc_ams { SPDK_NVME_CC_AMS_RR = 0x0 , SPDK_NVME_CC_AMS_WRR = 0x1 , SPDK_NVME_CC_AMS_VS = 0x7 }
 Arbitration Mechanism Selected to the controller. More...
 
enum  spdk_nvme_cmd_fuse { SPDK_NVME_CMD_FUSE_NONE = 0x0 , SPDK_NVME_CMD_FUSE_FIRST = 0x1 , SPDK_NVME_CMD_FUSE_SECOND = 0x2 , SPDK_NVME_CMD_FUSE_MASK = 0x3 }
 Fused Operation. More...
 
enum  spdk_nvme_status_code_type {
  SPDK_NVME_SCT_GENERIC = 0x0 , SPDK_NVME_SCT_COMMAND_SPECIFIC = 0x1 , SPDK_NVME_SCT_MEDIA_ERROR = 0x2 , SPDK_NVME_SCT_PATH = 0x3 ,
  SPDK_NVME_SCT_VENDOR_SPECIFIC = 0x7
}
 Status code types.
 
enum  spdk_nvme_generic_command_status_code {
  SPDK_NVME_SC_SUCCESS = 0x00 , SPDK_NVME_SC_INVALID_OPCODE = 0x01 , SPDK_NVME_SC_INVALID_FIELD = 0x02 , SPDK_NVME_SC_COMMAND_ID_CONFLICT = 0x03 ,
  SPDK_NVME_SC_DATA_TRANSFER_ERROR = 0x04 , SPDK_NVME_SC_ABORTED_POWER_LOSS = 0x05 , SPDK_NVME_SC_INTERNAL_DEVICE_ERROR = 0x06 , SPDK_NVME_SC_ABORTED_BY_REQUEST = 0x07 ,
  SPDK_NVME_SC_ABORTED_SQ_DELETION = 0x08 , SPDK_NVME_SC_ABORTED_FAILED_FUSED = 0x09 , SPDK_NVME_SC_ABORTED_MISSING_FUSED = 0x0a , SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT = 0x0b ,
  SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR = 0x0c , SPDK_NVME_SC_INVALID_SGL_SEG_DESCRIPTOR = 0x0d , SPDK_NVME_SC_INVALID_NUM_SGL_DESCIRPTORS = 0x0e , SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID = 0x0f ,
  SPDK_NVME_SC_METADATA_SGL_LENGTH_INVALID = 0x10 , SPDK_NVME_SC_SGL_DESCRIPTOR_TYPE_INVALID = 0x11 , SPDK_NVME_SC_INVALID_CONTROLLER_MEM_BUF = 0x12 , SPDK_NVME_SC_INVALID_PRP_OFFSET = 0x13 ,
  SPDK_NVME_SC_ATOMIC_WRITE_UNIT_EXCEEDED = 0x14 , SPDK_NVME_SC_OPERATION_DENIED = 0x15 , SPDK_NVME_SC_INVALID_SGL_OFFSET = 0x16 , SPDK_NVME_SC_HOSTID_INCONSISTENT_FORMAT = 0x18 ,
  SPDK_NVME_SC_KEEP_ALIVE_EXPIRED = 0x19 , SPDK_NVME_SC_KEEP_ALIVE_INVALID = 0x1a , SPDK_NVME_SC_ABORTED_PREEMPT = 0x1b , SPDK_NVME_SC_SANITIZE_FAILED = 0x1c ,
  SPDK_NVME_SC_SANITIZE_IN_PROGRESS = 0x1d , SPDK_NVME_SC_SGL_DATA_BLOCK_GRANULARITY_INVALID = 0x1e , SPDK_NVME_SC_COMMAND_INVALID_IN_CMB = 0x1f , SPDK_NVME_SC_COMMAND_NAMESPACE_IS_PROTECTED = 0x20 ,
  SPDK_NVME_SC_COMMAND_INTERRUPTED = 0x21 , SPDK_NVME_SC_COMMAND_TRANSIENT_TRANSPORT_ERROR = 0x22 , SPDK_NVME_SC_COMMAND_PROHIBITED_BY_LOCKDOWN = 0x23 , SPDK_NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY = 0x24 ,
  SPDK_NVME_SC_FDP_DISABLED = 0x29 , SPDK_NVME_SC_INVALID_PLACEMENT_HANDLE_LIST = 0x2A , SPDK_NVME_SC_LBA_OUT_OF_RANGE = 0x80 , SPDK_NVME_SC_CAPACITY_EXCEEDED = 0x81 ,
  SPDK_NVME_SC_NAMESPACE_NOT_READY = 0x82 , SPDK_NVME_SC_RESERVATION_CONFLICT = 0x83 , SPDK_NVME_SC_FORMAT_IN_PROGRESS = 0x84 , SPDK_NVME_SC_INVALID_VALUE_SIZE = 0x85 ,
  SPDK_NVME_SC_INVALID_KEY_SIZE = 0x86 , SPDK_NVME_SC_KV_KEY_DOES_NOT_EXIST = 0x87 , SPDK_NVME_SC_UNRECOVERED_ERROR = 0x88 , SPDK_NVME_SC_KEY_EXISTS = 0x89
}
 Generic command status codes.
 
enum  spdk_nvme_command_specific_status_code {
  SPDK_NVME_SC_COMPLETION_QUEUE_INVALID = 0x00 , SPDK_NVME_SC_INVALID_QUEUE_IDENTIFIER = 0x01 , SPDK_NVME_SC_INVALID_QUEUE_SIZE = 0x02 , SPDK_NVME_SC_ABORT_COMMAND_LIMIT_EXCEEDED = 0x03 ,
  SPDK_NVME_SC_ASYNC_EVENT_REQUEST_LIMIT_EXCEEDED = 0x05 , SPDK_NVME_SC_INVALID_FIRMWARE_SLOT = 0x06 , SPDK_NVME_SC_INVALID_FIRMWARE_IMAGE = 0x07 , SPDK_NVME_SC_INVALID_INTERRUPT_VECTOR = 0x08 ,
  SPDK_NVME_SC_INVALID_LOG_PAGE = 0x09 , SPDK_NVME_SC_INVALID_FORMAT = 0x0a , SPDK_NVME_SC_FIRMWARE_REQ_CONVENTIONAL_RESET = 0x0b , SPDK_NVME_SC_INVALID_QUEUE_DELETION = 0x0c ,
  SPDK_NVME_SC_FEATURE_ID_NOT_SAVEABLE = 0x0d , SPDK_NVME_SC_FEATURE_NOT_CHANGEABLE = 0x0e , SPDK_NVME_SC_FEATURE_NOT_NAMESPACE_SPECIFIC = 0x0f , SPDK_NVME_SC_FIRMWARE_REQ_NVM_RESET = 0x10 ,
  SPDK_NVME_SC_FIRMWARE_REQ_RESET = 0x11 , SPDK_NVME_SC_FIRMWARE_REQ_MAX_TIME_VIOLATION = 0x12 , SPDK_NVME_SC_FIRMWARE_ACTIVATION_PROHIBITED = 0x13 , SPDK_NVME_SC_OVERLAPPING_RANGE = 0x14 ,
  SPDK_NVME_SC_NAMESPACE_INSUFFICIENT_CAPACITY = 0x15 , SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE = 0x16 , SPDK_NVME_SC_NAMESPACE_ALREADY_ATTACHED = 0x18 , SPDK_NVME_SC_NAMESPACE_IS_PRIVATE = 0x19 ,
  SPDK_NVME_SC_NAMESPACE_NOT_ATTACHED = 0x1a , SPDK_NVME_SC_THINPROVISIONING_NOT_SUPPORTED = 0x1b , SPDK_NVME_SC_CONTROLLER_LIST_INVALID = 0x1c , SPDK_NVME_SC_DEVICE_SELF_TEST_IN_PROGRESS = 0x1d ,
  SPDK_NVME_SC_BOOT_PARTITION_WRITE_PROHIBITED = 0x1e , SPDK_NVME_SC_INVALID_CTRLR_ID = 0x1f , SPDK_NVME_SC_INVALID_SECONDARY_CTRLR_STATE = 0x20 , SPDK_NVME_SC_INVALID_NUM_CTRLR_RESOURCES = 0x21 ,
  SPDK_NVME_SC_INVALID_RESOURCE_ID = 0x22 , SPDK_NVME_SC_SANITIZE_PROHIBITED = 0x23 , SPDK_NVME_SC_ANA_GROUP_IDENTIFIER_INVALID = 0x24 , SPDK_NVME_SC_ANA_ATTACH_FAILED = 0x25 ,
  SPDK_NVME_SC_INSUFFICIENT_CAPACITY = 0x26 , SPDK_NVME_SC_NAMESPACE_ATTACH_LIMIT_EXCEEDED = 0x27 , SPDK_NVME_SC_PROHIBIT_CMD_EXEC_NOT_SUPPORTED = 0x28 , SPDK_NVME_SC_IOCS_NOT_SUPPORTED = 0x29 ,
  SPDK_NVME_SC_IOCS_NOT_ENABLED = 0x2a , SPDK_NVME_SC_IOCS_COMBINATION_REJECTED = 0x2b , SPDK_NVME_SC_INVALID_IOCS = 0x2c , SPDK_NVME_SC_IDENTIFIER_UNAVAILABLE = 0x2d ,
  SPDK_NVME_SC_STREAM_RESOURCE_ALLOCATION_FAILED = 0x7f , SPDK_NVME_SC_CONFLICTING_ATTRIBUTES = 0x80 , SPDK_NVME_SC_INVALID_PROTECTION_INFO = 0x81 , SPDK_NVME_SC_ATTEMPTED_WRITE_TO_RO_RANGE = 0x82 ,
  SPDK_NVME_SC_CMD_SIZE_LIMIT_SIZE_EXCEEDED = 0x83 , SPDK_NVME_SC_ZONED_BOUNDARY_ERROR = 0xb8 , SPDK_NVME_SC_ZONE_IS_FULL = 0xb9 , SPDK_NVME_SC_ZONE_IS_READ_ONLY = 0xba ,
  SPDK_NVME_SC_ZONE_IS_OFFLINE = 0xbb , SPDK_NVME_SC_ZONE_INVALID_WRITE = 0xbc , SPDK_NVME_SC_TOO_MANY_ACTIVE_ZONES = 0xbd , SPDK_NVME_SC_TOO_MANY_OPEN_ZONES = 0xbe ,
  SPDK_NVME_SC_INVALID_ZONE_STATE_TRANSITION = 0xbf
}
 Command specific status codes.
 
enum  spdk_nvme_media_error_status_code {
  SPDK_NVME_SC_WRITE_FAULTS = 0x80 , SPDK_NVME_SC_UNRECOVERED_READ_ERROR = 0x81 , SPDK_NVME_SC_GUARD_CHECK_ERROR = 0x82 , SPDK_NVME_SC_APPLICATION_TAG_CHECK_ERROR = 0x83 ,
  SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR = 0x84 , SPDK_NVME_SC_COMPARE_FAILURE = 0x85 , SPDK_NVME_SC_ACCESS_DENIED = 0x86 , SPDK_NVME_SC_DEALLOCATED_OR_UNWRITTEN_BLOCK = 0x87 ,
  SPDK_NVME_SC_END_TO_END_STORAGE_TAG_CHECK_ERROR = 0x88
}
 Media error status codes.
 
enum  spdk_nvme_path_status_code {
  SPDK_NVME_SC_INTERNAL_PATH_ERROR = 0x00 , SPDK_NVME_SC_ASYMMETRIC_ACCESS_PERSISTENT_LOSS = 0x01 , SPDK_NVME_SC_ASYMMETRIC_ACCESS_INACCESSIBLE = 0x02 , SPDK_NVME_SC_ASYMMETRIC_ACCESS_TRANSITION = 0x03 ,
  SPDK_NVME_SC_CONTROLLER_PATH_ERROR = 0x60 , SPDK_NVME_SC_HOST_PATH_ERROR = 0x70 , SPDK_NVME_SC_ABORTED_BY_HOST = 0x71
}
 Path related status codes.
 
enum  spdk_nvme_admin_opcode {
  SPDK_NVME_OPC_DELETE_IO_SQ = 0x00 , SPDK_NVME_OPC_CREATE_IO_SQ = 0x01 , SPDK_NVME_OPC_GET_LOG_PAGE = 0x02 , SPDK_NVME_OPC_DELETE_IO_CQ = 0x04 ,
  SPDK_NVME_OPC_CREATE_IO_CQ = 0x05 , SPDK_NVME_OPC_IDENTIFY = 0x06 , SPDK_NVME_OPC_ABORT = 0x08 , SPDK_NVME_OPC_SET_FEATURES = 0x09 ,
  SPDK_NVME_OPC_GET_FEATURES = 0x0a , SPDK_NVME_OPC_ASYNC_EVENT_REQUEST = 0x0c , SPDK_NVME_OPC_NS_MANAGEMENT = 0x0d , SPDK_NVME_OPC_FIRMWARE_COMMIT = 0x10 ,
  SPDK_NVME_OPC_FIRMWARE_IMAGE_DOWNLOAD = 0x11 , SPDK_NVME_OPC_DEVICE_SELF_TEST = 0x14 , SPDK_NVME_OPC_NS_ATTACHMENT = 0x15 , SPDK_NVME_OPC_KEEP_ALIVE = 0x18 ,
  SPDK_NVME_OPC_DIRECTIVE_SEND = 0x19 , SPDK_NVME_OPC_DIRECTIVE_RECEIVE = 0x1a , SPDK_NVME_OPC_VIRTUALIZATION_MANAGEMENT = 0x1c , SPDK_NVME_OPC_NVME_MI_SEND = 0x1d ,
  SPDK_NVME_OPC_NVME_MI_RECEIVE = 0x1e , SPDK_NVME_OPC_DOORBELL_BUFFER_CONFIG = 0x7c , SPDK_NVME_OPC_FORMAT_NVM = 0x80 , SPDK_NVME_OPC_SECURITY_SEND = 0x81 ,
  SPDK_NVME_OPC_SECURITY_RECEIVE = 0x82 , SPDK_NVME_OPC_SANITIZE = 0x84 , SPDK_NVME_OPC_GET_LBA_STATUS = 0x86
}
 Admin opcodes.
 
enum  spdk_nvme_nvm_opcode {
  SPDK_NVME_OPC_FLUSH = 0x00 , SPDK_NVME_OPC_WRITE = 0x01 , SPDK_NVME_OPC_READ = 0x02 , SPDK_NVME_OPC_WRITE_UNCORRECTABLE = 0x04 ,
  SPDK_NVME_OPC_COMPARE = 0x05 , SPDK_NVME_OPC_WRITE_ZEROES = 0x08 , SPDK_NVME_OPC_DATASET_MANAGEMENT = 0x09 , SPDK_NVME_OPC_VERIFY = 0x0c ,
  SPDK_NVME_OPC_RESERVATION_REGISTER = 0x0d , SPDK_NVME_OPC_RESERVATION_REPORT = 0x0e , SPDK_NVME_OPC_RESERVATION_ACQUIRE = 0x11 , SPDK_NVME_OPC_IO_MANAGEMENT_RECEIVE = 0x12 ,
  SPDK_NVME_OPC_RESERVATION_RELEASE = 0x15 , SPDK_NVME_OPC_COPY = 0x19 , SPDK_NVME_OPC_IO_MANAGEMENT_SEND = 0x1D
}
 NVM command set opcodes.
 
enum  spdk_nvme_zns_opcode { SPDK_NVME_OPC_ZONE_MGMT_SEND = 0x79 , SPDK_NVME_OPC_ZONE_MGMT_RECV = 0x7a , SPDK_NVME_OPC_ZONE_APPEND = 0x7d }
 Zoned Namespace command set opcodes. More...
 
enum  spdk_nvme_data_transfer { SPDK_NVME_DATA_NONE = 0 , SPDK_NVME_DATA_HOST_TO_CONTROLLER = 1 , SPDK_NVME_DATA_CONTROLLER_TO_HOST = 2 , SPDK_NVME_DATA_BIDIRECTIONAL = 3 }
 Data transfer (bits 1:0) of an NVMe opcode. More...
 
enum  spdk_nvme_fdp_mgmt_recv_mo { SPDK_NVME_FDP_IO_MGMT_RECV_NA = 0x00 , SPDK_NVME_FDP_IO_MGMT_RECV_RUHS = 0x01 , SPDK_NVME_FDP_IO_MGMT_RECV_VS = 0xFF }
 Management operation to perform for IO management receive.
 
enum  spdk_nvme_fdp_mgmt_send_mo { SPDK_NVME_FDP_IO_MGMT_SEND_NA = 0x00 , SPDK_NVME_FDP_IO_MGMT_SEND_RUHU = 0x01 , SPDK_NVME_FDP_IO_MGMT_SEND_VS = 0xFF }
 Management operation to perform for IO management send.
 
enum  spdk_nvme_feat {
  SPDK_NVME_FEAT_ARBITRATION = 0x01 , SPDK_NVME_FEAT_POWER_MANAGEMENT = 0x02 , SPDK_NVME_FEAT_LBA_RANGE_TYPE = 0x03 , SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD = 0x04 ,
  SPDK_NVME_FEAT_ERROR_RECOVERY = 0x05 , SPDK_NVME_FEAT_VOLATILE_WRITE_CACHE = 0x06 , SPDK_NVME_FEAT_NUMBER_OF_QUEUES = 0x07 , SPDK_NVME_FEAT_INTERRUPT_COALESCING = 0x08 ,
  SPDK_NVME_FEAT_INTERRUPT_VECTOR_CONFIGURATION = 0x09 , SPDK_NVME_FEAT_WRITE_ATOMICITY = 0x0A , SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION = 0x0B , SPDK_NVME_FEAT_AUTONOMOUS_POWER_STATE_TRANSITION = 0x0C ,
  SPDK_NVME_FEAT_HOST_MEM_BUFFER = 0x0D , SPDK_NVME_FEAT_TIMESTAMP = 0x0E , SPDK_NVME_FEAT_KEEP_ALIVE_TIMER = 0x0F , SPDK_NVME_FEAT_HOST_CONTROLLED_THERMAL_MANAGEMENT = 0x10 ,
  SPDK_NVME_FEAT_NON_OPERATIONAL_POWER_STATE_CONFIG = 0x11 , SPDK_NVME_FEAT_READ_RECOVERY_LEVEL_CONFIG = 0x12 , SPDK_NVME_FEAT_PREDICTABLE_LATENCY_MODE_CONFIG = 0x13 , SPDK_NVME_FEAT_PREDICTABLE_LATENCY_MODE_WINDOW = 0x14 ,
  SPDK_NVME_FEAT_LBA_STATUS_INFORMATION_ATTRIBUTES = 0x15 , SPDK_NVME_FEAT_HOST_BEHAVIOR_SUPPORT = 0x16 , SPDK_NVME_FEAT_SANITIZE_CONFIG = 0x17 , SPDK_NVME_FEAT_ENDURANCE_GROUP_EVENT = 0x18 ,
  SPDK_NVME_FEAT_IO_COMMAND_SET_PROFILE = 0x19 , SPDK_NVME_FEAT_SPINUP_CONTROL = 0x1A , SPDK_NVME_FEAT_FDP = 0x1D , SPDK_NVME_FEAT_FDP_EVENTS = 0x1E ,
  SPDK_NVME_FEAT_ENHANCED_CONTROLLER_METADATA = 0x7D , SPDK_NVME_FEAT_CONTROLLER_METADATA = 0x7E , SPDK_NVME_FEAT_NAMESPACE_METADATA = 0x7F , SPDK_NVME_FEAT_SOFTWARE_PROGRESS_MARKER = 0x80 ,
  SPDK_NVME_FEAT_HOST_IDENTIFIER = 0x81 , SPDK_NVME_FEAT_HOST_RESERVE_MASK = 0x82 , SPDK_NVME_FEAT_HOST_RESERVE_PERSIST = 0x83 , SPDK_NVME_FEAT_NAMESPACE_WRITE_PROTECTION_CONFIG = 0x84
}
 
enum  spdk_nvme_dsm_attribute { SPDK_NVME_DSM_ATTR_INTEGRAL_READ = 0x1 , SPDK_NVME_DSM_ATTR_INTEGRAL_WRITE = 0x2 , SPDK_NVME_DSM_ATTR_DEALLOCATE = 0x4 }
 Bit set of attributes for DATASET MANAGEMENT commands.
 
enum  spdk_nvme_identify_cns {
  SPDK_NVME_IDENTIFY_NS = 0x00 , SPDK_NVME_IDENTIFY_CTRLR = 0x01 , SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST = 0x02 , SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST = 0x03 ,
  SPDK_NVME_IDENTIFY_NS_IOCS = 0x05 , SPDK_NVME_IDENTIFY_CTRLR_IOCS = 0x06 , SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST_IOCS = 0x07 , SPDK_NVME_IDENTIFY_ALLOCATED_NS_LIST = 0x10 ,
  SPDK_NVME_IDENTIFY_NS_ALLOCATED = 0x11 , SPDK_NVME_IDENTIFY_NS_ATTACHED_CTRLR_LIST = 0x12 , SPDK_NVME_IDENTIFY_CTRLR_LIST = 0x13 , SPDK_NVME_IDENTIFY_PRIMARY_CTRLR_CAP = 0x14 ,
  SPDK_NVME_IDENTIFY_SECONDARY_CTRLR_LIST = 0x15 , SPDK_NVME_IDENTIFY_ALLOCATED_NS_LIST_IOCS = 0x1a , SPDK_NVME_IDENTIFY_NS_ALLOCATED_IOCS = 0x1b , SPDK_NVME_IDENTIFY_IOCS = 0x1c
}
 Identify command CNS value. More...
 
enum  spdk_nvmf_ctrlr_model { SPDK_NVMF_CTRLR_MODEL_DYNAMIC = 0 , SPDK_NVMF_CTRLR_MODEL_STATIC = 1 }
 NVMe over Fabrics controller model. More...
 
enum  spdk_nvme_sgls_supported { SPDK_NVME_SGLS_NOT_SUPPORTED = 0 , SPDK_NVME_SGLS_SUPPORTED = 1 , SPDK_NVME_SGLS_SUPPORTED_DWORD_ALIGNED = 2 }
 Identify Controller data sgls.supported values. More...
 
enum  spdk_nvme_flush_broadcast { SPDK_NVME_FLUSH_BROADCAST_NOT_INDICATED = 0 , SPDK_NVME_FLUSH_BROADCAST_NOT_SUPPORTED = 2 , SPDK_NVME_FLUSH_BROADCAST_SUPPORTED = 3 }
 Identify Controller data vwc.flush_broadcast values. More...
 
enum  spdk_nvme_dealloc_logical_block_read_value { SPDK_NVME_DEALLOC_NOT_REPORTED = 0 , SPDK_NVME_DEALLOC_READ_00 = 1 , SPDK_NVME_DEALLOC_READ_FF = 2 }
 Deallocated logical block features - read value. More...
 
enum  spdk_nvme_reservation_type {
  SPDK_NVME_RESERVE_WRITE_EXCLUSIVE = 0x1 , SPDK_NVME_RESERVE_EXCLUSIVE_ACCESS = 0x2 , SPDK_NVME_RESERVE_WRITE_EXCLUSIVE_REG_ONLY = 0x3 , SPDK_NVME_RESERVE_EXCLUSIVE_ACCESS_REG_ONLY = 0x4 ,
  SPDK_NVME_RESERVE_WRITE_EXCLUSIVE_ALL_REGS = 0x5 , SPDK_NVME_RESERVE_EXCLUSIVE_ACCESS_ALL_REGS = 0x6
}
 Reservation Type Encoding.
 
enum  spdk_nvme_reservation_acquire_action { SPDK_NVME_RESERVE_ACQUIRE = 0x0 , SPDK_NVME_RESERVE_PREEMPT = 0x1 , SPDK_NVME_RESERVE_PREEMPT_ABORT = 0x2 }
 Reservation Acquire action.
 
enum  spdk_nvme_reservation_register_cptpl { SPDK_NVME_RESERVE_PTPL_NO_CHANGES = 0x0 , SPDK_NVME_RESERVE_PTPL_CLEAR_POWER_ON = 0x2 , SPDK_NVME_RESERVE_PTPL_PERSIST_POWER_LOSS = 0x3 }
 Change persist through power loss state for Reservation Register command.
 
enum  spdk_nvme_reservation_register_action { SPDK_NVME_RESERVE_REGISTER_KEY = 0x0 , SPDK_NVME_RESERVE_UNREGISTER_KEY = 0x1 , SPDK_NVME_RESERVE_REPLACE_KEY = 0x2 }
 Registration action for Reservation Register command.
 
enum  spdk_nvme_reservation_release_action { SPDK_NVME_RESERVE_RELEASE = 0x0 , SPDK_NVME_RESERVE_CLEAR = 0x1 }
 Reservation Release action.
 
enum  spdk_nvme_reservation_notification_log_page_type { SPDK_NVME_RESERVATION_LOG_PAGE_EMPTY = 0x0 , SPDK_NVME_REGISTRATION_PREEMPTED = 0x1 , SPDK_NVME_RESERVATION_RELEASED = 0x2 , SPDK_NVME_RESERVATION_PREEMPTED = 0x3 }
 Reservation notification log page type.
 
enum  spdk_nvme_log_page {
  SPDK_NVME_LOG_SUPPORTED_LOG_PAGES = 0x00 , SPDK_NVME_LOG_ERROR = 0x01 , SPDK_NVME_LOG_HEALTH_INFORMATION = 0x02 , SPDK_NVME_LOG_FIRMWARE_SLOT = 0x03 ,
  SPDK_NVME_LOG_CHANGED_NS_LIST = 0x04 , SPDK_NVME_LOG_COMMAND_EFFECTS_LOG = 0x05 , SPDK_NVME_LOG_DEVICE_SELF_TEST = 0x06 , SPDK_NVME_LOG_TELEMETRY_HOST_INITIATED = 0x07 ,
  SPDK_NVME_LOG_TELEMETRY_CTRLR_INITIATED = 0x08 , SPDK_NVME_LOG_ENDURANCE_GROUP_INFORMATION = 0x09 , SPDK_NVME_LOG_PREDICATBLE_LATENCY = 0x0A , SPDK_NVME_LOG_PREDICTABLE_LATENCY_EVENT = 0x0B ,
  SPDK_NVME_LOG_ASYMMETRIC_NAMESPACE_ACCESS = 0x0C , SPDK_NVME_LOG_PERSISTENT_EVENT_LOG = 0x0D , SPDK_NVME_LOG_ENDURANCE_GROUP_EVENT = 0x0F , SPDK_NVME_LOG_MEDIA_UNIT_STATUS = 0x10 ,
  SPDK_NVME_LOG_CAPACITY_CONFIGURATION_LIST = 0x11 , SPDK_NVME_LOG_FEATURE_IDS_EFFECTS = 0x12 , SPDK_NVME_LOG_NVME_MI_COMMANDS_EFFECTS = 0x13 , SPDK_NVME_LOG_COMMAND_FEATURE_LOCKDOWN = 0x14 ,
  SPDK_NVME_LOG_BOOT_PARTITION = 0x15 , SPDK_NVME_LOG_ROTATIONAL_MEDIA_INFORMATION = 0x16 , SPDK_NVME_LOG_FDP_CONFIGURATIONS = 0x20 , SPDK_NVME_LOG_RECLAIM_UNIT_HANDLE_USAGE = 0x21 ,
  SPDK_NVME_LOG_FDP_STATISTICS = 0x22 , SPDK_NVME_LOG_FDP_EVENTS = 0x23 , SPDK_NVME_LOG_DISCOVERY = 0x70 , SPDK_NVME_LOG_RESERVATION_NOTIFICATION = 0x80 ,
  SPDK_NVME_LOG_SANITIZE_STATUS = 0x81 , SPDK_NVME_LOG_CHANGED_ZONE_LIST = 0xBF , SPDK_NVME_LOG_VENDOR_SPECIFIC_START = 0xc0 , SPDK_NVME_LOG_VENDOR_SPECIFIC_END = 0xff
}
 Log page identifiers for SPDK_NVME_OPC_GET_LOG_PAGE. More...
 
enum  spdk_nvme_sanitize_status_type { SPDK_NVME_NEVER_BEEN_SANITIZED = 0x0 , SPDK_NVME_RECENT_SANITIZE_SUCCESSFUL = 0x1 , SPDK_NVME_SANITIZE_IN_PROGRESS = 0x2 , SPDK_NVME_SANITIZE_FAILED = 0x3 }
 Sanitize Status Type.
 
enum  spdk_nvme_async_event_type {
  SPDK_NVME_ASYNC_EVENT_TYPE_ERROR = 0x0 , SPDK_NVME_ASYNC_EVENT_TYPE_SMART = 0x1 , SPDK_NVME_ASYNC_EVENT_TYPE_NOTICE = 0x2 , SPDK_NVME_ASYNC_EVENT_TYPE_IO = 0x6 ,
  SPDK_NVME_ASYNC_EVENT_TYPE_VENDOR = 0x7
}
 Asynchronous Event Type.
 
enum  spdk_nvme_async_event_info_error {
  SPDK_NVME_ASYNC_EVENT_WRITE_INVALID_DB = 0x0 , SPDK_NVME_ASYNC_EVENT_INVALID_DB_WRITE = 0x1 , SPDK_NVME_ASYNC_EVENT_DIAGNOSTIC_FAILURE = 0x2 , SPDK_NVME_ASYNC_EVENT_PERSISTENT_INTERNAL = 0x3 ,
  SPDK_NVME_ASYNC_EVENT_TRANSIENT_INTERNAL = 0x4 , SPDK_NVME_ASYNC_EVENT_FW_IMAGE_LOAD = 0x5
}
 Asynchronous Event Information for Error Status.
 
enum  spdk_nvme_async_event_info_smart { SPDK_NVME_ASYNC_EVENT_SUBSYSTEM_RELIABILITY = 0x0 , SPDK_NVME_ASYNC_EVENT_TEMPERATURE_THRESHOLD = 0x1 , SPDK_NVME_ASYNC_EVENT_SPARE_BELOW_THRESHOLD = 0x2 }
 Asynchronous Event Information for SMART/Health Status.
 
enum  spdk_nvme_async_event_info_notice {
  SPDK_NVME_ASYNC_EVENT_NS_ATTR_CHANGED = 0x0 , SPDK_NVME_ASYNC_EVENT_FW_ACTIVATION_START = 0x1 , SPDK_NVME_ASYNC_EVENT_TELEMETRY_LOG_CHANGED = 0x2 , SPDK_NVME_ASYNC_EVENT_ANA_CHANGE = 0x3 ,
  SPDK_NVME_ASYNC_EVENT_DISCOVERY_LOG_CHANGE = 0xF0
}
 Asynchronous Event Information for Notice. More...
 
enum  spdk_nvme_async_event_info_nvm_command_set { SPDK_NVME_ASYNC_EVENT_RESERVATION_LOG_AVAIL = 0x0 , SPDK_NVME_ASYNC_EVENT_SANITIZE_COMPLETED = 0x1 }
 Asynchronous Event Information for NVM Command Set Specific Status.
 
enum  spdk_nvme_ana_state {
  SPDK_NVME_ANA_OPTIMIZED_STATE = 0x1 , SPDK_NVME_ANA_NON_OPTIMIZED_STATE = 0x2 , SPDK_NVME_ANA_INACCESSIBLE_STATE = 0x3 , SPDK_NVME_ANA_PERSISTENT_LOSS_STATE = 0x4 ,
  SPDK_NVME_ANA_CHANGE_STATE = 0xF
}
 
enum  spdk_nvme_fdp_ruh_type { SPDK_NVME_FDP_RUHT_INITIALLY_ISOLATED = 0x1 , SPDK_NVME_FDP_RUHT_PERSISTENTLY_ISOLATED = 0x2 }
 
enum  spdk_nvme_fdp_ruh_attributes { SPDK_NVME_FDP_RUHA_UNUSED = 0x0 , SPDK_NVME_FDP_RUHA_HOST_SPECIFIED = 0x1 , SPDK_NVME_FDP_RUHA_CTRLR_SPECIFIED = 0x2 }
 
enum  spdk_nvme_fdp_report_event_type { SPDK_NVME_FDP_REPORT_CTRL_EVENTS = 0x0 , SPDK_NVME_FDP_REPORT_HOST_EVENTS = 0x1 }
 
enum  spdk_nvme_fdp_event_type {
  SPDK_NVME_FDP_EVENT_RU_NOT_WRITTEN_CAPACITY = 0x0 , SPDK_NVME_FDP_EVENT_RU_TIME_LIMIT_EXCEEDED = 0x1 , SPDK_NVME_FDP_EVENT_CTRLR_RESET_MODIFY_RUH = 0x2 , SPDK_NVME_FDP_EVENT_INVALID_PLACEMENT_ID = 0x3 ,
  SPDK_NVME_FDP_EVENT_MEDIA_REALLOCATED = 0x80 , SPDK_NVME_FDP_EVENT_IMPLICIT_MODIFIED_RUH = 0x81
}
 
enum  spdk_nvme_ns_attach_type { SPDK_NVME_NS_CTRLR_ATTACH = 0x0 , SPDK_NVME_NS_CTRLR_DETACH = 0x1 }
 Namespace attachment Type Encoding.
 
enum  spdk_nvme_ns_management_type { SPDK_NVME_NS_MANAGEMENT_CREATE = 0x0 , SPDK_NVME_NS_MANAGEMENT_DELETE = 0x1 }
 Namespace management Type Encoding.
 
enum  spdk_nvme_nidt { SPDK_NVME_NIDT_EUI64 = 0x01 , SPDK_NVME_NIDT_NGUID = 0x02 , SPDK_NVME_NIDT_UUID = 0x03 , SPDK_NVME_NIDT_CSI = 0x04 }
 Namespace identification descriptor type. More...
 
enum  spdk_nvme_csi { SPDK_NVME_CSI_NVM = 0x0 , SPDK_NVME_CSI_KV = 0x1 , SPDK_NVME_CSI_ZNS = 0x2 }
 
enum  spdk_nvme_secure_erase_setting { SPDK_NVME_FMT_NVM_SES_NO_SECURE_ERASE = 0x0 , SPDK_NVME_FMT_NVM_SES_USER_DATA_ERASE = 0x1 , SPDK_NVME_FMT_NVM_SES_CRYPTO_ERASE = 0x2 }
 
enum  spdk_nvme_pi_location { SPDK_NVME_FMT_NVM_PROTECTION_AT_TAIL = 0x0 , SPDK_NVME_FMT_NVM_PROTECTION_AT_HEAD = 0x1 }
 
enum  spdk_nvme_pi_type { SPDK_NVME_FMT_NVM_PROTECTION_DISABLE = 0x0 , SPDK_NVME_FMT_NVM_PROTECTION_TYPE1 = 0x1 , SPDK_NVME_FMT_NVM_PROTECTION_TYPE2 = 0x2 , SPDK_NVME_FMT_NVM_PROTECTION_TYPE3 = 0x3 }
 
enum  spdk_nvme_metadata_setting { SPDK_NVME_FMT_NVM_METADATA_TRANSFER_AS_BUFFER = 0x0 , SPDK_NVME_FMT_NVM_METADATA_TRANSFER_AS_LBA = 0x1 }
 
enum  spdk_sanitize_action { SPDK_NVME_SANITIZE_EXIT_FAILURE_MODE = 0x1 , SPDK_NVME_SANITIZE_BLOCK_ERASE = 0x2 , SPDK_NVME_SANITIZE_OVERWRITE = 0x3 , SPDK_NVME_SANITIZE_CRYPTO_ERASE = 0x4 }
 
enum  spdk_nvme_fw_commit_action {
  SPDK_NVME_FW_COMMIT_REPLACE_IMG = 0x0 , SPDK_NVME_FW_COMMIT_REPLACE_AND_ENABLE_IMG = 0x1 , SPDK_NVME_FW_COMMIT_ENABLE_IMG = 0x2 , SPDK_NVME_FW_COMMIT_RUN_IMG = 0x3 ,
  SPDK_NVME_FW_COMMIT_REPLACE_BOOT_PARTITION = 0x6 , SPDK_NVME_FW_COMMIT_ACTIVATE_BOOT_PARTITION = 0x7
}
 Parameters for SPDK_NVME_OPC_FIRMWARE_COMMIT cdw10: commit action. More...
 
enum  spdk_nvme_zns_zone_send_action {
  SPDK_NVME_ZONE_CLOSE = 0x1 , SPDK_NVME_ZONE_FINISH = 0x2 , SPDK_NVME_ZONE_OPEN = 0x3 , SPDK_NVME_ZONE_RESET = 0x4 ,
  SPDK_NVME_ZONE_OFFLINE = 0x5 , SPDK_NVME_ZONE_SET_ZDE = 0x10
}
 
enum  spdk_nvme_zns_zone_receive_action { SPDK_NVME_ZONE_REPORT = 0x0 , SPDK_NVME_ZONE_EXTENDED_REPORT = 0x1 }
 
enum  spdk_nvme_zns_zra_report_opts {
  SPDK_NVME_ZRA_LIST_ALL = 0x0 , SPDK_NVME_ZRA_LIST_ZSE = 0x1 , SPDK_NVME_ZRA_LIST_ZSIO = 0x2 , SPDK_NVME_ZRA_LIST_ZSEO = 0x3 ,
  SPDK_NVME_ZRA_LIST_ZSC = 0x4 , SPDK_NVME_ZRA_LIST_ZSF = 0x5 , SPDK_NVME_ZRA_LIST_ZSRO = 0x6 , SPDK_NVME_ZRA_LIST_ZSO = 0x7
}
 
enum  spdk_nvme_zns_zone_type { SPDK_NVME_ZONE_TYPE_SEQWR = 0x2 }
 
enum  spdk_nvme_zns_zone_state {
  SPDK_NVME_ZONE_STATE_EMPTY = 0x1 , SPDK_NVME_ZONE_STATE_IOPEN = 0x2 , SPDK_NVME_ZONE_STATE_EOPEN = 0x3 , SPDK_NVME_ZONE_STATE_CLOSED = 0x4 ,
  SPDK_NVME_ZONE_STATE_RONLY = 0xD , SPDK_NVME_ZONE_STATE_FULL = 0xE , SPDK_NVME_ZONE_STATE_OFFLINE = 0xF
}
 
enum  spdk_nvme_directive_type { SPDK_NVME_DIRECTIVE_TYPE_IDENTIFY = 0x0 , SPDK_NVME_DIRECTIVE_TYPE_STREAMS = 0x1 , SPDK_NVME_DIRECTIVE_TYPE_DATA_PLACEMENT = 0x2 }
 
enum  spdk_nvme_identify_directive_send_operation { SPDK_NVME_IDENTIFY_DIRECTIVE_SEND_ENABLED = 0x1 }
 
enum  spdk_nvme_identify_directive_receive_operation { SPDK_NVME_IDENTIFY_DIRECTIVE_RECEIVE_RETURN_PARAM = 0x1 }
 
enum  spdk_nvme_streams_directive_receive_operation { SPDK_NVME_STREAMS_DIRECTIVE_RECEIVE_RETURN_PARAM = 0x1 , SPDK_NVME_STREAMS_DIRECTIVE_RECEIVE_GET_STATUS = 0x2 , SPDK_NVME_STREAMS_DIRECTIVE_RECEIVE_ALLOCATE_RESOURCE = 0x3 }
 
enum  spdk_nvme_streams_directive_send_operation { SPDK_NVME_STREAMS_DIRECTIVE_SEND_RELEASE_ID = 0x1 , SPDK_NVME_STREAMS_DIRECTIVE_SEND_RELEASE_RESOURCE = 0x2 }
 

Functions

 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cap_register)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cc_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_csts_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_aqa_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_vs_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (SPDK_NVME_VERSION(1, 0, 0)==0x00010000, "version macro error")
 
 SPDK_STATIC_ASSERT (SPDK_NVME_VERSION(1, 2, 1)==0x00010201, "version macro error")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmbloc_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmbsz_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmbmsc_register)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmbsts_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_pmrcap_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_pmrctl_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_pmrsts_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_pmrebs_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_pmrswtp_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_pmrmscl_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_bpinfo_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_bprsel_register)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (0x00==offsetof(struct spdk_nvme_registers, cap), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x08==offsetof(struct spdk_nvme_registers, vs), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x0C==offsetof(struct spdk_nvme_registers, intms), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x10==offsetof(struct spdk_nvme_registers, intmc), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x14==offsetof(struct spdk_nvme_registers, cc), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x1C==offsetof(struct spdk_nvme_registers, csts), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x20==offsetof(struct spdk_nvme_registers, nssr), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x24==offsetof(struct spdk_nvme_registers, aqa), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x28==offsetof(struct spdk_nvme_registers, asq), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x30==offsetof(struct spdk_nvme_registers, acq), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x38==offsetof(struct spdk_nvme_registers, cmbloc), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x3C==offsetof(struct spdk_nvme_registers, cmbsz), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x40==offsetof(struct spdk_nvme_registers, bpinfo), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x44==offsetof(struct spdk_nvme_registers, bprsel), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x48==offsetof(struct spdk_nvme_registers, bpmbl), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x50==offsetof(struct spdk_nvme_registers, cmbmsc), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0x58==offsetof(struct spdk_nvme_registers, cmbsts), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE00==offsetof(struct spdk_nvme_registers, pmrcap), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE04==offsetof(struct spdk_nvme_registers, pmrctl), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE08==offsetof(struct spdk_nvme_registers, pmrsts), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE0C==offsetof(struct spdk_nvme_registers, pmrebs), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE10==offsetof(struct spdk_nvme_registers, pmrswtp), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE14==offsetof(struct spdk_nvme_registers, pmrmscl), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (0xE18==offsetof(struct spdk_nvme_registers, pmrmscu), "Incorrect register offset")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_sgl_descriptor)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_arbitration)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_power_management)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_lba_range_type)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_temperature_threshold)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_error_recovery)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_volatile_write_cache)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_number_of_queues)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_interrupt_coalescing)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_interrupt_vector_configuration)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_write_atomicity)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_critical_warning_state)==1, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_async_event_configuration)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_autonomous_power_state_transition)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_host_mem_buffer)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_keep_alive_timer)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_host_controlled_thermal_management)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_non_operational_power_state_config)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_software_progress_marker)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_host_identifier)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_reservation_notification_mask)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_reservation_persistence)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_fdp_cdw11)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_fdp_cdw12)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_fdp_events_cdw11)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_feat_fdp_events_cdw12)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmd_cdw10)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmd_cdw11)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmd_cdw12)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_cmd_cdw13)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_cmd)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_status)==2, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_cpl)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_dsm_range)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_scc_source_range)==32, "Incorrect size")
 
static enum spdk_nvme_data_transfer spdk_nvme_opc_get_data_transfer (uint8_t opc)
 Extract the Data Transfer bits from an NVMe opcode. More...
 
static uint32_t spdk_nvme_bytes_to_numd (uint32_t len)
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_host_behavior)==512, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_event_desc)==2, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_ruhs_desc)==32, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_ruhs)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_power_state)==32, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ctrlr_data)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_zns_ctrlr_data)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_primary_ctrl_capabilities)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_secondary_ctrl_entry)==32, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_secondary_ctrl_list)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ns_data)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_nvm_ctrlr_data)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_zns_ns_data)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_iocs_vector)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_reservation_acquire_data)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_reservation_status_data)==24, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_reservation_status_extended_data)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_registered_ctrlr_data)==24, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_registered_ctrlr_extended_data)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_reservation_register_data)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_reservation_key_data)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_reservation_notification_log)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_error_information_entry)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_health_information_page)==512, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_cmds_and_effect_log_page)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_telemetry_log_page_hdr)==512, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_sanitize_status_log_page)==512, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(union spdk_nvme_async_event_completion)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_firmware_page)==512, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ana_page)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ana_group_descriptor)==32, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_ruh_descriptor)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_cfg_descriptor)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_cfg_log_page)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_ruhu_descriptor)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_ruhu_log_page)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_stats_log_page)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_event_media_reallocated)==16, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_event)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fdp_events_log_page)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ns_list)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ns_id_desc)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ctrlr_list)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_format)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_protection_info)==8, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_sanitize)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_fw_commit)==4, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_zns_zone_desc)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_zns_zone_report)==64, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ns_identify_directive_param)==4096, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ns_streams_data)==32, "Incorrect size")
 
 SPDK_STATIC_ASSERT (sizeof(struct spdk_nvme_ns_streams_status)==131072, "Incorrect size")
 

Detailed Description

NVMe specification definitions.

Macro Definition Documentation

◆ spdk_nvme_cpl_is_aborted_by_request

#define spdk_nvme_cpl_is_aborted_by_request (   cpl)
Value:
((cpl)->status.sct == SPDK_NVME_SCT_GENERIC && \
(cpl)->status.sc == SPDK_NVME_SC_ABORTED_BY_REQUEST)

◆ spdk_nvme_cpl_is_aborted_sq_deletion

#define spdk_nvme_cpl_is_aborted_sq_deletion (   cpl)
Value:
((cpl)->status.sct == SPDK_NVME_SCT_GENERIC && \
(cpl)->status.sc == SPDK_NVME_SC_ABORTED_SQ_DELETION)

◆ spdk_nvme_cpl_is_ana_error

#define spdk_nvme_cpl_is_ana_error (   cpl)
Value:
((cpl)->status.sct == SPDK_NVME_SCT_PATH && \
((cpl)->status.sc == SPDK_NVME_SC_ASYMMETRIC_ACCESS_PERSISTENT_LOSS || \
(cpl)->status.sc == SPDK_NVME_SC_ASYMMETRIC_ACCESS_INACCESSIBLE || \
(cpl)->status.sc == SPDK_NVME_SC_ASYMMETRIC_ACCESS_TRANSITION))

◆ spdk_nvme_cpl_is_error

#define spdk_nvme_cpl_is_error (   cpl)
Value:
((cpl)->status.sc != SPDK_NVME_SC_SUCCESS || \
(cpl)->status.sct != SPDK_NVME_SCT_GENERIC)

◆ spdk_nvme_cpl_is_pi_error

#define spdk_nvme_cpl_is_pi_error (   cpl)
Value:
((cpl)->status.sct == SPDK_NVME_SCT_MEDIA_ERROR && \
((cpl)->status.sc == SPDK_NVME_SC_GUARD_CHECK_ERROR || \
(cpl)->status.sc == SPDK_NVME_SC_APPLICATION_TAG_CHECK_ERROR || \
(cpl)->status.sc == SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR))

◆ SPDK_NVME_VERSION

#define SPDK_NVME_VERSION (   mjr,
  mnr,
  ter 
)
Value:
(((uint32_t)(mjr) << 16) | \
((uint32_t)(mnr) << 8) | \
(uint32_t)(ter))

Generate raw version in the same format as spdk_nvme_vs_register for comparison.

Enumeration Type Documentation

◆ spdk_nvme_async_event_info_notice

Asynchronous Event Information for Notice.

Enumerator
SPDK_NVME_ASYNC_EVENT_DISCOVERY_LOG_CHANGE 

Discovery log change event(refer to the NVMe over Fabrics specification)

◆ spdk_nvme_cap_ams

Optional Arbitration Mechanism Supported by the controller.

Two bits for CAP.AMS (18:17) field are set to '1' when the controller supports. There is no bit for AMS_RR where all controllers support and set to 0x0 by default.

Enumerator
SPDK_NVME_CAP_AMS_WRR 

weighted round robin

SPDK_NVME_CAP_AMS_VS 

vendor specific

◆ spdk_nvme_cc_ams

Arbitration Mechanism Selected to the controller.

Value 0x2 to 0x6 is reserved.

Enumerator
SPDK_NVME_CC_AMS_RR 

default round robin

SPDK_NVME_CC_AMS_WRR 

weighted round robin

SPDK_NVME_CC_AMS_VS 

vendor specific

◆ spdk_nvme_cc_css

I/O Command Set Selected.

Only a single command set is defined as of NVMe 1.3 (NVM). Later, it became possible to disable I/O Command Sets, that is, configuring it to only use the Admin Command Set. With 1.4c and Namespace Types, additional I/O Command Sets are available.

Enumerator
SPDK_NVME_CC_CSS_NVM 

NVM command set.

SPDK_NVME_CC_CSS_IOCS 

One or more I/O command sets.

SPDK_NVME_CC_CSS_NOIO 

No I/O, only admin.

◆ spdk_nvme_cmd_fuse

Fused Operation.

Enumerator
SPDK_NVME_CMD_FUSE_NONE 

normal operation

SPDK_NVME_CMD_FUSE_FIRST 

fused operation, first command

SPDK_NVME_CMD_FUSE_SECOND 

fused operation, second command

SPDK_NVME_CMD_FUSE_MASK 

fused operation flags mask

◆ spdk_nvme_data_transfer

Data transfer (bits 1:0) of an NVMe opcode.

See also
spdk_nvme_opc_get_data_transfer
Enumerator
SPDK_NVME_DATA_NONE 

Opcode does not transfer data.

SPDK_NVME_DATA_HOST_TO_CONTROLLER 

Opcode transfers data from host to controller (e.g.

Write)

SPDK_NVME_DATA_CONTROLLER_TO_HOST 

Opcode transfers data from controller to host (e.g.

Read)

SPDK_NVME_DATA_BIDIRECTIONAL 

Opcode transfers data both directions.

◆ spdk_nvme_dealloc_logical_block_read_value

Deallocated logical block features - read value.

Enumerator
SPDK_NVME_DEALLOC_NOT_REPORTED 

Not reported.

SPDK_NVME_DEALLOC_READ_00 

Deallocated blocks read 0x00.

SPDK_NVME_DEALLOC_READ_FF 

Deallocated blocks read 0xFF.

◆ spdk_nvme_feat

Enumerator
SPDK_NVME_FEAT_ARBITRATION 

cdw11 layout defined by spdk_nvme_feat_arbitration

SPDK_NVME_FEAT_POWER_MANAGEMENT 

cdw11 layout defined by spdk_nvme_feat_power_management

SPDK_NVME_FEAT_LBA_RANGE_TYPE 

cdw11 layout defined by spdk_nvme_feat_lba_range_type

SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD 

cdw11 layout defined by spdk_nvme_feat_temperature_threshold

SPDK_NVME_FEAT_ERROR_RECOVERY 

cdw11 layout defined by spdk_nvme_feat_error_recovery

SPDK_NVME_FEAT_VOLATILE_WRITE_CACHE 

cdw11 layout defined by spdk_nvme_feat_volatile_write_cache

SPDK_NVME_FEAT_NUMBER_OF_QUEUES 

cdw11 layout defined by spdk_nvme_feat_number_of_queues

SPDK_NVME_FEAT_INTERRUPT_COALESCING 

cdw11 layout defined by spdk_nvme_feat_interrupt_coalescing

SPDK_NVME_FEAT_INTERRUPT_VECTOR_CONFIGURATION 

cdw11 layout defined by spdk_nvme_feat_interrupt_vector_configuration

SPDK_NVME_FEAT_WRITE_ATOMICITY 

cdw11 layout defined by spdk_nvme_feat_write_atomicity

SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION 

cdw11 layout defined by spdk_nvme_feat_async_event_configuration

SPDK_NVME_FEAT_AUTONOMOUS_POWER_STATE_TRANSITION 

cdw11 layout defined by spdk_nvme_feat_autonomous_power_state_transition

SPDK_NVME_FEAT_HOST_MEM_BUFFER 

cdw11 layout defined by spdk_nvme_feat_host_mem_buffer

SPDK_NVME_FEAT_KEEP_ALIVE_TIMER 

cdw11 layout defined by spdk_nvme_feat_keep_alive_timer

SPDK_NVME_FEAT_HOST_CONTROLLED_THERMAL_MANAGEMENT 

cdw11 layout defined by spdk_nvme_feat_host_controlled_thermal_management

SPDK_NVME_FEAT_NON_OPERATIONAL_POWER_STATE_CONFIG 

cdw11 layout defined by spdk_nvme_feat_non_operational_power_state_config

SPDK_NVME_FEAT_HOST_BEHAVIOR_SUPPORT 

data buffer layout defined by spdk_nvme_host_behavior

SPDK_NVME_FEAT_FDP 

cdw11 layout defined by spdk_nvme_feat_fdp_cdw11 cdw12 layout defined by spdk_nvme_feat_fdp_cdw12

SPDK_NVME_FEAT_FDP_EVENTS 

cdw11 layout defined by spdk_nvme_feat_fdp_events_cdw11 cdw12 layout defined by spdk_nvme_feat_fdp_events_cdw12 data layout defined by spdk_nvme_fdp_event_desc

SPDK_NVME_FEAT_SOFTWARE_PROGRESS_MARKER 

cdw11 layout defined by spdk_nvme_feat_software_progress_marker

SPDK_NVME_FEAT_HOST_IDENTIFIER 

cdw11 layout defined by spdk_nvme_feat_host_identifier

SPDK_NVME_FEAT_HOST_RESERVE_MASK 

cdw11 layout defined by spdk_nvme_feat_reservation_notification_mask

SPDK_NVME_FEAT_HOST_RESERVE_PERSIST 

cdw11 layout defined by spdk_nvme_feat_reservation_persistence

◆ spdk_nvme_flush_broadcast

Identify Controller data vwc.flush_broadcast values.

Enumerator
SPDK_NVME_FLUSH_BROADCAST_NOT_INDICATED 

Support for NSID=FFFFFFFFh with Flush is not indicated.

SPDK_NVME_FLUSH_BROADCAST_NOT_SUPPORTED 

Flush does not support NSID set to FFFFFFFFh.

SPDK_NVME_FLUSH_BROADCAST_SUPPORTED 

Flush supports NSID set to FFFFFFFFh.

◆ spdk_nvme_fw_commit_action

Parameters for SPDK_NVME_OPC_FIRMWARE_COMMIT cdw10: commit action.

Enumerator
SPDK_NVME_FW_COMMIT_REPLACE_IMG 

Downloaded image replaces the image specified by the Firmware Slot field.

This image is not activated.

SPDK_NVME_FW_COMMIT_REPLACE_AND_ENABLE_IMG 

Downloaded image replaces the image specified by the Firmware Slot field.

This image is activated at the next reset.

SPDK_NVME_FW_COMMIT_ENABLE_IMG 

The image specified by the Firmware Slot field is activated at the next reset.

SPDK_NVME_FW_COMMIT_RUN_IMG 

The image specified by the Firmware Slot field is requested to be activated immediately without reset.

SPDK_NVME_FW_COMMIT_REPLACE_BOOT_PARTITION 

Downloaded image replaces the Boot Partition specified by the Boot Partition ID field.

SPDK_NVME_FW_COMMIT_ACTIVATE_BOOT_PARTITION 

Mark the Boot Partition specified in the BPID field as Active and update BPINFO.ABPID.

◆ spdk_nvme_identify_cns

Identify command CNS value.

Enumerator
SPDK_NVME_IDENTIFY_NS 

Identify namespace indicated in CDW1.NSID.

SPDK_NVME_IDENTIFY_CTRLR 

Identify controller.

SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST 

List active NSIDs greater than CDW1.NSID.

SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST 

List namespace identification descriptors.

SPDK_NVME_IDENTIFY_NS_IOCS 

Identify namespace indicated in CDW1.NSID, specific to CWD11.CSI.

SPDK_NVME_IDENTIFY_CTRLR_IOCS 

Identify controller, specific to CWD11.CSI.

SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST_IOCS 

List active NSIDs greater than CDW1.NSID, specific to CWD11.CSI.

SPDK_NVME_IDENTIFY_ALLOCATED_NS_LIST 

List allocated NSIDs greater than CDW1.NSID.

SPDK_NVME_IDENTIFY_NS_ALLOCATED 

Identify namespace if CDW1.NSID is allocated.

SPDK_NVME_IDENTIFY_NS_ATTACHED_CTRLR_LIST 

Get list of controllers starting at CDW10.CNTID that are attached to CDW1.NSID.

SPDK_NVME_IDENTIFY_CTRLR_LIST 

Get list of controllers starting at CDW10.CNTID.

SPDK_NVME_IDENTIFY_PRIMARY_CTRLR_CAP 

Get primary controller capabilities structure.

SPDK_NVME_IDENTIFY_SECONDARY_CTRLR_LIST 

Get secondary controller list.

SPDK_NVME_IDENTIFY_ALLOCATED_NS_LIST_IOCS 

List allocated NSIDs greater than CDW1.NSID, specific to CWD11.CSI.

SPDK_NVME_IDENTIFY_NS_ALLOCATED_IOCS 

Identify namespace if CDW1.NSID is allocated, specific to CDWD11.CSI.

SPDK_NVME_IDENTIFY_IOCS 

Identify I/O Command Sets.

◆ spdk_nvme_log_page

Log page identifiers for SPDK_NVME_OPC_GET_LOG_PAGE.

Enumerator
SPDK_NVME_LOG_SUPPORTED_LOG_PAGES 

Supported log pages (optional)

SPDK_NVME_LOG_ERROR 

Error information (mandatory) - spdk_nvme_error_information_entry.

SPDK_NVME_LOG_HEALTH_INFORMATION 

SMART / health information (mandatory) - spdk_nvme_health_information_page.

SPDK_NVME_LOG_FIRMWARE_SLOT 

Firmware slot information (mandatory) - spdk_nvme_firmware_page.

SPDK_NVME_LOG_CHANGED_NS_LIST 

Changed namespace list (optional)

SPDK_NVME_LOG_COMMAND_EFFECTS_LOG 

Command effects log (optional)

SPDK_NVME_LOG_DEVICE_SELF_TEST 

Device self test (optional)

SPDK_NVME_LOG_TELEMETRY_HOST_INITIATED 

Host initiated telemetry log (optional)

SPDK_NVME_LOG_TELEMETRY_CTRLR_INITIATED 

Controller initiated telemetry log (optional)

SPDK_NVME_LOG_ENDURANCE_GROUP_INFORMATION 

Endurance group Information (optional)

SPDK_NVME_LOG_PREDICATBLE_LATENCY 

Predictable latency per NVM set (optional)

SPDK_NVME_LOG_PREDICTABLE_LATENCY_EVENT 

Predictable latency event aggregrate (optional)

SPDK_NVME_LOG_ASYMMETRIC_NAMESPACE_ACCESS 

Asymmetric namespace access log (optional)

SPDK_NVME_LOG_PERSISTENT_EVENT_LOG 

Persistent event log (optional)

SPDK_NVME_LOG_ENDURANCE_GROUP_EVENT 

Endurance group event aggregate (optional)

SPDK_NVME_LOG_MEDIA_UNIT_STATUS 

Media unit status (optional)

SPDK_NVME_LOG_CAPACITY_CONFIGURATION_LIST 

Supported capacity configuration list (optional)

SPDK_NVME_LOG_FEATURE_IDS_EFFECTS 

Feature identifiers supported and effects (optional)

SPDK_NVME_LOG_NVME_MI_COMMANDS_EFFECTS 

NVMe-MI commands supported and effects (optional)

SPDK_NVME_LOG_COMMAND_FEATURE_LOCKDOWN 

Command and feature lockdown (optional)

SPDK_NVME_LOG_BOOT_PARTITION 

Boot partition (optional)

SPDK_NVME_LOG_ROTATIONAL_MEDIA_INFORMATION 

Rotational media information (optional)

SPDK_NVME_LOG_FDP_CONFIGURATIONS 

FDP configurations (optional)

SPDK_NVME_LOG_RECLAIM_UNIT_HANDLE_USAGE 

Reclaim unit handle usage (optional)

SPDK_NVME_LOG_FDP_STATISTICS 

FDP statistics (optional)

SPDK_NVME_LOG_FDP_EVENTS 

FDP events (optional)

SPDK_NVME_LOG_DISCOVERY 

Discovery(refer to the NVMe over Fabrics specification)

SPDK_NVME_LOG_RESERVATION_NOTIFICATION 

Reservation notification (optional)

SPDK_NVME_LOG_SANITIZE_STATUS 

Sanitize status (optional)

SPDK_NVME_LOG_CHANGED_ZONE_LIST 

Changed zone list (refer to Zoned Namespace command set)

◆ spdk_nvme_nidt

Namespace identification descriptor type.

See also
spdk_nvme_ns_id_desc
Enumerator
SPDK_NVME_NIDT_EUI64 

IEEE Extended Unique Identifier.

SPDK_NVME_NIDT_NGUID 

Namespace GUID.

SPDK_NVME_NIDT_UUID 

Namespace UUID.

SPDK_NVME_NIDT_CSI 

Namespace Command Set Identifier.

◆ spdk_nvme_qprio

Submission queue priority values for Create I/O Submission Queue Command.

Only valid for weighted round robin arbitration method.

◆ spdk_nvme_sgls_supported

Identify Controller data sgls.supported values.

Enumerator
SPDK_NVME_SGLS_NOT_SUPPORTED 

SGLs are not supported.

SPDK_NVME_SGLS_SUPPORTED 

SGLs are supported with no alignment or granularity requirement.

SPDK_NVME_SGLS_SUPPORTED_DWORD_ALIGNED 

SGLs are supported with a DWORD alignment and granularity requirement.

◆ spdk_nvme_zns_opcode

Zoned Namespace command set opcodes.

In addition to the opcodes of the NVM command set, the Zoned Namespace command set supports the following opcodes.

◆ spdk_nvmf_ctrlr_model

NVMe over Fabrics controller model.

Enumerator
SPDK_NVMF_CTRLR_MODEL_DYNAMIC 

NVM subsystem uses dynamic controller model.

SPDK_NVMF_CTRLR_MODEL_STATIC 

NVM subsystem uses static controller model.

Function Documentation

◆ spdk_nvme_opc_get_data_transfer()

static enum spdk_nvme_data_transfer spdk_nvme_opc_get_data_transfer ( uint8_t  opc)
inlinestatic

Extract the Data Transfer bits from an NVMe opcode.

This determines whether a command requires a data buffer and which direction (host to controller or controller to host) it is transferred.