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_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
 
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_power_state
 
struct  spdk_nvme_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_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...
 
union  spdk_nvme_critical_warning_state
 
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...
 
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_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...
 
struct  spdk_nvme_firmware_page
 Firmware slot information page (SPDK_NVME_LOG_FIRMWARE_SLOT) More...
 
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...
 

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_ADMIN_QUEUE_MIN_ENTRIES   2
 
#define SPDK_NVME_ADMIN_QUEUE_MAX_ENTRIES   4096
 
#define SPDK_NVME_IO_QUEUE_MIN_ENTRIES   2
 
#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 mangement 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_CAP_CSS_NVM   (1u << SPDK_NVME_CC_CSS_NVM)
 NVM command set supported.
 
#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_CTRLR_SN_LEN   20
 
#define SPDK_NVME_CTRLR_MN_LEN   40
 
#define SPDK_NVME_CTRLR_FR_LEN   8
 
#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_async_event_config   spdk_nvme_feat_async_event_configuration
 
#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_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)
 

Enumerations

enum  spdk_nvme_cc_css { SPDK_NVME_CC_CSS_NVM = 0x0 }
 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_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_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_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
}
 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_MAXIMUM_QUEUE_SIZE_EXCEEDED = 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_CONFLICTING_ATTRIBUTES = 0x80, SPDK_NVME_SC_INVALID_PROTECTION_INFO = 0x81, SPDK_NVME_SC_ATTEMPTED_WRITE_TO_RO_RANGE = 0x82
}
 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
}
 Media error status codes.
 
enum  spdk_nvme_path_status_code { SPDK_NVME_SC_INTERNAL_PATH_ERROR = 0x00, 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
}
 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_RESERVATION_REGISTER = 0x0d,
  SPDK_NVME_OPC_RESERVATION_REPORT = 0x0e, SPDK_NVME_OPC_RESERVATION_ACQUIRE = 0x11, SPDK_NVME_OPC_RESERVATION_RELEASE = 0x15
}
 NVM command set opcodes.
 
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_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_SOFTWARE_PROGRESS_MARKER = 0x80, SPDK_NVME_FEAT_HOST_IDENTIFIER = 0x81, SPDK_NVME_FEAT_HOST_RESERVE_MASK = 0x82,
  SPDK_NVME_FEAT_HOST_RESERVE_PERSIST = 0x83
}
 
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. More...
 
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_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
}
 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_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_DISCOVERY = 0x70, SPDK_NVME_LOG_RESERVATION_NOTIFICATION = 0x80, SPDK_NVME_LOG_SANITIZE_STATUS = 0x81
}
 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 }
 Asynchronous Event Information for Notice.
 
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_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 }
 Namespace identification descriptor type. More...
 
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 }
 Parameters for SPDK_NVME_OPC_FIRMWARE_COMMIT cdw10: commit action. More...
 

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_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 (sizeof(struct spdk_nvme_sgl_descriptor)==16, "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")
 
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...
 
 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_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_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(union spdk_nvme_critical_warning_state)==1, "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(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_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(struct spdk_nvme_firmware_page)==512, "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_fw_commit)==4, "Incorrect size")
 

Detailed Description

NVMe specification definitions.

Macro Definition Documentation

◆ 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_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).

Enumerator
SPDK_NVME_CC_CSS_NVM 

NVM command set.

◆ 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_dsm_attribute

Bit set of attributes for DATASET MANAGEMENT commands.

◆ 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_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_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_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_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_log_page

Log page identifiers for SPDK_NVME_OPC_GET_LOG_PAGE.

Enumerator
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_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_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_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_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.