diff --git a/test-tool/test_unmap_0blocks.c b/test-tool/test_unmap_0blocks.c index 2f85cfd..864d574 100644 --- a/test-tool/test_unmap_0blocks.c +++ b/test-tool/test_unmap_0blocks.c @@ -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); } diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index ce86c9f..835ac49 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -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); diff --git a/test-tool/test_verify10_0blocks.c b/test-tool/test_verify10_0blocks.c index 49b6220..ca3b018 100644 --- a/test-tool/test_verify10_0blocks.c +++ b/test-tool/test_verify10_0blocks.c @@ -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, diff --git a/test-tool/test_verify12_0blocks.c b/test-tool/test_verify12_0blocks.c index a5bd481..1489d36 100644 --- a/test-tool/test_verify12_0blocks.c +++ b/test-tool/test_verify12_0blocks.c @@ -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,