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


структура NVME_IDENTIFY_NAMESPACE_DATA (nvme.h)

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

Возможности и параметры, общие для всех пространств имен, содержатся в структуре данных NVME_IDENTIFY_NAMESPACE_DATA для пространства имен с идентификатором 0xFFFFFFFFпространства имен .

Файл заголовка nvme.h определяет константную NVME_NAMESPACE_ALL со значением 0xFFFFFFFF.

Если контроллер поддерживает управление пространством имен, а для поля Идентификатор пространства имен (NSID) структуры NVME_COMMAND задано значение NVME_NAMESPACE_ALL, контроллер возвращает NVME_IDENTIFY_NAMESPACE_DATA структуру данных, которая указывает возможности, общие для всех пространств имен.

Синтаксис

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;

Члены

NSZE

Указывает общий размер пространства имен в логических блоках.

Пространство имен размера n состоит из адреса логического блока (LBA) 0 через (n - 1). Количество логических блоков зависит от форматированного размера LBA. Это поле не определено до форматирования пространства имен.

NCAP

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

Количество логических блоков зависит от форматированного размера LBA. Это поле не определено до форматирования пространства имен.

Поле NCAP используется в случае тонкой подготовки и сообщает значение, которое меньше или равно размеру пространства имен (NSZE).

Сведения о запасных подсистемах балансировки нагрузки не отображаются в этом поле. Значение 0h для емкости пространства имен (NCAP) указывает, что идентификатор пространства имен является неактивным идентификатором пространства имен. Логический блок выделяется при записи с помощью команды Write или Write Uncorrectable. Логический блок можно освободить с помощью команды Управление наборами данных .

NUSE

Указывает текущее количество логических блоков, выделенных в пространстве имен.

Значение этого поля меньше или равно значению поля NCAP "Емкость пространства имен".

Количество логических блоков зависит от форматированного размера LBA. При использовании набора команд NVM: логический блок выделяется при записи с помощью команды Write или Write Uncorrectable. Логический блок можно освободить с помощью команды Управление наборами данных .

Контроллер может постоянно сообщать значение NUSE , равное значению NCAP , если продукт не предназначен для сред тонкой подготовки.

NSFEAT

Структура функций пространства имен (NSFEAT), содержащая поля, определяющие признаки пространства имен.

NSFEAT.ThinProvisioning

Бит 0 структуры NSFEAT указывает, поддерживает ли пространство имен тонкую подготовку.

Если для этого значения задано 1значение , пространство имен поддерживает тонкую подготовку. В частности, сообщаемая емкость пространства имен (NCAP) может быть меньше размера пространства имен (NSZE). Если эта функция поддерживается и команда Dataset Management поддерживается, отмена выделения LBA будет отражена в поле Использование пространства имен (NUSE).

Если это значение очищается до 0, это означает, что тонкая подготовка не поддерживается, а поля NSZE и NCAP сообщают одно и то же значение.

NSFEAT.NameSpaceAtomicWriteUnit

Бит 1 структуры NSFEAT указывает, определены ли для этого пространства имен атомарные пограничные параметры пространства имен.

Если для этого значения задано значение 1, поля NAWUN, NAWUPF и NACWU определяются для этого пространства имен и должны использоваться узлом для этого пространства имен вместо полей AWUN, AWUPF и ACWU в структуре данных Идентификация контроллера .

Если это значение очищается до 0, контроллер не поддерживает поля NAWUN, NAWUPF и NACWU для этого пространства имен. В этом случае узел должен использовать поля AWUN, AWUPF и ACWU , определенные в структуре данных Идентификация контроллера .

NSFEAT.DeallocatedOrUnwrittenError

Бит 2 структуры NSFEAT указывает, поддерживает ли контроллер ошибку освобожденного или неписаного логического блока для этого пространства имен.

Если для этого значения задано значение 1, контроллер поддерживает ошибку Освобождено или Незаписанный логический блок (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) для этого пространства имен. Если это значение очищается до 0, контроллер не поддерживает ошибку NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK для этого пространства имен.

NSFEAT.SkipReuseUI

Бит 3 структуры NSFEAT — это параметр для функции пропуска повторного использования пользовательского интерфейса.

NSFEAT.NameSpaceIoOptimization

NSFEAT.Reserved

Биты 4:7 структуры NSFEAT зарезервированы.

NLBAF

Определяет количество поддерживаемых сочетаний размера данных LBA и размера метаданных, поддерживаемых пространством имен.

Форматы LBA выделяются по порядку (начиная с 0) и упаковываются последовательно. Это значение на основе 0. Максимальное число форматов LBA, которые могут быть указаны как поддерживаемые, — 16.

Поддерживаемые форматы LBA указываются в поле LBAF (байты 128–191 этой структуры данных). Метаданные могут быть переданы как часть LBA (создание расширенного LBA большего размера LBA, который предоставляется приложению) или в виде отдельного непрерывного буфера данных. Метаданные нельзя разделить между LBA и отдельным буфером метаданных.

Рекомендуется, чтобы программное обеспечение и контроллеры перешли на размер LBA 4 КБ или больше для повышения эффективности ECC на контроллере. При предоставлении метаданных рекомендуется предоставить не менее 8 байт для каждого логического блока, чтобы обеспечить сквозную защиту данных.

FLBAS

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

FLBAS.LbaFormatIndex

Биты 0:3 структуры FLBAS указывают один из 16 поддерживаемых форматов LBA, указанных в этой структуре данных.

FLBAS.MetadataInExtendedDataLBA

Бит 4 структуры FLBAS указывает, передаются ли метаданные в конце LBA данных, создавая расширенный LBA данных.

Если для этого значения задано значение 1, метаданные передаются в конце LBA данных, создавая расширенный LBA данных. Если это значение очищается до 0, это означает, что все метаданные для команды передаются в виде отдельного непрерывного буфера данных.

Бит 4 неприменим, если метаданные отсутствуют.

FLBAS.Reserved

Биты 5:7 структуры FLBAS зарезервированы.

MC

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

MC.MetadataInExtendedDataLBA

Бит 0 структуры MC указывает, поддерживает ли пространство имен метаданные, передаваемые в рамках расширенного LBA данных.

Если для этого значения задано 1значение , пространство имен поддерживает передачу метаданных в рамках расширенного LBA данных. Если это значение очищается до 0, это означает, что пространство имен не поддерживает передачу метаданных в рамках расширенного LBA данных.

MC.MetadataInSeparateBuffer

Бит 1 структуры MC указывает, поддерживает ли пространство имен метаданные, передаваемые в составе отдельного буфера.

Если для этого значения задано значение 1, пространство имен поддерживает передачу метаданных в составе отдельного буфера, указанного в поле Указатель метаданных (MPTR) структуры команд . Если это значение очищается до 0, пространство имен не поддерживает передачу метаданных в составе отдельного буфера.

MC.Reserved

Биты 7:2 структуры MC зарезервированы.

DPC

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

В этом поле можно задать несколько битов.

DPC.ProtectionInfoType1

Бит 0 структуры DPC указывает, поддерживает ли пространство имен тип сведений о защите 1.

Если для этого значения задано 1значение , пространство имен поддерживает тип сведений о защите 1. Если это значение очищено до 0, пространство имен не поддерживает тип сведений о защите 1.

DPC.ProtectionInfoType2

Бит 1 структуры DPC указывает, поддерживает ли пространство имен тип сведений о защите 2.

Если для этого значения задано 1значение , пространство имен поддерживает тип сведений о защите 2. Если это значение очищается до 0, пространство имен не поддерживает тип сведений о защите 2.

DPC.ProtectionInfoType3

Бит 2 структуры DPC указывает, поддерживает ли пространство имен тип сведений о защите 3.

Если для этого значения задано 1значение , пространство имен поддерживает тип сведений о защите 3. Если это значение очищается до 0, пространство имен не поддерживает тип сведений о защите 3.

DPC.InfoAtBeginningOfMetadata

Бит 3 структуры DPC указывает, поддерживает ли пространство имен сведения о защите, передаваемые в качестве первых восьми байт метаданных.

Если для этого значения задано значение 1, пространство имен поддерживает сведения о защите, передаваемые в качестве первых восьми байт метаданных. Если это значение очищается до 0, пространство имен не поддерживает сведения о защите, передаваемые в качестве первых восьми байт метаданных.

DPC.InfoAtEndOfMetadata

Бит 4 структуры DPC указывает, поддерживает ли пространство имен сведения о защите, передаваемые в качестве последних восьми байт метаданных.

Если для этого значения задано значение 1, пространство имен поддерживает сведения о защите, передаваемые в качестве последних восьми байт метаданных. Если это значение очищается до 0, пространство имен не поддерживает сведения о защите, передаваемые в качестве последних восьми байт метаданных.

DPC.Reserved

Биты 7:5 структуры DPC зарезервированы.

DPS

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

NVME_PROTECTION_INFORMATION_TYPES

DPS.ProtectionInfoTypeEnabled

Биты 2:0 структуры DPS — это NVME_PROTECTION_INFORMATION_TYPES значение, указывающее, включена ли защита информации и включен тип сведений о защите.

DPS.InfoAtBeginningOfMetadata

Бит 3 структуры DPS указывает, передаются ли сведения о защите, если они включены, в качестве первых восьми байт метаданных.

Если для этого значения задано 1значение , сведения о защите, если они включены, передаются в виде первых восьми байт метаданных. Если это значение очищается до 0, сведения о защите, если они включены, передаются как последние восемь байт метаданных.

DPS.Reserved

Биты 7:4 структуры DPS зарезервированы.

NMIC

Структура многопутевой операции ввода-вывода пространства имен и возможностей совместного использования пространства имен (NMIC), содержащая поля, указывающие возможности многопутевой операции ввода-вывода и совместного использования пространства имен пространства имен.

NMIC.SharedNameSpace

Бит 0 структуры NMIC указывает, может ли пространство имен быть общим пространством имен.

Если для этого значения задано 1значение , пространство имен может быть доступно для двух или более контроллеров в подсистеме NVM. Если это значение очищается до 0, пространство имен является частным пространством имен и может быть доступно только контроллеру, который вернул эту структуру данных пространства имен.

NMIC.Reserved

Биты 7:1 структуры NMIC зарезервированы.

RESCAP

Структура возможностей резервирования (RESCAP), содержащая поля, указывающие возможности резервирования пространства имен.

Значение 00h в этом поле указывает, что резервирование не поддерживается этим пространством имен.

FPI

Структура индикатора хода выполнения форматирования (FPI), содержащая поля, указывающие процент пространства имен, которое необходимо отформатировать при выполнении операции форматирования.

FPI.PercentageRemained

Биты 0:6 структуры FPI указывают процент отформатированного пространства имен. Например, значение 25 указывает, что 75 % пространства имен отформатировано, а 25 % осталось отформатировать.

Значение 0 указывает, что пространство имен отформатировано в формате, указанном полями FLBAS и DPS в этой структуре данных.

FPI.Supported

Бит 7 структуры FPI указывает, поддерживает ли пространство имен индикатор хода выполнения формата, определенный FPI. Поле PercentageRemained .

Если для этого значения задано 1значение , пространство имен поддерживает индикатор хода выполнения формата, определенный FPI. Поле PercentageRemained . Если это значение очислено в 0, пространство имен не поддерживает индикатор хода выполнения форматирования и FPI. Поле PercentageRemained будет очищено до 0h.

DLFEAT

DLFEAT.ReadBehavior

DLFEAT.WriteZeroes

DLFEAT.GuardFieldWithCRC

DLFEAT.Reserved

NAWUN

Указывает конкретный размер пространства имен операции записи, гарантированно записываемой атомарным образом в NVM во время обычной работы.

Значение 0h указывает, что размер этого пространства имен совпадает с размером, представленным в поле AWUN структуры данных "Определить контроллер ". Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUN .

NAWUPF

Указывает конкретный размер пространства имен операции записи, гарантированно записываемой атомарным образом в NVM во время сбоя питания или состояния ошибки.

Значение 0h указывает, что размер этого пространства имен совпадает с размером, представленным в поле AWUPF структуры данных "Определить контроллер ". Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUPF .

NACWU

Указывает конкретный размер пространства имен операции записи, гарантированно записываемой атомарным образом в NVM для команды Compare and Write fused.

Значение 0h указывает, что размер этого пространства имен совпадает с размером, представленным в поле ACWU структуры данных Идентификация контроллера . Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле ACWU .

NABSN

Указывает атомарный размер границы для этого пространства имен для значения NAWUN .

Это поле указывается в логических блоках. Операции записи в это пространство имен, которые пересекают атомарные границы, не являются атомарными в NVM по отношению к другим командам чтения или записи.

Значение указывает на отсутствие атомарных 0h границ для обычных операций записи. Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUN .

NABO

Указывает адрес логического блока (LBA) в этом пространстве имен, где начинается первая атомарная граница.

Если поля NABSN и NABSPF очищены до 0h, то поле NABO очищается до 0h. Значение NABO должно быть меньше или равно NABSN и NABSPF.

NABSPF

Указывает размер атомарной границы для этого пространства имен, относящееся к значению "Сбой атомарной единицы записи пространства имен".

Это поле указывается в логических блоках. Операции записи в это пространство имен, пересекающие атомарные границы, не гарантируются атомарными по отношению к другим командам чтения или записи, и нет никакой гарантии, что данные возвращаются при последующих считываниях связанных логических блоков.

Значение 0h указывает, что атомарные границы для состояния сбоя питания или ошибок отсутствуют. Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUPF .

NOIOB

Указывает оптимальную границу пространства имен ввода-вывода (NOIOB).

NVMCAP[16]

Указывает общий размер виртуальной машины NVM, выделенной для этого пространства имен.

Значение этого поля в байтах. Это поле поддерживается, если поддерживаются команды "Управление пространством имен" и "Вложение пространства имен".

Примечание. Это поле может не соответствовать размеру логического блока, умноженному на поле Размер пространства имен (NSZE). Из-за тонкой подготовки или других параметров (например, выносливости) это поле может быть больше или меньше, чем сообщалось в NSZE .

NPWG

NPWA

NPDG

NPDA

NOWS

MSSRL

MCL

MSRC

Reserved2[11]

Зарезервированное поле.

ANAGRPID

Reserved3[3]

Зарезервированы байты 192:383A.

NSATTR

NSATTR.WriteProtected

NSATTR.Reserved

NVMSETID

Указывает связанный идентификатор набора NVM (NVMSETID).

ENDGID

Указывает связанный идентификатор группы выносливости (ENDGID).

NGUID[16]

Содержит 128-разрядное значение, которое является глобально уникальным и присваивается пространству имен при создании пространства имен.

Поле Глобально уникальный идентификатор пространства имен (NGUID) остается фиксированным на протяжении всего срока существования пространства имен и сохраняется в операциях пространства имен и контроллера (таких как сброс контроллера и формат пространства имен).

В этом поле используется 16-байтовый формат конструктора на основе EUI-64.

  • Байты 114:112 содержат 24-разрядное значение company_id, присвоенное центром регистрации IEEE.
  • Байты 119:115 содержат идентификатор расширения, назначенный соответствующей организацией.
  • Байты 111:104 содержат идентификатор расширения конкретного поставщика, назначенный соответствующей организацией.

Дополнительные сведения см. в рекомендациях IEEE EUI-64. Контроллер должен указывать глобальный уникальный идентификатор пространства имен в этом поле или поле EUI64 при создании пространства имен.

EUI64[8]

Содержит 64-разрядный расширенный уникальный идентификатор IEEE (EUI-64), который является глобально уникальным и назначается пространству имен при создании пространства имен.

Поле EUI64 остается фиксированным на протяжении всего времени существования пространства имен и сохраняется в операциях пространства имен и контроллера (например, сброса контроллера и формата пространства имен).

EUI-64 — это объединение 24-разрядного или 36-разрядного значения company_id, присвоенного центром регистрации IEEE, и идентификатора расширения, назначенного соответствующей организацией. Дополнительные сведения см. в рекомендациях IEEE EUI-64.

Контроллер должен указать глобально уникальный идентификатор пространства имен в этом поле или поле NGUID при создании пространства имен. Если контроллер не может выделить глобально уникальный 64-разрядный идентификатор, это поле будет очищено в 0h.

LBAF[16]

Содержит массив из 16 NVME_LBA_FORMAT структур. Каждая структура в массиве задает формат LBA и указывает, что он поддерживается контроллером.

Отсчитываемая от нуля позиция структуры в массиве соответствует имени формата LBA, так что формат LBA 0 (LBAF0) находится в позиции 0, формат LBA 1 (LBAF1) находится в позиции 1 и т. д., вплоть до формата LBA 15 (LBAF15) в позиции 15.

Reserved4[192]

VS[3712]

Этот диапазон байтов (384:4095) выделяется для использования конкретного поставщика (VS).

Требования

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