перечисление NVME_STATUS_GENERIC_COMMAND_CODES (nvme.h)

Содержит значения, указывающие состояние, связанное с командой, которое является универсальным для многих различных типов команд.

Эти коды состояния относятся к типу кодасостояния NVME_STATUS_TYPE_GENERIC_COMMAND и публикуются контроллером в записи очереди завершения при выполнении команды. Коды указывают, что команда, указанная идентификаторами "Команда" и "Очередь отправки" в записи очереди завершения, завершена.

Синтаксис

typedef enum {
  NVME_STATUS_SUCCESS_COMPLETION,
  NVME_STATUS_INVALID_COMMAND_OPCODE,
  NVME_STATUS_INVALID_FIELD_IN_COMMAND,
  NVME_STATUS_COMMAND_ID_CONFLICT,
  NVME_STATUS_DATA_TRANSFER_ERROR,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION,
  NVME_STATUS_INTERNAL_DEVICE_ERROR,
  NVME_STATUS_COMMAND_ABORT_REQUESTED,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND,
  NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT,
  NVME_STATUS_COMMAND_SEQUENCE_ERROR,
  NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR,
  NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR,
  NVME_STATUS_DATA_SGL_LENGTH_INVALID,
  NVME_STATUS_METADATA_SGL_LENGTH_INVALID,
  NVME_STATUS_SGL_DESCR_TYPE_INVALID,
  NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER,
  NVME_STATUS_PRP_OFFSET_INVALID,
  NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED,
  NVME_STATUS_OPERATION_DENIED,
  NVME_STATUS_SGL_OFFSET_INVALID,
  NVME_STATUS_RESERVED,
  NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT,
  NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED,
  NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT,
  NVME_STATUS_SANITIZE_FAILED,
  NVME_STATUS_SANITIZE_IN_PROGRESS,
  NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID,
  NVME_STATUS_DIRECTIVE_TYPE_INVALID,
  NVME_STATUS_DIRECTIVE_ID_INVALID,
  NVME_STATUS_NVM_LBA_OUT_OF_RANGE,
  NVME_STATUS_NVM_CAPACITY_EXCEEDED,
  NVME_STATUS_NVM_NAMESPACE_NOT_READY,
  NVME_STATUS_NVM_RESERVATION_CONFLICT,
  NVME_STATUS_FORMAT_IN_PROGRESS
} NVME_STATUS_GENERIC_COMMAND_CODES;

Константы

 
NVME_STATUS_SUCCESS_COMPLETION
Команда завершена успешно.
NVME_STATUS_INVALID_COMMAND_OPCODE
Недопустимое поле связанного кода командной операции.
NVME_STATUS_INVALID_FIELD_IN_COMMAND
В параметрах команды указано недопустимое или неподдерживаемое поле.
NVME_STATUS_COMMAND_ID_CONFLICT
Идентификатор команды уже используется.

ПРИМЕЧАНИЕ

Количество команд, в которых выполняется поиск конфликта идентификаторов, зависит от реализации.

NVME_STATUS_DATA_TRANSFER_ERROR
Указывает на ошибку при передаче данных или метаданных, связанных с командой.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION
Указывает, что команда была прервана из-за уведомления об потере питания.
NVME_STATUS_INTERNAL_DEVICE_ERROR
Команда не была успешно выполнена из-за внутренней ошибки. Сведения о внутренней ошибке устройства возвращаются в виде асинхронного события.
NVME_STATUS_COMMAND_ABORT_REQUESTED
Команда была прервана из-за получения команды Command Abort, которая указала идентификатор очереди отправки и идентификатор команды этой команды.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION
Команда была прервана из-за получения запроса на удаление очереди отправки ввода-вывода для очереди отправки, в которую была отправлена команда.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND
Команда была прервана из-за сбоя другой команды в операции слияния.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND
Команда была прервана из-за того, что команда-компаньон не найдена в качестве следующей записи очереди отправки.
NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT
Недопустимое пространство имен или формат этого пространства имен.
NVME_STATUS_COMMAND_SEQUENCE_ERROR
Команда была прервана из-за нарушения протокола в последовательности нескольких команд. Например, нарушение правил последовательности отправки и получения безопасности в протоколе TCG Storage Synchronous Interface Communications.
NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR
Команда включает недопустимый дескриптор последнего сегмента SGL или сегмент SGL. Это может произойти, если сегмент SGL, на который указывает дескриптор последнего сегмента SGL, содержит дескриптор сегмента SGL или дескриптор последнего сегмента SGL или дескриптор сегмента SGL. Это может произойти, если дескриптор последнего сегмента SGL содержит недопустимую длину (например, нулевую или не кратную 16).
NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR
Дескриптор последнего сегмента SGL или дескриптор сегмента SGL находится в расположении, отличном от последнего дескриптора сегмента на основе указанной длины.
NVME_STATUS_DATA_SGL_LENGTH_INVALID
Это может произойти, если длина SGL данных слишком коротка. Это может произойти, если длина SGL данных слишком длинна, а контроллер не поддерживает передачу SGL дольше, чем объем передаваемых данных, как указано в поле SGL Support (SGLS) структуры данных Identify Controller (NVME_IDENTIFY_CONTROLLER_DATA).
NVME_STATUS_METADATA_SGL_LENGTH_INVALID
Это может произойти, если длина SGL метаданных слишком коротка. Это может произойти, если длина SGL метаданных слишком длинна, а контроллер не поддерживает передачу SGL дольше, чем объем передаваемых данных, как указано в поле Поддержка SGL (SGLS) структуры данных контроллера идентификации (NVME_IDENTIFY_CONTROLLER_DATA ).
NVME_STATUS_SGL_DESCR_TYPE_INVALID
Тип дескриптора SGL — это тип, который не поддерживается контроллером.
NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER
Попытка использования буфера памяти контроллера не поддерживается контроллером.
NVME_STATUS_PRP_OFFSET_INVALID
Недопустимое поле Offset для записи PRP. Это может произойти при наличии записи PRP с ненулевым смещением после первой записи.
NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED
Указанная длина превышает размер атомарной единицы записи.
NVME_STATUS_OPERATION_DENIED
Команда была отклонена из-за отсутствия прав доступа.
NVME_STATUS_SGL_OFFSET_INVALID
Смещение, указанное в дескрипторе, недопустимо.
NVME_STATUS_RESERVED
Зарезервировано.
NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT
Подсистема NVM обнаружила одновременное использование 64-разрядных и 128-разрядных значений идентификаторов узла на разных контроллерах.
NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED
Срок действия таймера Keep Alive истек.
NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID
Указанное значение времени ожидания Keep Alive является недопустимым.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT
Команда была прервана из-за команды Reservation Acquire с действием получения резервирования (RACQA) значение 010b (Preempt and Abort).
NVME_STATUS_SANITIZE_FAILED
Последняя операция очистки завершилась сбоем, и действие восстановления не было успешно завершено.
NVME_STATUS_SANITIZE_IN_PROGRESS
Запрошенная функция (например, команда) запрещена во время выполнения операции очистки.
NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID
Недопустимая степень выравнивания адресов или длины для дескриптора блока SGLData.
NVME_STATUS_NVM_LBA_OUT_OF_RANGE
Команда ссылается на LBA, размер которой превышает размер пространства имен.
NVME_STATUS_NVM_CAPACITY_EXCEEDED
Выполнение команды привело к превышению емкости пространства имен. Эта ошибка возникает, когда значение параметра Использование пространства имен превышает емкость пространства имен.
NVME_STATUS_NVM_NAMESPACE_NOT_READY
Пространство имен не готово к доступу. Бит Do Not Retry указывает, может ли повторно выполнить команду позже.
NVME_STATUS_NVM_RESERVATION_CONFLICT
Команда была прервана из-за конфликта с резервированием в доступном пространстве имен.
NVME_STATUS_FORMAT_IN_PROGRESS
Пространство имен в настоящее время форматируется. Бит Do Not Retry будет удален до "0", чтобы указать, что команда может быть выполнена успешно, если она будет повторно отправляться.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Верхняя часть nvme.h