structure NVME_IDENTIFY_NAMESPACE_DATA (nvme.h)

Contient des valeurs qui indiquent des fonctionnalités et des paramètres spécifiques à un espace de noms particulier.

Les fonctionnalités et paramètres communs à tous les espaces de noms sont contenus dans la structure de données NVME_IDENTIFY_NAMESPACE_DATA de l’espace de noms avec l’identificateur d’espace de noms de 0xFFFFFFFF.

Le fichier d’en-tête nvme.h définit la constante NVME_NAMESPACE_ALL avec la valeur .0xFFFFFFFF

Si le contrôleur prend en charge la gestion des espaces de noms et que le champ Identificateur d’espace de noms (NSID) de la structure NVME_COMMAND est défini sur NVME_NAMESPACE_ALL, le contrôleur retourne une structure de données NVME_IDENTIFY_NAMESPACE_DATA qui spécifie des fonctionnalités communes à tous les espaces de noms.

Syntaxe

typedef struct {
  ULONGLONG                    NSZE;
  ULONGLONG                    NCAP;
  ULONGLONG                    NUSE;
  struct {
    UCHAR ThinProvisioning : 1;
    UCHAR NameSpaceAtomicWriteUnit : 1;
    UCHAR DeallocatedOrUnwrittenError : 1;
    UCHAR SkipReuseUI : 1;
    UCHAR NameSpaceIoOptimization : 1;
    UCHAR Reserved : 3;
  } NSFEAT;
  UCHAR                        NLBAF;
  struct {
    UCHAR LbaFormatIndex : 4;
    UCHAR MetadataInExtendedDataLBA : 1;
    UCHAR Reserved : 3;
  } FLBAS;
  struct {
    UCHAR MetadataInExtendedDataLBA : 1;
    UCHAR MetadataInSeparateBuffer : 1;
    UCHAR Reserved : 6;
  } MC;
  struct {
    UCHAR ProtectionInfoType1 : 1;
    UCHAR ProtectionInfoType2 : 1;
    UCHAR ProtectionInfoType3 : 1;
    UCHAR InfoAtBeginningOfMetadata : 1;
    UCHAR InfoAtEndOfMetadata : 1;
    UCHAR Reserved : 3;
  } DPC;
  struct {
    UCHAR ProtectionInfoTypeEnabled : 3;
    UCHAR InfoAtBeginningOfMetadata : 1;
    UCHAR Reserved : 4;
  } DPS;
  struct {
    UCHAR SharedNameSpace : 1;
    UCHAR Reserved : 7;
  } NMIC;
  NVM_RESERVATION_CAPABILITIES RESCAP;
  struct {
    UCHAR PercentageRemained : 7;
    UCHAR Supported : 1;
  } FPI;
  struct {
    UCHAR ReadBehavior : 3;
    UCHAR WriteZeroes : 1;
    UCHAR GuardFieldWithCRC : 1;
    UCHAR Reserved : 3;
  } DLFEAT;
  USHORT                       NAWUN;
  USHORT                       NAWUPF;
  USHORT                       NACWU;
  USHORT                       NABSN;
  USHORT                       NABO;
  USHORT                       NABSPF;
  USHORT                       NOIOB;
  UCHAR                        NVMCAP[16];
  USHORT                       NPWG;
  USHORT                       NPWA;
  USHORT                       NPDG;
  USHORT                       NPDA;
  USHORT                       NOWS;
  USHORT                       MSSRL;
  ULONG                        MCL;
  UCHAR                        MSRC;
  UCHAR                        Reserved2[11];
  ULONG                        ANAGRPID;
  UCHAR                        Reserved3[3];
  struct {
    UCHAR WriteProtected : 1;
    UCHAR Reserved : 7;
  } NSATTR;
  USHORT                       NVMSETID;
  USHORT                       ENDGID;
  UCHAR                        NGUID[16];
  UCHAR                        EUI64[8];
  NVME_LBA_FORMAT              LBAF[16];
  UCHAR                        Reserved4[192];
  UCHAR                        VS[3712];
} NVME_IDENTIFY_NAMESPACE_DATA, *PNVME_IDENTIFY_NAMESPACE_DATA;

Membres

NSZE

Indique la taille totale de l’espace de noms dans les blocs logiques.

Un espace de noms de taille n se compose d’une adresse de bloc logique (LBA) 0 à (n - 1). Le nombre de blocs logiques est basé sur la taille de LBA mise en forme. Ce champ n’est pas défini avant la mise en forme de l’espace de noms.

NCAP

Indique le nombre maximal de blocs logiques qui peuvent être alloués dans l’espace de noms à tout moment.

Le nombre de blocs logiques est basé sur la taille de LBA mise en forme. Ce champ n’est pas défini avant la mise en forme de l’espace de noms.

Le champ NCAP est utilisé dans le cas de l’approvisionnement mince et indique une valeur inférieure ou égale à la taille de l’espace de noms (NSZE).

Les LBA de remplacement ne sont pas signalés dans ce champ. La valeur de pour la capacité d’espace de 0h noms (NCAP) indique que l’ID d’espace de noms est un ID d’espace de noms inactif. Un bloc logique est alloué lorsqu’il est écrit avec une commande Write ou Write Uncorrectable. Un bloc logique peut être libéré à l’aide de la commande Gestion des jeux de données .

NUSE

Indique le nombre actuel de blocs logiques alloués dans l’espace de noms.

La valeur de ce champ est inférieure ou égale à la valeur du champ NCAP de capacité d’espace de noms.

Le nombre de blocs logiques est basé sur la taille de LBA mise en forme. Lors de l’utilisation du jeu de commandes NVM : un bloc logique est alloué lorsqu’il est écrit avec une commande Write ou Write Uncorrectable. Un bloc logique peut être libéré à l’aide de la commande Gestion des jeux de données .

Un contrôleur peut signaler une valeur NUSE égale à une valeur NCAP à tout moment si le produit n’est pas ciblé pour les environnements d’approvisionnement léger.

NSFEAT

Structure NSFEAT (Namespace Features) contenant des champs qui définissent les fonctionnalités de l’espace de noms.

NSFEAT.ThinProvisioning

Le bit 0 de la structure NSFEAT indique si l’espace de noms prend en charge l’approvisionnement léger.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge l’approvisionnement léger. Plus précisément, la capacité d’espace de noms (NCAP) signalée peut être inférieure à la taille de l’espace de noms (NSZE). Lorsque cette fonctionnalité est prise en charge et que la commande Gestion des jeux de données est prise en charge, la désaffectation des LBA est reflétée dans le champ Utilisation de l’espace de noms (NUSE).

Lorsque cette valeur est effacée en 0, cela indique que l’approvisionnement léger n’est pas pris en charge et que les champs NSZE et NCAP signalent la même valeur.

NSFEAT.NameSpaceAtomicWriteUnit

Le bit 1 de la structure NSFEAT indique si les paramètres de limite atomique d’espace de noms sont définis pour cet espace de noms.

Lorsque cette valeur est définie sur 1, les champs NAWUN, NAWUPF et NACWU sont définis pour cet espace de noms et doivent être utilisés par l’hôte pour cet espace de noms au lieu des champs AWUN, AWUPF et ACWU dans la structure de données Identifier le contrôleur .

Lorsque cette valeur est effacée en 0, le contrôleur ne prend pas en charge les champs NAWUN, NAWUPF et NACWU pour cet espace de noms. Dans ce cas, l’hôte doit utiliser les champs AWUN, AWUPF et ACWU définis dans la structure de données Identifier le contrôleur .

NSFEAT.DeallocatedOrUnwrittenError

Le bit 2 de la structure NSFEAT indique si le contrôleur prend en charge l’erreur de bloc logique libéré ou non écrit pour cet espace de noms.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge l’erreur Bloc logique désalloué ou non écrit (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) pour cet espace de noms. Lorsque cette valeur est effacée, 0le contrôleur ne prend pas en charge l’erreur NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK pour cet espace de noms.

NSFEAT.SkipReuseUI

Le bit 3 de la structure NSFEAT est un paramètre pour la fonctionnalité Ignorer la réutilisation de l’interface utilisateur.

NSFEAT.NameSpaceIoOptimization

NSFEAT.Reserved

Les bits 4 :7 de la structure NSFEAT sont réservés.

NLBAF

Définit le nombre de combinaisons de taille de données LBA et de taille de métadonnées prises en charge par l’espace de noms.

Les formats LBA sont alloués dans l’ordre (à partir de 0) et emballés séquentiellement. Il s’agit d’une valeur de base de 0. Le nombre maximal de formats LBA qui peuvent être indiqués comme pris en charge est 16.

Les formats LBA pris en charge sont indiqués dans le champ LBAF (octets de 128 à 191 de cette structure de données). Les métadonnées peuvent être transférées dans le cadre du LBA (création d’un LBA étendu qui est une taille LBA plus grande exposée à l’application) ou être transférées en tant que mémoire tampon contiguë distincte de données. Les métadonnées ne peuvent pas être fractionnées entre le LBA et une mémoire tampon de métadonnées distincte.

Il est recommandé que les logiciels et les contrôleurs passent à une taille LBA supérieure ou égale à 4 Ko pour une efficacité ECC au niveau du contrôleur. Si vous fournissez des métadonnées, il est recommandé de fournir au moins 8 octets par bloc logique pour permettre une utilisation avec la protection des données de bout en bout.

FLBAS

Structure FLBAS (Formatted LBA Size) contenant des champs qui indiquent la combinaison taille des données LBA et taille des métadonnées avec laquelle l’espace de noms a été mis en forme.

FLBAS.LbaFormatIndex

Les bits 0 :3 de la structure FLBAS spécifient l’un des 16 formats LBA pris en charge indiqués dans cette structure de données.

FLBAS.MetadataInExtendedDataLBA

Le bit 4 de la structure FLBAS indique si les métadonnées sont transférées à la fin du LBA de données, ce qui crée une base de données étendue.

Lorsque cette valeur est définie sur 1, les métadonnées sont transférées à la fin du LBA de données, créant ainsi une base de données étendue. Lorsque cette valeur est effacée sur 0, cela indique que toutes les métadonnées d’une commande sont transférées en tant que mémoire tampon contiguë distincte de données.

Bit 4 n’est pas applicable lorsqu’il n’y a pas de métadonnées.

FLBAS.Reserved

Les bits 5 :7 de la structure FLBAS sont réservés.

MC

Structure MC (Metadata Capabilities) contenant des champs qui indiquent les fonctionnalités des métadonnées.

MC.MetadataInExtendedDataLBA

Le bit 0 de la structure MC indique si l’espace de noms prend en charge les métadonnées transférées dans le cadre d’un LBA de données étendu.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge les métadonnées transférées dans le cadre d’une base de données étendue. Lorsque cette valeur est effacée en 0, cela indique que l’espace de noms ne prend pas en charge les métadonnées en cours de transfert dans le cadre d’un LBA de données étendu.

MC.MetadataInSeparateBuffer

Le bit 1 de la structure MC indique si l’espace de noms prend en charge les métadonnées transférées dans le cadre d’une mémoire tampon distincte.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge les métadonnées transférées dans le cadre d’une mémoire tampon distincte spécifiée dans le champ Pointeur de métadonnées (MPTR) de la structure de commande . Lorsque cette valeur est effacée, l’espace 0de noms ne prend pas en charge les métadonnées transférées dans le cadre d’une mémoire tampon distincte.

MC.Reserved

Les bits 7 :2 de la structure MC sont réservés.

DPC

Structure DPC (DPC) de bout en bout contenant des champs qui indiquent les fonctionnalités de la fonctionnalité de protection des données de bout en bout.

Plusieurs bits peuvent être définis dans ce champ.

DPC.ProtectionInfoType1

Le bit 0 de la structure DPC indique si l’espace de noms prend en charge le type d’informations de protection 1.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge le type d’informations de protection 1. Lorsque cette valeur est effacée, l’espace 0de noms ne prend pas en charge le type d’informations de protection 1.

DPC.ProtectionInfoType2

Le bit 1 de la structure DPC indique si l’espace de noms prend en charge le type d’informations de protection 2.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge le type d’informations de protection 2. Lorsque cette valeur est effacée , l’espace 0de noms ne prend pas en charge le type d’informations de protection 2.

DPC.ProtectionInfoType3

Le bit 2 de la structure DPC indique si l’espace de noms prend en charge le type d’informations de protection 3.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge le type d’informations de protection 3. Lorsque cette valeur est effacée, l’espace 0de noms ne prend pas en charge le type d’informations de protection 3.

DPC.InfoAtBeginningOfMetadata

Le bit 3 de la structure DPC indique si l’espace de noms prend en charge les informations de protection transférées comme les huit premiers octets de métadonnées.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge les informations de protection transférées comme les huit premiers octets de métadonnées. Lorsque cette valeur est effacée en , l’espace 0de noms ne prend pas en charge les informations de protection transférées comme les huit premiers octets de métadonnées.

DPC.InfoAtEndOfMetadata

Le bit 4 de la structure DPC indique si l’espace de noms prend en charge les informations de protection transférées comme les huit derniers octets de métadonnées.

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge les informations de protection transférées comme les huit derniers octets de métadonnées. Lorsque cette valeur est effacée en 0, l’espace de noms ne prend pas en charge les informations de protection transférées comme les huit derniers octets de métadonnées.

DPC.Reserved

Les bits 7 :5 de la structure DPC sont réservés.

DPS

Structure DPS (Data Protection Type Settings) de bout en bout contenant des champs qui indiquent les paramètres de type pour la fonctionnalité de protection des données de bout en bout.

NVME_PROTECTION_INFORMATION_TYPES

DPS.ProtectionInfoTypeEnabled

Bits 2 :0 de la structure DPS est une valeur NVME_PROTECTION_INFORMATION_TYPES qui indique si les informations de protection sont activées et si le type d’informations de protection est activé.

DPS.InfoAtBeginningOfMetadata

Le bit 3 de la structure DPS indique si les informations de protection, si elles sont activées, sont transférées en tant que huit premiers octets de métadonnées.

Lorsque cette valeur est définie sur 1, les informations de protection, si elles sont activées, sont transférées en tant que huit premiers octets de métadonnées. Lorsque cette valeur est effacée pour 0, les informations de protection, si activées, sont transférées comme les huit derniers octets de métadonnées.

DPS.Reserved

Les bits 7 :4 de la structure DPS sont réservés.

NMIC

Structure D’E/S multi-chemin d’espace de noms et de partage d’espaces de noms (NMIC) contenant des champs qui spécifient les fonctionnalités d’E/S multi-chemin et de partage d’espace de noms de l’espace de noms.

NMIC.SharedNameSpace

Le bit 0 de la structure NMIC indique si l’espace de noms peut être un espace de noms partagé.

Lorsque cette valeur est définie sur 1, l’espace de noms peut être accessible par deux contrôleurs ou plus dans le sous-système NVM. Lorsque cette valeur est effacée, 0l’espace de noms est un espace de noms privé et n’est accessible que par le contrôleur qui a retourné cette structure de données d’espace de noms.

NMIC.Reserved

Les bits 7 :1 de la structure NMIC sont réservés.

RESCAP

Structure RESCAP (Reservation Capabilities) contenant des champs qui spécifient les fonctionnalités de réservation de l’espace de noms.

La valeur de 00h dans ce champ indique que les réservations ne sont pas prises en charge par cet espace de noms.

FPI

Structure de l’indicateur de progression du format (FPI) contenant des champs qui indiquent le pourcentage de l’espace de noms qui reste à mettre en forme lorsqu’une opération de mise en forme est en cours.

FPI.PercentageRemained

Les bits 0 :6 de la structure FPI indiquent le pourcentage de l’espace de noms qui reste à mettre en forme. Par exemple, la valeur indique 25 que 75 % de l’espace de noms a été mis en forme et que 25 % restent à mettre en forme.

La valeur indique que l’espace de 0 noms est mis en forme avec le format spécifié par les champs FLBAS et DPS dans cette structure de données.

FPI.Supported

Le bit 7 de la structure FPI indique si l’espace de noms prend en charge l’indicateur de progression du format défini par l’indicateur FPI. Champ PercentageRemained .

Lorsque cette valeur est définie sur 1, l’espace de noms prend en charge l’indicateur de progression du format défini par l’indicateur FPI. Champ PercentageRemained . Lorsque cette valeur est effacée sur 0, l’espace de noms ne prend pas en charge l’indicateur de progression du format et l’indicateur FPI. Le champ PercentageRemained est effacé en 0h.

DLFEAT

DLFEAT.ReadBehavior

DLFEAT.WriteZeroes

DLFEAT.GuardFieldWithCRC

DLFEAT.Reserved

NAWUN

Indique la taille spécifique de l’espace de noms de l’opération d’écriture garantie pour être écrite atomiquement dans la machine virtuelle NVM pendant le fonctionnement normal.

La valeur indique que la taille de cet espace de 0h noms est identique à celle indiquée dans le champ AWUN de la structure de données Identifier le contrôleur . Toutes les autres valeurs spécifient une taille en termes de blocs logiques utilisant le même encodage que le champ AWUN .

NAWUPF

Indique la taille spécifique de l’espace de noms de l’opération d’écriture garantie pour être écrite atomiquement sur la machine virtuelle NVM pendant une panne d’alimentation ou une condition d’erreur.

La valeur indique que la taille de cet espace de 0h noms est identique à celle indiquée dans le champ AWUPF de la structure de données Identifier le contrôleur . Toutes les autres valeurs spécifient une taille en termes de blocs logiques utilisant le même encodage que le champ AWUPF .

NACWU

Indique la taille spécifique de l’espace de noms de l’opération d’écriture garantie pour être écrite atomiquement dans la machine virtuelle NVM pour une commande fusionnée Comparer et écrire.

La valeur indique que la taille de cet espace de 0h noms est identique à celle indiquée dans le champ ACWU de la structure de données Identifier le contrôleur . Toutes les autres valeurs spécifient une taille en termes de blocs logiques utilisant le même encodage que le champ ACWU .

NABSN

Indique la taille de la limite atomique pour cet espace de noms pour la valeur NAWUN .

Ce champ est spécifié dans des blocs logiques. Écrit dans cet espace de noms qui dépassent les limites atomiques ne sont pas garantis pour être atomiques pour la machine virtuelle NVM en ce qui concerne d’autres commandes de lecture ou d’écriture.

La valeur indique qu’il n’existe 0h aucune limite atomique pour les opérations d’écriture normales. Toutes les autres valeurs spécifient une taille en termes de blocs logiques utilisant le même encodage que le champ AWUN .

NABO

Indique l’adresse de bloc logique (LBA) sur cet espace de noms où commence la première limite atomique.

Si les champs NABSN et NABSPF sont effacés sur 0h, le champ NABO est effacé à 0h. La valeur de NABO doit être inférieure ou égale à NABSN et NABSPF.

NABSPF

Indique la taille de la limite atomique pour cet espace de noms spécifique à la valeur Échec de l’alimentation de l’unité d’écriture atomique de l’espace de noms.

Ce champ est spécifié dans des blocs logiques. Écrit dans cet espace de noms qui dépassent les limites atomiques n’est pas garanti atomique par rapport à d’autres commandes de lecture ou d’écriture et il n’existe aucune garantie que les données retournées lors des lectures ultérieures des blocs logiques associés.

La valeur indique qu’il n’existe 0h aucune limite atomique pour les conditions de panne de puissance ou d’erreur. Toutes les autres valeurs spécifient une taille en termes de blocs logiques utilisant le même encodage que le champ AWUPF .

NOIOB

Indique la limite d’E/S optimales de l’espace de noms (NOIOB).

NVMCAP[16]

Indique la taille totale de la machine virtuelle NVM allouée à cet espace de noms.

La valeur de ce champ est en octets. Ce champ est pris en charge si les commandes Gestion des espaces de noms et Pièce jointe d’espace de noms sont prises en charge.

Remarque : Ce champ peut ne pas correspondre à la taille de bloc logique multipliée par le champ Taille de l’espace de noms (NSZE). En raison de l’approvisionnement dynamique ou d’autres paramètres (comme l’endurance), ce champ peut être plus grand ou plus petit que le NSZE signalé.

NPWG

NPWA

NPDG

NPDA

NOWS

MSSRL

MCL

MSRC

Reserved2[11]

Champ réservé.

ANAGRPID

Reserved3[3]

Les octets 192 :383A sont réservés.

NSATTR

NSATTR.WriteProtected

NSATTR.Reserved

NVMSETID

Indique l’identificateur de jeu NVM associé (NVMSETID).

ENDGID

Indique l’identificateur de groupe d’endurance associé (ENDGID).

NGUID[16]

Contient une valeur 128 bits qui est globalement unique et affectée à l’espace de noms lors de la création de l’espace de noms.

Le champ NGUID (Namespace Globally Unique Identifier) reste fixe pendant toute la durée de vie de l’espace de noms et est conservé dans les opérations d’espace de noms et de contrôleur (telles que la réinitialisation du contrôleur et le format de l’espace de noms).

Ce champ utilise le format d’indicateur de 16 octets basé sur EUI-64.

  • Les octets 114 :112 contiennent la valeur de company_id 24 bits attribuée par l’autorité d’inscription IEEE.
  • Les octets 119 :115 contiennent un identificateur d’extension attribué par le organization correspondant.
  • Les octets 111 :104 contiennent l’identificateur d’extension propre au fournisseur attribué par le organization correspondant.

Pour plus d’informations, consultez les directives IEEE EUI-64. Le contrôleur doit spécifier un identificateur d’espace de noms global unique dans ce champ ou le champ EUI64 lors de la création de l’espace de noms.

EUI64[8]

Contient un identificateur unique étendu IEEE 64 bits (EUI-64) globalement unique et affecté à l’espace de noms lors de la création de l’espace de noms.

Le champ EUI64 reste fixe pendant toute la durée de vie de l’espace de noms et est conservé dans les opérations de l’espace de noms et du contrôleur (telles que la réinitialisation du contrôleur et le format de l’espace de noms).

L’EUI-64 est une concaténation d’une valeur de company_id 24 bits ou 36 bits attribuée par l’autorité d’inscription IEEE et d’un identificateur d’extension attribué par le organization correspondant. Pour plus d’informations, consultez les directives IEEE EUI-64.

Le contrôleur doit spécifier un identificateur d’espace de noms global unique dans ce champ ou le champ NGUID lors de la création de l’espace de noms. Si le contrôleur n’est pas en mesure d’allouer un identificateur global unique 64 bits, ce champ est effacé dans 0h.

LBAF[16]

Contient un tableau de 16 structures NVME_LBA_FORMAT . Chaque structure du tableau spécifie un format LBA et indique qu’il est pris en charge par le contrôleur.

La position de base zéro d’une structure dans le tableau correspond au nom du format LBA, de sorte que le format LBA 0 (LBAF0) est à la position 0, le format LBA 1 (LBAF1) est à la position 1, et ainsi de suite, jusqu’au format LBA 15 (LBAF15) en position 15.

Reserved4[192]

VS[3712]

Cette plage d’octets (384 :4095) est allouée pour l’utilisation spécifique du fournisseur (VS).

Configuration requise

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