Group 2 NVM Command Set的第6项是Flush Command测试。
Case 1: Valid Namespace ID
测试步骤:
- 针对每个active的namespace,Host向每个active的namespace发送Flush command ;
期望结果:
- 每个命令正常返回CQ;
- 如果Identify Controller Data Structure的VWC字段(Volatile Write Cache )Bit[0]被清零,检查确认每个Flush command执行成功;
- SSD返回的所有Reserved字段应为0;
Case 2: Invalid Namespace ID
测试步骤:
- Host向某个ID无效的Namespace发送Flush command;
- 如果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
测试步骤:
- 检查SSD是否支持Write Zeros command, 如果不支持,本测试无效;
- Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
- Host发送write zeros command上述LBA;
- Host发送read command上述LBA;
期望结果:
- SSD针对所有命令正常回复CQ;
- 第4步的read command读取数据为全‘0’;
Case 2: SLBA Out of Range, NLB Valid
测试步骤:
- 检查SSD是否支持Write Zeros command, 如果不支持,本测试无效;
- Host发送write zeros command到SSD,SLBA超出SSD支持范围;
期望结果:
- SSD返回错误 LBA out of Range
Case 3: SLBA Out of Range, NSID Invalid
测试步骤:
- 检查SSD是否支持Write Zeros command, 如果不支持,本测试无效;
- 检查SSD支持Namespace数量,如果该值为0xFFFFFFFF,本测试无效;
- Host发送Write Uncorrectable command命令到指定LBA,SLBA超出SSD支持范围,Namespace ID为无效值;
期望结果:
- SSD返回Invalid Namespace or Format错误
Case 4: SLBA Out of Range, but Lower Dword = 00000000
测试步骤:
- 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
Host发送Write Zeroes command到指定LBA,SLBA =FFFFFFFF00000000h, 当作为64位值时超出超出SSD LBA范围,NLB值小于MDTS;
期望结果:
- Write Zeroes command返回LBA out of range错误;
Case 5: NLB greater than MDTS
测试步骤:
- 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
- 检查SSD的MDTS值,如果为0(没有限制),本测试无效;
- Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
- Host发送read command上述LBA;
- Host发送Write Zeroes command到指定LBA, 并使NLB大于MDTS;
- Host发送read command到所有被Write Zeroes command影响到的LBA;
期望结果:
- SSD针对所有命令正常回复CQ;
- 步骤4读取的数据与步骤3写入的相同;
- 步骤6读取的数据应该为全‘0’;
Case 6: SLBA In Range, NLB Valid, LR=0, FUA=1
测试步骤:
- 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
- Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
- Host发送write zeroes command上述LBA;
- Host发送read command上述LBA;
期望结果:
- SSD针对所有命令正常回复CQ;
- 步骤4读取的数据应该为全‘0’;
Case 7: SLBA In Range, NLB Valid, LR=1, FUA=0
测试步骤:
- 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
- Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替
- Host发送write zeroes command上述LBA;
- Host发送read command上述LBA;
期望结果:
- SSD针对所有命令正常回复CQ;
步骤4读取的数据应该为全‘0’;
Case 8: SLBA In Range, NLB Valid, LR=1, FUA=1 (M, OF-FYI)
测试步骤:
- 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
- Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替
- Host发送write zeroes command上述LBA;
- Host发送read command上述LBA;
期望结果:
- SSD针对所有命令正常回复CQ;
- 步骤4读取的数据应该为全‘0’;
Case 9: PRCHK is Non Zero
测试步骤:
- 检查SSD是否支持Write Zeroes command, 如果不支持,本测试无效;
- Host发送write command到指定LBA,数据pattern为全‘1’或者’1’/’0’交替;
- Host发送write zeroes command上述LBA,并指定PRCHK Value为非0值;
- Host发送read command上述LBA;
期望结果:
- SSD针对所有命令正常回复CQ;
- 针对步骤3的write zeroes command,SSD返回错误 – Invalid Field;
步骤4读取的数据与步骤2写入的相同;