Make task->residual a size_t instead of an int

Update and improve the log messages for failures for the read10 invalid test
This commit is contained in:
Ronnie Sahlberg
2013-03-23 11:23:02 -07:00
parent 2d10d0a2d8
commit 808eed9680
8 changed files with 88 additions and 29 deletions

View File

@@ -267,7 +267,7 @@ struct scsi_task {
unsigned char cdb[SCSI_CDB_MAX_SIZE]; unsigned char cdb[SCSI_CDB_MAX_SIZE];
enum scsi_residual residual_status; enum scsi_residual residual_status;
int residual; size_t residual;
struct scsi_sense sense; struct scsi_sense sense;
struct scsi_data datain; struct scsi_data datain;
struct scsi_allocated_memory *mem; struct scsi_allocated_memory *mem;

View File

@@ -95,7 +95,7 @@ int T0105_read10_invalid(const char *initiator, const char *url)
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || if (task->residual_status != SCSI_RESIDUAL_OVERFLOW ||
task->residual != (int64_t)block_size) { task->residual != block_size) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read10 returned incorrect residual overflow.\n"); printf("Read10 returned incorrect residual overflow.\n");
ret = -1; ret = -1;
@@ -141,7 +141,7 @@ int T0105_read10_invalid(const char *initiator, const char *url)
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW || if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW ||
task->residual != (int64_t)block_size) { task->residual != block_size) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read10 returned incorrect residual underflow.\n"); printf("Read10 returned incorrect residual underflow.\n");
ret = -1; ret = -1;
@@ -184,7 +184,7 @@ int T0105_read10_invalid(const char *initiator, const char *url)
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || if (task->residual_status != SCSI_RESIDUAL_OVERFLOW ||
task->residual != (int64_t)(block_size - 200)) { task->residual != block_size - 200) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read10 returned incorrect residual overflow.\n"); printf("Read10 returned incorrect residual overflow.\n");
ret = -1; 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' */ /* 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)); task = malloc(sizeof(struct scsi_task));
if (task == NULL) { if (task == NULL) {
@@ -221,13 +221,13 @@ int T0105_read10_invalid(const char *initiator, const char *url)
} }
if (task->status != SCSI_STATUS_GOOD) { if (task->status != SCSI_STATUS_GOOD) {
printf("[FAILED]\n"); 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; ret = -1;
scsi_free_scsi_task(task); scsi_free_scsi_task(task);
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || if (task->residual_status != SCSI_RESIDUAL_OVERFLOW ||
task->residual != (int64_t)block_size) { task->residual != block_size) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read10 returned incorrect residual overflow.\n"); printf("Read10 returned incorrect residual overflow.\n");
ret = -1; ret = -1;

View File

@@ -95,7 +95,7 @@ int T0122_read6_invalid(const char *initiator, const char *url)
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || if (task->residual_status != SCSI_RESIDUAL_OVERFLOW ||
task->residual != (ssize_t)block_size) { task->residual != block_size) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read6 returned incorrect residual overflow.\n"); printf("Read6 returned incorrect residual overflow.\n");
ret = -1; ret = -1;
@@ -141,7 +141,7 @@ int T0122_read6_invalid(const char *initiator, const char *url)
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW || if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW ||
task->residual != (ssize_t)block_size) { task->residual != block_size) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read6 returned incorrect residual underflow.\n"); printf("Read6 returned incorrect residual underflow.\n");
ret = -1; ret = -1;
@@ -184,7 +184,7 @@ int T0122_read6_invalid(const char *initiator, const char *url)
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || if (task->residual_status != SCSI_RESIDUAL_OVERFLOW ||
task->residual != (ssize_t)block_size - 200) { task->residual != block_size - 200) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read6 returned incorrect residual overflow.\n"); printf("Read6 returned incorrect residual overflow.\n");
ret = -1; 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 */ /* 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)); task = malloc(sizeof(struct scsi_task));
if (task == NULL) { if (task == NULL) {
@@ -221,13 +221,13 @@ int T0122_read6_invalid(const char *initiator, const char *url)
} }
if (task->status != SCSI_STATUS_GOOD) { if (task->status != SCSI_STATUS_GOOD) {
printf("[FAILED]\n"); 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; ret = -1;
scsi_free_scsi_task(task); scsi_free_scsi_task(task);
goto finished; goto finished;
} }
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW || if (task->residual_status != SCSI_RESIDUAL_OVERFLOW ||
task->residual != (ssize_t)block_size) { task->residual != block_size) {
printf("[FAILED]\n"); printf("[FAILED]\n");
printf("Read6 returned incorrect residual overflow.\n"); printf("Read6 returned incorrect residual overflow.\n");
ret = -1; ret = -1;

View File

@@ -25,7 +25,8 @@ int T0350_orwrite_simple(const char *initiator, const char *url)
{ {
struct iscsi_context *iscsi; struct iscsi_context *iscsi;
struct scsi_task *task; struct scsi_task *task;
int ret, i, j, lun; int ret, i, lun;
unsigned int j;
unsigned char r1data[4096 * 256]; unsigned char r1data[4096 * 256];
unsigned char r2data[4096 * 256]; unsigned char r2data[4096 * 256];
unsigned char ordata[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); memcpy(r1data, task->datain.data, i * block_size);
memset(ordata, 0x5a, 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]; r2data[j] = r1data[j] | ordata[j];
} }
scsi_free_scsi_task(task); 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);
memcpy(r1data, task->datain.data, i * block_size); memcpy(r1data, task->datain.data, i * block_size);
memset(ordata, 0xa5, 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]; r2data[j] = r1data[j] | ordata[j];
} }
scsi_free_scsi_task(task); scsi_free_scsi_task(task);

View File

@@ -136,7 +136,7 @@ int T1020_bufferoffset_invalid(const char *initiator, const char *url)
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO;
iscsi->target_max_recv_data_segment_length = block_size; 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 /* we dont want autoreconnect since some targets will drop the
* on this condition. * on this condition.
*/ */

View File

@@ -47,7 +47,7 @@ const char *initiatorname2 =
const char *tgt_url; const char *tgt_url;
uint32_t block_size; size_t block_size;
uint64_t num_blocks; uint64_t num_blocks;
int lbpme; int lbpme;
int lbppb; int lbppb;

View File

@@ -128,7 +128,7 @@ do { \
} \ } \
} while (0); } while (0);
extern uint32_t block_size; extern size_t block_size;
extern uint64_t num_blocks; extern uint64_t num_blocks;
extern int lbpme; extern int lbpme;
extern int lbppb; extern int lbppb;

View File

@@ -36,7 +36,7 @@ test_read10_invalid(void)
logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, LOG_BLANK_LINE);
logging(LOG_VERBOSE, "Test invalid READ10 commands"); 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 */ /* Try a read10 of 1 block but xferlength == 0 */
task = malloc(sizeof(struct scsi_task)); 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? */ CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); 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); CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
logging(LOG_VERBOSE, "Verify residual overflow flag is set"); 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); 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); 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); scsi_free_scsi_task(task);
task = NULL; task = NULL;
@@ -93,17 +106,30 @@ test_read10_invalid(void)
CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_PTR_NOT_NULL(task_ret);
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); 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); CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
logging(LOG_VERBOSE, "Verify we got a whole block back from the target"); logging(LOG_VERBOSE, "Verify we got a whole block back from the target");
CU_ASSERT_EQUAL(task->datain.size, (int)block_size); CU_ASSERT_EQUAL(task->datain.size, (int)block_size);
logging(LOG_VERBOSE, "Verify residual underflow flag is set"); 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); 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); scsi_free_scsi_task(task);
task = NULL; task = NULL;
@@ -124,17 +150,30 @@ test_read10_invalid(void)
CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_PTR_NOT_NULL(task_ret);
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); 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); CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
logging(LOG_VERBOSE, "Verify we got 200 bytes back from the target"); logging(LOG_VERBOSE, "Verify we got 200 bytes back from the target");
CU_ASSERT_EQUAL(task->datain.size, 200); CU_ASSERT_EQUAL(task->datain.size, 200);
logging(LOG_VERBOSE, "Verify residual overflow flag is set"); 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); 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); 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); scsi_free_scsi_task(task);
task = NULL; task = NULL;
@@ -142,7 +181,7 @@ test_read10_invalid(void)
logging(LOG_VERBOSE, "Try reading two blocks but iSCSI expected " 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)); task = malloc(sizeof(struct scsi_task));
CU_ASSERT_PTR_NOT_NULL(task); CU_ASSERT_PTR_NOT_NULL(task);
@@ -157,16 +196,29 @@ test_read10_invalid(void)
CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_PTR_NOT_NULL(task_ret);
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); 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); CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
logging(LOG_VERBOSE, "Verify we got one whole block back from the target"); logging(LOG_VERBOSE, "Verify we got one whole block back from the target");
CU_ASSERT_EQUAL(task->datain.size, (int)block_size); CU_ASSERT_EQUAL(task->datain.size, (int)block_size);
logging(LOG_VERBOSE, "Verify residual overflow flag is set"); 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); CU_ASSERT_EQUAL(task->residual_status, SCSI_RESIDUAL_OVERFLOW);
logging(LOG_VERBOSE, "Verify we got one block of 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); scsi_free_scsi_task(task);
task = NULL; task = NULL;
@@ -189,6 +241,12 @@ test_read10_invalid(void)
task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data);
CU_ASSERT_PTR_NOT_NULL(task_ret); 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); CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
scsi_free_scsi_task(task); scsi_free_scsi_task(task);
task = NULL; task = NULL;