From 808eed9680c12ca31120780cdf6769b1a849c146 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 23 Mar 2013 11:23:02 -0700 Subject: [PATCH] Make task->residual a size_t instead of an int Update and improve the log messages for failures for the read10 invalid test --- include/scsi-lowlevel.h | 2 +- test-tool/0105_read10_invalid.c | 12 ++--- test-tool/0122_read6_invalid.c | 12 ++--- test-tool/0350_orwrite_simple.c | 7 +-- test-tool/1020_bufferoffset_invalid.c | 2 +- test-tool/iscsi-support.c | 2 +- test-tool/iscsi-support.h | 2 +- test-tool/test_read10_invalid.c | 78 +++++++++++++++++++++++---- 8 files changed, 88 insertions(+), 29 deletions(-) diff --git a/include/scsi-lowlevel.h b/include/scsi-lowlevel.h index 07d39be..aae1119 100644 --- a/include/scsi-lowlevel.h +++ b/include/scsi-lowlevel.h @@ -267,7 +267,7 @@ struct scsi_task { unsigned char cdb[SCSI_CDB_MAX_SIZE]; enum scsi_residual residual_status; - int residual; + size_t residual; struct scsi_sense sense; struct scsi_data datain; struct scsi_allocated_memory *mem; diff --git a/test-tool/0105_read10_invalid.c b/test-tool/0105_read10_invalid.c index 6e6992f..1acb36c 100644 --- a/test-tool/0105_read10_invalid.c +++ b/test-tool/0105_read10_invalid.c @@ -95,7 +95,7 @@ int T0105_read10_invalid(const char *initiator, const char *url) goto finished; } if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || - task->residual != (int64_t)block_size) { + task->residual != block_size) { printf("[FAILED]\n"); printf("Read10 returned incorrect residual overflow.\n"); ret = -1; @@ -141,7 +141,7 @@ int T0105_read10_invalid(const char *initiator, const char *url) goto finished; } if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW || - task->residual != (int64_t)block_size) { + task->residual != block_size) { printf("[FAILED]\n"); printf("Read10 returned incorrect residual underflow.\n"); ret = -1; @@ -184,7 +184,7 @@ int T0105_read10_invalid(const char *initiator, const char *url) goto finished; } if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || - task->residual != (int64_t)(block_size - 200)) { + task->residual != block_size - 200) { printf("[FAILED]\n"); printf("Read10 returned incorrect residual overflow.\n"); ret = -1; @@ -196,7 +196,7 @@ int T0105_read10_invalid(const char *initiator, const char *url) /* Try a read of 2 blocks but xferlength == 'block_size' */ - printf("Read10 2 blocks but with iscsi ExpectedDataTransferLength==%d ... ", block_size); + printf("Read10 2 blocks but with iscsi ExpectedDataTransferLength==%zu ... ", block_size); task = malloc(sizeof(struct scsi_task)); if (task == NULL) { @@ -221,13 +221,13 @@ int T0105_read10_invalid(const char *initiator, const char *url) } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); - printf("Read10 of 2 blocks with iscsi ExpectedDataTransferLength==%d should succeed.\n", block_size); + printf("Read10 of 2 blocks with iscsi ExpectedDataTransferLength==%zu should succeed.\n", block_size); ret = -1; scsi_free_scsi_task(task); goto finished; } if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || - task->residual != (int64_t)block_size) { + task->residual != block_size) { printf("[FAILED]\n"); printf("Read10 returned incorrect residual overflow.\n"); ret = -1; diff --git a/test-tool/0122_read6_invalid.c b/test-tool/0122_read6_invalid.c index d1deda5..4c754ad 100644 --- a/test-tool/0122_read6_invalid.c +++ b/test-tool/0122_read6_invalid.c @@ -95,7 +95,7 @@ int T0122_read6_invalid(const char *initiator, const char *url) goto finished; } if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || - task->residual != (ssize_t)block_size) { + task->residual != block_size) { printf("[FAILED]\n"); printf("Read6 returned incorrect residual overflow.\n"); ret = -1; @@ -141,7 +141,7 @@ int T0122_read6_invalid(const char *initiator, const char *url) goto finished; } if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW || - task->residual != (ssize_t)block_size) { + task->residual != block_size) { printf("[FAILED]\n"); printf("Read6 returned incorrect residual underflow.\n"); ret = -1; @@ -184,7 +184,7 @@ int T0122_read6_invalid(const char *initiator, const char *url) goto finished; } if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || - task->residual != (ssize_t)block_size - 200) { + task->residual != block_size - 200) { printf("[FAILED]\n"); printf("Read6 returned incorrect residual overflow.\n"); ret = -1; @@ -196,7 +196,7 @@ int T0122_read6_invalid(const char *initiator, const char *url) /* Try a read of 2 blocks but xferlength == block_size */ - printf("Read6 2 blocks but with iscsi ExpectedDataTransferLength==%d ... ", block_size); + printf("Read6 2 blocks but with iscsi ExpectedDataTransferLength==%zu ... ", block_size); task = malloc(sizeof(struct scsi_task)); if (task == NULL) { @@ -221,13 +221,13 @@ int T0122_read6_invalid(const char *initiator, const char *url) } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); - printf("Read6 of 2 blocks with iscsi ExpectedDataTransferLength==%d should succeed.\n", block_size); + printf("Read6 of 2 blocks with iscsi ExpectedDataTransferLength==%zu should succeed.\n", block_size); ret = -1; scsi_free_scsi_task(task); goto finished; } if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || - task->residual != (ssize_t)block_size) { + task->residual != block_size) { printf("[FAILED]\n"); printf("Read6 returned incorrect residual overflow.\n"); ret = -1; diff --git a/test-tool/0350_orwrite_simple.c b/test-tool/0350_orwrite_simple.c index a9c6e95..8df50a5 100644 --- a/test-tool/0350_orwrite_simple.c +++ b/test-tool/0350_orwrite_simple.c @@ -25,7 +25,8 @@ int T0350_orwrite_simple(const char *initiator, const char *url) { struct iscsi_context *iscsi; struct scsi_task *task; - int ret, i, j, lun; + int ret, i, lun; + unsigned int j; unsigned char r1data[4096 * 256]; unsigned char r2data[4096 * 256]; unsigned char ordata[4096 * 256]; @@ -84,7 +85,7 @@ int T0350_orwrite_simple(const char *initiator, const char *url) } memcpy(r1data, task->datain.data, i * block_size); memset(ordata, 0x5a, i * block_size); - for (j = 0; j < (int)(i * block_size); j++) { + for (j = 0; j < i * block_size; j++) { r2data[j] = r1data[j] | ordata[j]; } scsi_free_scsi_task(task); @@ -169,7 +170,7 @@ int T0350_orwrite_simple(const char *initiator, const char *url) memcpy(r1data, task->datain.data, i * block_size); memcpy(r1data, task->datain.data, i * block_size); memset(ordata, 0xa5, i * block_size); - for (j = 0; j < (int)(i * block_size); j++) { + for (j = 0; j < i * block_size; j++) { r2data[j] = r1data[j] | ordata[j]; } scsi_free_scsi_task(task); diff --git a/test-tool/1020_bufferoffset_invalid.c b/test-tool/1020_bufferoffset_invalid.c index 26e241d..c044094 100644 --- a/test-tool/1020_bufferoffset_invalid.c +++ b/test-tool/1020_bufferoffset_invalid.c @@ -136,7 +136,7 @@ int T1020_bufferoffset_invalid(const char *initiator, const char *url) iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; iscsi->target_max_recv_data_segment_length = block_size; - printf("Write 2 DATA-IN with BUFFEROFFSET==-%d ... ", block_size); + printf("Write 2 DATA-IN with BUFFEROFFSET==-%zu ... ", block_size); /* we dont want autoreconnect since some targets will drop the * on this condition. */ diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index ca189a3..4e46575 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -47,7 +47,7 @@ const char *initiatorname2 = const char *tgt_url; -uint32_t block_size; +size_t block_size; uint64_t num_blocks; int lbpme; int lbppb; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 64fce3a..b605a7a 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -128,7 +128,7 @@ do { \ } \ } while (0); -extern uint32_t block_size; +extern size_t block_size; extern uint64_t num_blocks; extern int lbpme; extern int lbppb; diff --git a/test-tool/test_read10_invalid.c b/test-tool/test_read10_invalid.c index 1a620cb..d7e0afd 100644 --- a/test-tool/test_read10_invalid.c +++ b/test-tool/test_read10_invalid.c @@ -36,7 +36,7 @@ test_read10_invalid(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test invalid READ10 commands"); - logging(LOG_VERBOSE, "Block size is %u", block_size); + logging(LOG_VERBOSE, "Block size is %zu", block_size); /* Try a read10 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); @@ -63,14 +63,27 @@ test_read10_invalid(void) CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); + if (task->status != SCSI_STATUS_GOOD) { + logging(LOG_VERBOSE, "[FAILED] Target returned error %s", + iscsi_get_error(iscsic)); + } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); logging(LOG_VERBOSE, "Verify residual overflow flag is set"); + if (task->residual_status != SCSI_RESIDUAL_OVERFLOW) { + logging(LOG_VERBOSE, "[FAILED] Target did not set residual " + "overflow flag"); + } CU_ASSERT_EQUAL(task->residual_status, SCSI_RESIDUAL_OVERFLOW); - logging(LOG_VERBOSE, "Verify we got %u bytes of residual overflow", + logging(LOG_VERBOSE, "Verify we got %zu bytes of residual overflow", block_size); - CU_ASSERT_EQUAL(task->residual, (int64_t)block_size); + if (task->residual != block_size) { + logging(LOG_VERBOSE, "[FAILED] Target did not set correct " + "amount of residual. Expected %zu but got %zu.", + block_size, task->residual); + } + CU_ASSERT_EQUAL(task->residual, block_size); scsi_free_scsi_task(task); task = NULL; @@ -93,17 +106,30 @@ test_read10_invalid(void) CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); + if (task->status != SCSI_STATUS_GOOD) { + logging(LOG_VERBOSE, "[FAILED] Target returned error %s", + iscsi_get_error(iscsic)); + } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); logging(LOG_VERBOSE, "Verify we got a whole block back from the target"); CU_ASSERT_EQUAL(task->datain.size, (int)block_size); logging(LOG_VERBOSE, "Verify residual underflow flag is set"); - CU_ASSERT_EQUAL(task->residual_status, SCSI_RESIDUAL_OVERFLOW); + if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW) { + logging(LOG_VERBOSE, "[FAILED] Target did not set residual " + "underflow flag"); + } + CU_ASSERT_EQUAL(task->residual_status, SCSI_RESIDUAL_UNDERFLOW); - logging(LOG_VERBOSE, "Verify we got %u bytes of residual underflow", + logging(LOG_VERBOSE, "Verify we got %zu bytes of residual underflow", 10000 - block_size); - CU_ASSERT_EQUAL(task->residual, (int64_t)(10000 - block_size)); + if (task->residual != 10000 - block_size) { + logging(LOG_VERBOSE, "[FAILED] Target did not set correct " + "amount of residual. Expected %zu but got %zu.", + 10000 - block_size, task->residual); + } + CU_ASSERT_EQUAL(task->residual, 10000 - block_size); scsi_free_scsi_task(task); task = NULL; @@ -124,17 +150,30 @@ test_read10_invalid(void) CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); + if (task->status != SCSI_STATUS_GOOD) { + logging(LOG_VERBOSE, "[FAILED] Target returned error %s", + iscsi_get_error(iscsic)); + } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); logging(LOG_VERBOSE, "Verify we got 200 bytes back from the target"); CU_ASSERT_EQUAL(task->datain.size, 200); logging(LOG_VERBOSE, "Verify residual overflow flag is set"); + if (task->residual_status != SCSI_RESIDUAL_OVERFLOW) { + logging(LOG_VERBOSE, "[FAILED] Target did not set residual " + "overflow flag"); + } CU_ASSERT_EQUAL(task->residual_status, SCSI_RESIDUAL_OVERFLOW); - logging(LOG_VERBOSE, "Verify we got %u bytes of residual overflow", + logging(LOG_VERBOSE, "Verify we got %zu bytes of residual overflow", block_size - 200); - CU_ASSERT_EQUAL(task->residual, (int64_t)block_size - 200); + if (task->residual != block_size - 200) { + logging(LOG_VERBOSE, "[FAILED] Target did not set correct " + "amount of residual. Expected %zu but got %zu.", + block_size - 200, task->residual); + } + CU_ASSERT_EQUAL(task->residual, block_size - 200); scsi_free_scsi_task(task); task = NULL; @@ -142,7 +181,7 @@ test_read10_invalid(void) logging(LOG_VERBOSE, "Try reading two blocks but iSCSI expected " - "transfer length==%u (==one block)", block_size); + "transfer length==%zu (==one block)", block_size); task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); @@ -157,16 +196,29 @@ test_read10_invalid(void) CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); + if (task->status != SCSI_STATUS_GOOD) { + logging(LOG_VERBOSE, "[FAILED] Target returned error %s", + iscsi_get_error(iscsic)); + } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); logging(LOG_VERBOSE, "Verify we got one whole block back from the target"); CU_ASSERT_EQUAL(task->datain.size, (int)block_size); logging(LOG_VERBOSE, "Verify residual overflow flag is set"); + if (task->residual_status != SCSI_RESIDUAL_OVERFLOW) { + logging(LOG_VERBOSE, "[FAILED] Target did not set residual " + "overflow flag"); + } CU_ASSERT_EQUAL(task->residual_status, SCSI_RESIDUAL_OVERFLOW); logging(LOG_VERBOSE, "Verify we got one block of residual overflow"); - CU_ASSERT_EQUAL(task->residual, (int64_t)block_size); + if (task->residual != block_size) { + logging(LOG_VERBOSE, "[FAILED] Target did not set correct " + "amount of residual. Expected %zu but got %zu.", + block_size, task->residual); + } + CU_ASSERT_EQUAL(task->residual, block_size); scsi_free_scsi_task(task); task = NULL; @@ -189,6 +241,12 @@ test_read10_invalid(void) task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); + + logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); + if (task->status != SCSI_STATUS_GOOD) { + logging(LOG_VERBOSE, "[FAILED] Target returned error %s", + iscsi_get_error(iscsic)); + } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); scsi_free_scsi_task(task); task = NULL;