diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index cbc4e4d..7e9d314 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -476,6 +476,20 @@ do { \ CU_ASSERT_EQUAL(_r, 0); \ } while (0); +#define UNMAP(...) \ + do { \ + int _r; \ + _r = unmap(__VA_ARGS__); \ + if (_r == -2) { \ + logging(LOG_NORMAL, "[SKIPPED] UNMAP " \ + "is not implemented."); \ + CU_PASS("[SKIPPED] Target does not support " \ + "UNMAP. Skipping test"); \ + return; \ + } \ + CU_ASSERT_EQUAL(_r, 0); \ + } while (0); + #define VERIFY10(...) \ do { \ int _r; \ diff --git a/test-tool/test_unmap_0blocks.c b/test-tool/test_unmap_0blocks.c index 2634d92..b726fa3 100644 --- a/test-tool/test_unmap_0blocks.c +++ b/test-tool/test_unmap_0blocks.c @@ -29,7 +29,7 @@ void test_unmap_0blocks(void) { - int i, ret; + int i; struct unmap_list list[257]; CHECK_FOR_DATALOSS; @@ -41,23 +41,19 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[0].lba = i; list[0].num = 0; - ret = unmap(sd, 0, list, 1, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 0); + UNMAP(sd, 0, list, 1, + EXPECT_STATUS_GOOD); } logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at end-of-LUN"); list[0].lba = num_blocks; list[0].num = 0; - ret = unmap(sd, 0, list, 1, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 0); + UNMAP(sd, 0, list, 1, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Test UNMAP without any descriptors."); - ret = unmap(sd, 0, list, 0, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 0); - + UNMAP(sd, 0, list, 0, + EXPECT_STATUS_GOOD); if (inq_bl->max_unmap_bdc <= 1) { CU_PASS("[SKIPPING] Test UNMAP of 0 blocks with multiple descriptos not supported"); @@ -68,9 +64,8 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 0; - ret = unmap(sd, 0, list, i + 1, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 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\"."); @@ -78,7 +73,6 @@ test_unmap_0blocks(void) list[i].lba = i/2; list[i].num = 0; } - ret = unmap(sd, 0, list, 256, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 0); + UNMAP(sd, 0, list, 256, + EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index 6f0d85b..21c1eab 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -53,9 +53,8 @@ test_unmap_simple(void) logging(LOG_VERBOSE, "UNMAP blocks 0-%d", i); list[0].lba = 0; list[0].num = i; - ret = unmap(sd, 0, list, 1, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 0); + UNMAP(sd, 0, list, 1, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Read blocks 0-%d", i); READ10(sd, NULL, 0, i * block_size, @@ -90,9 +89,8 @@ test_unmap_simple(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 1; - ret = unmap(sd, 0, list, i + 1, - EXPECT_STATUS_GOOD); - CU_ASSERT_EQUAL(ret, 0); + UNMAP(sd, 0, list, i + 1, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Read blocks 0-%d", i); READ10(sd, NULL, 0, i * block_size,