énumération NVME_STATUS_GENERIC_COMMAND_CODES (nvme.h)

Contient des valeurs qui indiquent un status associé à la commande générique pour de nombreux types de commandes différents.

Ces codes status sont du type decode d’état NVME_STATUS_TYPE_GENERIC_COMMAND et sont publiés par le contrôleur dans une entrée File d’attente d’achèvement lorsqu’une commande est terminée. Les codes indiquent que la commande spécifiée par les identificateurs de file d’attente de commande et de soumission dans l’entrée de la file d’attente d’achèvement est terminée.

Syntax

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;

Constantes

 
NVME_STATUS_SUCCESS_COMPLETION
La commande s'est exécutée correctement.
NVME_STATUS_INVALID_COMMAND_OPCODE
Le champ opcode de commande associé n’est pas valide.
NVME_STATUS_INVALID_FIELD_IN_COMMAND
Un champ non valide ou non pris en charge est spécifié dans les paramètres de commande.
NVME_STATUS_COMMAND_ID_CONFLICT
L’identificateur de commande est déjà utilisé.

REMARQUE

Le nombre de commandes recherchées pour un conflit d’ID est spécifique à l’implémentation.

NVME_STATUS_DATA_TRANSFER_ERROR
Indique une erreur lors du transfert des données ou des métadonnées associées à une commande.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION
Indique que la commande a été abandonnée en raison d’une notification de perte de puissance.
NVME_STATUS_INTERNAL_DEVICE_ERROR
La commande n’a pas été exécutée correctement en raison d’une erreur interne. Les détails de l’erreur interne de l’appareil sont retournés en tant qu’événement asynchrone.
NVME_STATUS_COMMAND_ABORT_REQUESTED
La commande a été abandonnée en raison de la réception d’une commande Command Abort spécifiant l’identificateur de file d’attente de soumission et l’identificateur de commande de cette commande.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION
La commande a été abandonnée en raison d’une demande de suppression de file d’attente de soumission d’E/S reçue pour la file d’attente de soumission à laquelle la commande a été envoyée.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND
La commande a été abandonnée en raison de l’échec de l’autre commande d’une opération fusionnée.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND
La commande a été abandonnée en raison de l’impossibilité de trouver la commande fusée associée en tant qu’entrée de file d’attente de soumission suivante.
NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT
L’espace de noms ou le format de cet espace de noms n’est pas valide.
NVME_STATUS_COMMAND_SEQUENCE_ERROR
La commande a été abandonnée en raison d’une violation de protocole dans une séquence de commandes multiples. Par exemple, une violation des règles de séquencement d’envoi de sécurité et de réception de sécurité dans le protocole TCG Storage Synchronous Interface Communications.
NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR
La commande inclut un descripteur SGL Last Segment ou SGL Segment non valide. Cela peut se produire lorsque le segment SGL pointé vers un descripteur SGL Last Segment contient un descripteur de segment SGL ou un descripteur SGL Last Segment ou un descripteur de segment SGL. Cela peut se produire lorsqu’un descripteur SGL Last Segment contient une longueur non valide (par exemple, une longueur de zéro ou une longueur qui n’est pas un multiple de 16).
NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR
Il existe un descripteur SGL Last Segment ou un descripteur de segment SGL à un emplacement autre que le dernier descripteur d’un segment en fonction de la longueur indiquée.
NVME_STATUS_DATA_SGL_LENGTH_INVALID
Cela peut se produire si la longueur d’un SGL de données est trop courte. Cela peut se produire si la longueur d’un SGL de données est trop longue et que le contrôleur ne prend pas en charge les transferts SGL plus longs que la quantité de données à transférer, comme indiqué dans le champ SGL Support (SGLS) de la structure de données Identifier le contrôleur (NVME_IDENTIFY_CONTROLLER_DATA).
NVME_STATUS_METADATA_SGL_LENGTH_INVALID
Cela peut se produire si la longueur d’un SGL de métadonnées est trop courte. Cela peut se produire si la longueur d’une SGL de métadonnées est trop longue et que le contrôleur ne prend pas en charge les transferts SGL plus longs que la quantité de données à transférer, comme indiqué dans le champ SGL Support (SGLS) de la structure de données du contrôleur d’identification (NVME_IDENTIFY_CONTROLLER_DATA).
NVME_STATUS_SGL_DESCR_TYPE_INVALID
Le type d’un descripteur SGL est un type qui n’est pas pris en charge par le contrôleur.
NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER
La tentative d’utilisation de la mémoire tampon du contrôleur n’est pas prise en charge par le contrôleur.
NVME_STATUS_PRP_OFFSET_INVALID
Le champ Décalage d’une entrée PRP n’est pas valide. Cela peut se produire lorsqu’il existe une entrée PRP avec un décalage non nul après la première entrée.
NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED
La longueur spécifiée dépasse la taille de l’unité d’écriture atomique.
NVME_STATUS_OPERATION_DENIED
La commande a été refusée en raison d’un manque de droits d’accès.
NVME_STATUS_SGL_OFFSET_INVALID
Le décalage spécifié dans un descripteur n’est pas valide.
NVME_STATUS_RESERVED
Réservé.
NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT
Le sous-système NVM a détecté l’utilisation simultanée de valeurs d’identificateur d’hôte 64 bits et 128 bits sur différents contrôleurs.
NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED
Le minuteur Keep Alive a expiré.
NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID
La valeur Keep Alive Timeout spécifiée n’est pas valide.
NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT
La commande a été abandonnée en raison d’une commande Reservation Acquire avec l’action d’acquisition de réservation (RACQA) définie sur 010b (Préempter et abandonner).
NVME_STATUS_SANITIZE_FAILED
L’opération d’assainissement la plus récente a échoué et aucune action de récupération n’a été effectuée avec succès.
NVME_STATUS_SANITIZE_IN_PROGRESS
La fonction demandée (par exemple, la commande) est interdite pendant qu’une opération d’assainissement est en cours.
NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID
L’alignement d’adresse ou la granularité de longueur d’un descripteur de bloc SGLData n’est pas valide.
NVME_STATUS_NVM_LBA_OUT_OF_RANGE
La commande fait référence à un LBA qui dépasse la taille de l’espace de noms.
NVME_STATUS_NVM_CAPACITY_EXCEEDED
L’exécution de la commande a entraîné le dépassement de la capacité de l’espace de noms. Cette erreur se produit lorsque l’utilisation de l’espace de noms dépasse la capacité de l’espace de noms.
NVME_STATUS_NVM_NAMESPACE_NOT_READY
L’espace de noms n’est pas prêt à être accessible. Le bit Ne pas réessayer indique si l’émission ultérieure de la commande peut réussir.
NVME_STATUS_NVM_RESERVATION_CONFLICT
La commande a été abandonnée en raison d’un conflit avec une réservation conservée sur l’espace de noms accessible.
NVME_STATUS_FORMAT_IN_PROGRESS
L’espace de noms est en cours de mise en forme. Le bit Ne pas réessayer est effacé à « 0 » pour indiquer que la commande peut réussir si elle est renvoyée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
En-tête nvme.h