《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.23)-- Format NVM command
5.23 Format NVM command - NVM Command Set Specific
Format NVM命令用于低级格式化NVM媒介。这个命令被host主机使用,来变更LBA数据大小和(或)元数据大小。一个低级格式化可以销毁命令指定的相关所有namespace或仅特定的namespace上的所有数据和元数据(参考Identify Controller数据结构中的Format NVM Attributes字段)。Foamat NVM命令成功完成之后,之前包含在对应namespace的任何用户数据都不能再由controller读出来了。
作为Format NVM命令的一部分,主机请求一个格式化操作并且可以请求一个NVM内容的安全擦除(参考Figure 328的SES字段)。有两种类型的擦除。User Data Erase擦除所有呈现在NVM subsystem中的用户内容。Cryptographic Erase是通过删除用于之前加密用户数据所用的加密密钥来擦除NVM subsystem中呈现的所有用户内容。
格式化操作的范围和安全擦除格式化的范围依赖于controller对Format NVM命令支持的属性和命令中指定的Namespace Identifier,请参见Figure 327中的描述。安全擦除类型,如果能使用的话,它基于Command Dword 10中Secure Erase Settings字段,如Figure 328中定义。
如果controller处于一种无效的安全状态(参考相应的安全规范,例如:TCG Storage Interface Interactions Specification)Format NVM命令将失败。如果有待处理的I/O命令到指定的被格式化的namespace,Format NVM命令可以失败。如果Format NVM命令正在被处理,发向此namespace的I/O命令可能被中止,如果中止发生controller就返回一个Format in Progress状态码。
对于一个NSID字段设置为0xFFFFFFFF的Format命令指定安全的擦除:
a)如果FNA字段的第1位设置为1(参考Figure247)并且NVM subsystem中没有namespaces,那么Format命令应该无错误完成;
b)如果FNA字段的第1位设置为0,并且没有挂载namespaces,那么Format命令应该无错误完成。
对于一个NSID字段设置为0xFFFFFFFF的Format命令未指定安全的擦除:
a)如果FNA字段的第0位设置为1,并且NVM subsystem中没有namespaces,那么Format命令应该无错误完成;
b)如果FNA字段的第0位设置为0,并且没有挂载namespaces,那么Format命令应该无错误完成。
Format NVM命令成功完成支持,Format NVM命令中指定的设置(例如PI,MSET,LBAF)被上报,作为Identify Namespace数据结构的一部分。如果Format NVM命令导致namespace的逻辑块大小变化,那么致使namespace大小(即:NSZE)(参考Figure245)和namespace能力(即:NCAP)(参考Figure245)与Format NVM命令处理之前指示的值可能不同。
Format NVM命令使用Command Dword 10字段。所有其他特定于命令的字段保留。
5.23.1 命令Completion
当NVM媒介格式化完成后CQE被推送到Admin CQ中。Format NVM命令特定状态值定义在Figure 329中。