Merge pull request #220 from mimusato/unmap
adds max block descriptor count control to Unmap; skips Verify on LBA…
This commit is contained in:
@@ -30,6 +30,7 @@ void
|
||||
test_unmap_0blocks(void)
|
||||
{
|
||||
int i;
|
||||
int max_nr_bdc = 256;
|
||||
struct unmap_list list[257];
|
||||
|
||||
CHECK_FOR_DATALOSS;
|
||||
@@ -60,19 +61,23 @@ test_unmap_0blocks(void)
|
||||
return;
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at LBA:0-255 with one descriptor per block");
|
||||
for (i = 0; i < 256; i++) {
|
||||
if (inq_bl->max_unmap_bdc > 0 && max_nr_bdc > (int)inq_bl->max_unmap_bdc) {
|
||||
max_nr_bdc = (int)inq_bl->max_unmap_bdc;
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at LBA:0-%d with one descriptor per block", max_nr_bdc - 1);
|
||||
for (i = 0; i < max_nr_bdc; i++) {
|
||||
list[i].lba = i;
|
||||
list[i].num = 0;
|
||||
UNMAP(sd, 0, list, i + 1,
|
||||
EXPECT_STATUS_GOOD);
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at LBA:0-255 with one descriptor per block, possibly \"overlapping\".");
|
||||
for (i = 0; i < 256; i++) {
|
||||
logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at LBA:0-%d with one descriptor per block, possibly \"overlapping\".", max_nr_bdc - 1);
|
||||
for (i = 0; i < max_nr_bdc; i++) {
|
||||
list[i].lba = i/2;
|
||||
list[i].num = 0;
|
||||
}
|
||||
UNMAP(sd, 0, list, 256,
|
||||
UNMAP(sd, 0, list, max_nr_bdc,
|
||||
EXPECT_STATUS_GOOD);
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ void
|
||||
test_unmap_simple(void)
|
||||
{
|
||||
int i;
|
||||
int max_nr_bdc = 256;
|
||||
struct unmap_list list[257];
|
||||
|
||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||
@@ -68,23 +69,27 @@ test_unmap_simple(void)
|
||||
}
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Test UNMAP of 1-256 blocks at the start of the "
|
||||
"LUN with one descriptor per block");
|
||||
if (inq_bl->max_unmap_bdc > 0 && max_nr_bdc > (int)inq_bl->max_unmap_bdc) {
|
||||
max_nr_bdc = (int)inq_bl->max_unmap_bdc;
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Write 'a' to the first 256 LBAs");
|
||||
memset(scratch, 'a', 256 * block_size);
|
||||
WRITE10(sd, 0, 256 * block_size,
|
||||
logging(LOG_VERBOSE, "Test UNMAP of 1-%d blocks at the start of the "
|
||||
"LUN with one descriptor per block", max_nr_bdc);
|
||||
|
||||
logging(LOG_VERBOSE, "Write 'a' to the first %d LBAs", max_nr_bdc);
|
||||
memset(scratch, 'a', max_nr_bdc * block_size);
|
||||
WRITE10(sd, 0, max_nr_bdc * block_size,
|
||||
block_size, 0, 0, 0, 0, 0, scratch,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
for (i = 0; i < max_nr_bdc; i++) {
|
||||
list[i].lba = i;
|
||||
list[i].num = 1;
|
||||
UNMAP(sd, 0, list, i + 1,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read blocks 0-%d", i);
|
||||
READ10(sd, NULL, 0, i * block_size,
|
||||
READ10(sd, NULL, 0, (i + 1) * block_size,
|
||||
block_size, 0, 0, 0, 0, 0, scratch,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
|
||||
@@ -34,9 +34,11 @@ test_verify10_0blocks(void)
|
||||
VERIFY10(sd, num_blocks + 1, 0, block_size, 0, 0, 1, NULL,
|
||||
EXPECT_LBA_OOB);
|
||||
|
||||
logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==2^31");
|
||||
VERIFY10(sd, 0x80000000, 0, block_size, 0, 0, 1, NULL,
|
||||
EXPECT_LBA_OOB);
|
||||
if (num_blocks - 1 < 0x80000000) {
|
||||
logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==2^31");
|
||||
VERIFY10(sd, 0x80000000, 0, block_size, 0, 0, 1, NULL,
|
||||
EXPECT_LBA_OOB);
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==-1");
|
||||
VERIFY10(sd, -1, 0, block_size, 0, 0, 1, NULL,
|
||||
|
||||
@@ -34,9 +34,11 @@ test_verify12_0blocks(void)
|
||||
VERIFY12(sd, num_blocks + 1, 0, block_size, 0, 0, 1, NULL,
|
||||
EXPECT_LBA_OOB);
|
||||
|
||||
logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==2^31");
|
||||
VERIFY12(sd, 0x80000000, 0, block_size, 0, 0, 1, NULL,
|
||||
EXPECT_LBA_OOB);
|
||||
if (num_blocks - 1 < 0x80000000) {
|
||||
logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==2^31");
|
||||
VERIFY12(sd, 0x80000000, 0, block_size, 0, 0, 1, NULL,
|
||||
EXPECT_LBA_OOB);
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==-1");
|
||||
VERIFY12(sd, -1, 0, block_size, 0, 0, 1, NULL,
|
||||
|
||||
Reference in New Issue
Block a user