面壁UNH IOL NVMe一致性测试之13 – Flush Command & Write Zeroes Command

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

Group 2 NVM Command Set的第6项是Flush Command测试。

Case 1: Valid Namespace ID

测试步骤:

  1. 针对每个active的namespace,Host向每个active的namespace发送Flush command ;

期望结果:

  1. 每个命令正常返回CQ;
  2. 如果Identify Controller Data Structure的VWC字段(Volatile Write Cache )Bit[0]被清零,检查确认每个Flush command执行成功;
  3. SSD返回的所有Reserved字段应为0;

Case 2: Invalid Namespace ID

测试步骤:

  1. Host向某个ID无效的Namespace发送Flush command;
  2. 如果SSD在Identify Controller Data Structure里上报的NN值 (支持的namespace数量),如果NN=0xFFFFFFFF,本测试无效;

期望结果:

Flush command返回Invalid Namespace or Format错误;

 

Group 2 NVM Command Set的第7项是Write Zeroes Command测试。

Case 1: SLBA In Range, NLB Valid, LR=0, FUA=0

测试步骤:

  1. 检查SSD是否支持Write Zeros command, 如果不支持,本测试无效;
  2. Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
  3. Host发送write zeros command上述LBA;
  4. Host发送read command上述LBA;

期望结果:

  1. SSD针对所有命令正常回复CQ;
  2. 第4步的read command读取数据为全‘0’;

Case 2: SLBA Out of Range, NLB Valid

测试步骤:

  1. 检查SSD是否支持Write Zeros command, 如果不支持,本测试无效;
  2. Host发送write zeros command到SSD,SLBA超出SSD支持范围;

期望结果:

  1. SSD返回错误 LBA out of Range

Case 3: SLBA Out of Range, NSID Invalid

测试步骤:

  1. 检查SSD是否支持Write Zeros command, 如果不支持,本测试无效;
  2. 检查SSD支持Namespace数量,如果该值为0xFFFFFFFF,本测试无效;
  3. Host发送Write Uncorrectable command命令到指定LBA,SLBA超出SSD支持范围,Namespace ID为无效值;

期望结果:

  1. SSD返回Invalid Namespace or Format错误

Case 4: SLBA Out of Range, but Lower Dword = 00000000

测试步骤:

  1. 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;

Host发送Write Zeroes command到指定LBA,SLBA =FFFFFFFF00000000h, 当作为64位值时超出超出SSD LBA范围,NLB值小于MDTS;

期望结果:

  1. Write Zeroes command返回LBA out of range错误;

Case 5: NLB greater than MDTS

测试步骤:

  1. 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
  2. 检查SSD的MDTS值,如果为0(没有限制),本测试无效;
  3. Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
  4. Host发送read command上述LBA;
  5. Host发送Write Zeroes command到指定LBA, 并使NLB大于MDTS;
  6. Host发送read command到所有被Write Zeroes command影响到的LBA;

期望结果:

  1. SSD针对所有命令正常回复CQ;
  2. 步骤4读取的数据与步骤3写入的相同;
  3. 步骤6读取的数据应该为全‘0’;

Case 6: SLBA In Range, NLB Valid, LR=0, FUA=1

测试步骤:

  1. 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
  2. Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
  3. Host发送write zeroes command上述LBA;
  4. Host发送read command上述LBA;

期望结果:

  1. SSD针对所有命令正常回复CQ;
  2. 步骤4读取的数据应该为全‘0’;

Case 7: SLBA In Range, NLB Valid, LR=1, FUA=0

测试步骤:

  1. 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
  2. Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替
  3. Host发送write zeroes command上述LBA;
  4. Host发送read command上述LBA;

期望结果:

  1. SSD针对所有命令正常回复CQ;

步骤4读取的数据应该为全‘0’;

Case 8: SLBA In Range, NLB Valid, LR=1, FUA=1 (M, OF-FYI)

测试步骤:

  1. 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
  2. Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替
  3. Host发送write zeroes command上述LBA;
  4. Host发送read command上述LBA;

期望结果:

  1. SSD针对所有命令正常回复CQ;
  2. 步骤4读取的数据应该为全‘0’;

Case 9: PRCHK is Non Zero

测试步骤:

  1. 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
  2. Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
  3. Host发送write zeroes command上述LBA,并指定PRCHK Value为非0值;
  4. Host发送read command上述LBA;

期望结果:

  1. SSD针对所有命令正常回复CQ;
  2. 针对步骤3的write zeroes command,SSD返回错误 – Invalid Field;

步骤4读取的数据与步骤2写入的相同;

分类目录 SSD, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。