test_writesame*_0blocks: skip 0-block test if unsupported
Skip 0-block WRITE SAME tests for targets that don't support these operations, ie. they have write_same_no_zero (WSNZ) set in the block limits vpd. Also, fix the test: "Test WRITESAME10 of 1-256 blocks at the end of the LUN by setting number-of-blocks==0" to actually pass 0 blocks instead of the number of remaining blocks to the end. Signed-off-by: Chris Zankel <chris@zankel.net>
This commit is contained in:
@@ -41,6 +41,16 @@ test_writesame10_0blocks(void)
|
|||||||
logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==0 (WSNZ=%d)",
|
logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==0 (WSNZ=%d)",
|
||||||
inq_bl->wsnz);
|
inq_bl->wsnz);
|
||||||
memset(buf, 0, block_size);
|
memset(buf, 0, block_size);
|
||||||
|
|
||||||
|
if (inq_bl->wsnz) {
|
||||||
|
ret = writesame10(sd, 0,
|
||||||
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
|
EXPECT_INVALID_FIELD_IN_CDB);
|
||||||
|
logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 does not support 0-blocks.");
|
||||||
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ret = writesame10(sd, 0,
|
ret = writesame10(sd, 0,
|
||||||
block_size, 0, 0, 0, 0, 0, buf,
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
EXPECT_STATUS_GOOD);
|
EXPECT_STATUS_GOOD);
|
||||||
@@ -52,11 +62,7 @@ test_writesame10_0blocks(void)
|
|||||||
} else if (ret == -4) {
|
} else if (ret == -4) {
|
||||||
CU_PASS("[SKIPPED] Number of WRITESAME10 logical blocks to be written exceeds MAXIMUM WRITE SAME LENGTH");
|
CU_PASS("[SKIPPED] Number of WRITESAME10 logical blocks to be written exceeds MAXIMUM WRITE SAME LENGTH");
|
||||||
} else {
|
} else {
|
||||||
if (inq_bl->wsnz) {
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
CU_ASSERT_EQUAL(ret, -1);
|
|
||||||
} else {
|
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks one block past end-of-LUN");
|
logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks one block past end-of-LUN");
|
||||||
|
|||||||
@@ -40,6 +40,12 @@ test_writesame10_unmap_until_end(void)
|
|||||||
zeroBlock = alloca(block_size);
|
zeroBlock = alloca(block_size);
|
||||||
memset(zeroBlock, 0, block_size);
|
memset(zeroBlock, 0, block_size);
|
||||||
|
|
||||||
|
if (inq_bl->wsnz) {
|
||||||
|
logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 does not support 0-blocks.");
|
||||||
|
CU_PASS("[SKIPPED] WRITESAME10 does not support 0-blocks.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME10 of 1-256 blocks at the end of the LUN by setting number-of-blocks==0");
|
logging(LOG_VERBOSE, "Test WRITESAME10 of 1-256 blocks at the end of the LUN by setting number-of-blocks==0");
|
||||||
for (i = 1; i <= 256; i++) {
|
for (i = 1; i <= 256; i++) {
|
||||||
@@ -54,7 +60,7 @@ test_writesame10_unmap_until_end(void)
|
|||||||
|
|
||||||
logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i);
|
logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i);
|
||||||
ret = writesame10(sd, num_blocks - i,
|
ret = writesame10(sd, num_blocks - i,
|
||||||
block_size, i, 0, 1, 0, 0, buf,
|
block_size, 0, 0, 1, 0, 0, buf,
|
||||||
EXPECT_STATUS_GOOD);
|
EXPECT_STATUS_GOOD);
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,16 @@ test_writesame16_0blocks(void)
|
|||||||
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==0 (WSNZ=%d)",
|
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==0 (WSNZ=%d)",
|
||||||
inq_bl->wsnz);
|
inq_bl->wsnz);
|
||||||
memset(buf, 0, block_size);
|
memset(buf, 0, block_size);
|
||||||
|
|
||||||
|
if (inq_bl->wsnz) {
|
||||||
|
ret = writesame16(sd, 0,
|
||||||
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
|
EXPECT_INVALID_FIELD_IN_CDB);
|
||||||
|
logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 does not support 0-blocks.");
|
||||||
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ret = writesame16(sd, 0,
|
ret = writesame16(sd, 0,
|
||||||
block_size, 0, 0, 0, 0, 0, buf,
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
EXPECT_STATUS_GOOD);
|
EXPECT_STATUS_GOOD);
|
||||||
@@ -48,30 +58,26 @@ test_writesame16_0blocks(void)
|
|||||||
} else if (ret == -4) {
|
} else if (ret == -4) {
|
||||||
CU_PASS("[SKIPPED] Number of WRITESAME16 logical blocks to be written exceeds MAXIMUM WRITE SAME LENGTH");
|
CU_PASS("[SKIPPED] Number of WRITESAME16 logical blocks to be written exceeds MAXIMUM WRITE SAME LENGTH");
|
||||||
} else {
|
} else {
|
||||||
if (inq_bl->wsnz) {
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
CU_ASSERT_EQUAL(ret, -1);
|
|
||||||
} else {
|
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks one block past end-of-LUN");
|
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks one block past end-of-LUN");
|
||||||
ret = writesame16(sd, num_blocks + 1,
|
ret = writesame16(sd, num_blocks + 1,
|
||||||
block_size, inq_bl->wsnz, 0, 0, 0, 0, buf,
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
EXPECT_LBA_OOB);
|
EXPECT_LBA_OOB);
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|
||||||
|
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==2^63");
|
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==2^63");
|
||||||
ret = writesame16(sd, 0x8000000000000000ULL,
|
ret = writesame16(sd, 0x8000000000000000ULL,
|
||||||
block_size, inq_bl->wsnz, 0, 0, 0, 0, buf,
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
EXPECT_LBA_OOB);
|
EXPECT_LBA_OOB);
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|
||||||
|
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==-1");
|
logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==-1");
|
||||||
ret = writesame16(sd, -1,
|
ret = writesame16(sd, -1,
|
||||||
block_size, inq_bl->wsnz, 0, 0, 0, 0, buf,
|
block_size, 0, 0, 0, 0, 0, buf,
|
||||||
EXPECT_LBA_OOB);
|
EXPECT_LBA_OOB);
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,12 @@ test_writesame16_unmap_until_end(void)
|
|||||||
CHECK_FOR_LBPWS;
|
CHECK_FOR_LBPWS;
|
||||||
CHECK_FOR_SBC;
|
CHECK_FOR_SBC;
|
||||||
|
|
||||||
|
if (inq_bl->wsnz) {
|
||||||
|
logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 does not support 0-blocks.");
|
||||||
|
CU_PASS("[SKIPPED] WRITESAME10 does not support 0-blocks.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
zeroBlock = alloca(block_size);
|
zeroBlock = alloca(block_size);
|
||||||
memset(zeroBlock, 0, block_size);
|
memset(zeroBlock, 0, block_size);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user