Поделиться через


перечисление 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
Недопустимое поле связанной команды 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
Команда была прервана из-за нарушения протокола в многокомандной последовательности. Например, нарушение правил последовательности отправки и защиты безопасности в протоколе синхронной связи интерфейса хранилища TCG.
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 (SGLS) контроллера идентификации (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
Поле "Смещение" для записи 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
Эта команда была прервана из-за команды "Приобретение резервирования" с действием "Получение резервирования" (RACQA), равным 010b (Preempt и 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