diff --git a/test-tool/0131_verify10_mismatch.c b/test-tool/0131_verify10_mismatch.c index 24df52d..fdd1105 100644 --- a/test-tool/0131_verify10_mismatch.c +++ b/test-tool/0131_verify10_mismatch.c @@ -28,7 +28,7 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los struct scsi_task *vtask; struct scsi_readcapacity10 *rc10; int ret, i, lun; - uint32_t block_size, num_blocks; + uint32_t block_size; printf("0131_verify10_mismatch:\n"); printf("=======================\n"); @@ -66,7 +66,6 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los goto finished; } block_size = rc10->block_size; - num_blocks = rc10->lba; scsi_free_scsi_task(task); @@ -83,14 +82,14 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los printf("[FAILED]\n"); printf("Failed to send read10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; - goto finished; + goto test2; } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("Read10 command: failed with sense. %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } buf = task->datain.data; @@ -99,7 +98,7 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } /* flip a random byte in the data */ buf[random() % task->datain.size] ^= 'X'; @@ -110,6 +109,15 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los printf("Failed to send verify10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); + goto test2; + } + if (vtask->status == SCSI_STATUS_CHECK_CONDITION + && vtask->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && vtask->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + scsi_free_scsi_task(vtask); goto finished; } if (vtask->status == SCSI_STATUS_GOOD) { @@ -118,7 +126,7 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } if (vtask->sense.key != SCSI_SENSE_MISCOMPARE) { @@ -127,7 +135,7 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -135,6 +143,8 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0132_verify10_mismatch_no_cmp.c b/test-tool/0132_verify10_mismatch_no_cmp.c index 5dfff5b..2f272a1 100644 --- a/test-tool/0132_verify10_mismatch_no_cmp.c +++ b/test-tool/0132_verify10_mismatch_no_cmp.c @@ -28,7 +28,7 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d struct scsi_task *vtask; struct scsi_readcapacity10 *rc10; int ret, i, lun; - uint32_t block_size, num_blocks; + uint32_t block_size; printf("0132_verify10_mismatch_no_cmp:\n"); printf("==============================\n"); @@ -66,7 +66,6 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d goto finished; } block_size = rc10->block_size; - num_blocks = rc10->lba; scsi_free_scsi_task(task); @@ -83,14 +82,14 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d printf("[FAILED]\n"); printf("Failed to send read10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; - goto finished; + goto test2; } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("Read10 command: failed with sense. %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } buf = task->datain.data; @@ -99,7 +98,7 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } /* flip a random byte in the data */ buf[random() % task->datain.size] ^= 'X'; @@ -113,6 +112,15 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d printf("Failed to send verify10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); + goto test2; + } + if (vtask->status == SCSI_STATUS_CHECK_CONDITION + && vtask->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && vtask->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + scsi_free_scsi_task(vtask); goto finished; } if (vtask->status != SCSI_STATUS_GOOD) { @@ -121,7 +129,7 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -129,6 +137,8 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0271_verify16_mismatch.c b/test-tool/0271_verify16_mismatch.c index b2cc8e8..e79bc17 100644 --- a/test-tool/0271_verify16_mismatch.c +++ b/test-tool/0271_verify16_mismatch.c @@ -29,7 +29,6 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los struct scsi_readcapacity16 *rc16; int ret, i, lun; uint32_t block_size; - uint64_t num_blocks; printf("0271_verify16_mismatch:\n"); printf("=======================\n"); @@ -67,7 +66,6 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los goto finished; } block_size = rc16->block_length; - num_blocks = rc16->returned_lba; scsi_free_scsi_task(task); @@ -84,14 +82,14 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los printf("[FAILED]\n"); printf("Failed to send read16 command: %s\n", iscsi_get_error(iscsi)); ret = -1; - goto finished; + goto test2; } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("Read16 command: failed with sense. %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } buf = task->datain.data; @@ -100,7 +98,7 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } /* flip a random byte in the data */ buf[random() % task->datain.size] ^= 'X'; @@ -111,6 +109,15 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los printf("Failed to send verify10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); + goto test2; + } + if (vtask->status == SCSI_STATUS_CHECK_CONDITION + && vtask->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && vtask->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + scsi_free_scsi_task(vtask); goto finished; } if (vtask->status == SCSI_STATUS_GOOD) { @@ -119,7 +126,7 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } if (vtask->sense.key != SCSI_SENSE_MISCOMPARE) { @@ -128,7 +135,7 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -136,6 +143,8 @@ int T0271_verify16_mismatch(const char *initiator, const char *url, int data_los } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0272_verify16_mismatch_no_cmp.c b/test-tool/0272_verify16_mismatch_no_cmp.c index 996b630..1677fdb 100644 --- a/test-tool/0272_verify16_mismatch_no_cmp.c +++ b/test-tool/0272_verify16_mismatch_no_cmp.c @@ -29,7 +29,6 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d struct scsi_readcapacity16 *rc16; int ret, i, lun; uint32_t block_size; - uint64_t num_blocks; printf("0272_verify16_mismatch_no_cmp:\n"); printf("==============================\n"); @@ -67,7 +66,6 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d goto finished; } block_size = rc16->block_length; - num_blocks = rc16->returned_lba; scsi_free_scsi_task(task); @@ -84,14 +82,14 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d printf("[FAILED]\n"); printf("Failed to send read16 command: %s\n", iscsi_get_error(iscsi)); ret = -1; - goto finished; + goto test2; } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("Read16 command: failed with sense. %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } buf = task->datain.data; @@ -100,7 +98,7 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } /* flip a random byte in the data */ buf[random() % task->datain.size] ^= 'X'; @@ -114,6 +112,15 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d printf("Failed to send verify16 command: %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); + goto test2; + } + if (vtask->status == SCSI_STATUS_CHECK_CONDITION + && vtask->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && vtask->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + scsi_free_scsi_task(vtask); goto finished; } if (vtask->status != SCSI_STATUS_GOOD) { @@ -122,7 +129,7 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -130,6 +137,8 @@ int T0272_verify16_mismatch_no_cmp(const char *initiator, const char *url, int d } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0281_verify12_mismatch.c b/test-tool/0281_verify12_mismatch.c index 77c181f..08f189f 100644 --- a/test-tool/0281_verify12_mismatch.c +++ b/test-tool/0281_verify12_mismatch.c @@ -84,14 +84,14 @@ int T0281_verify12_mismatch(const char *initiator, const char *url, int data_los printf("[FAILED]\n"); printf("Failed to send read12 command: %s\n", iscsi_get_error(iscsi)); ret = -1; - goto finished; + goto test2; } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("Read12 command: failed with sense. %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } buf = task->datain.data; @@ -100,7 +100,7 @@ int T0281_verify12_mismatch(const char *initiator, const char *url, int data_los printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } /* flip a random byte in the data */ buf[random() % task->datain.size] ^= 'X'; @@ -111,6 +111,15 @@ int T0281_verify12_mismatch(const char *initiator, const char *url, int data_los printf("Failed to send verify10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); + goto test2; + } + if (vtask->status == SCSI_STATUS_CHECK_CONDITION + && vtask->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && vtask->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + scsi_free_scsi_task(vtask); goto finished; } if (vtask->status == SCSI_STATUS_GOOD) { @@ -119,7 +128,7 @@ int T0281_verify12_mismatch(const char *initiator, const char *url, int data_los ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } if (vtask->sense.key != SCSI_SENSE_MISCOMPARE) { @@ -128,7 +137,7 @@ int T0281_verify12_mismatch(const char *initiator, const char *url, int data_los ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -136,6 +145,8 @@ int T0281_verify12_mismatch(const char *initiator, const char *url, int data_los } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0282_verify12_mismatch_no_cmp.c b/test-tool/0282_verify12_mismatch_no_cmp.c index 39eb1cc..ccd655f 100644 --- a/test-tool/0282_verify12_mismatch_no_cmp.c +++ b/test-tool/0282_verify12_mismatch_no_cmp.c @@ -29,7 +29,6 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d struct scsi_readcapacity16 *rc16; int ret, i, lun; uint32_t block_size; - uint64_t num_blocks; printf("0282_verify12_mismatch_no_cmp:\n"); printf("==============================\n"); @@ -67,7 +66,6 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d goto finished; } block_size = rc16->block_length; - num_blocks = rc16->returned_lba; scsi_free_scsi_task(task); @@ -84,14 +82,14 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d printf("[FAILED]\n"); printf("Failed to send read12 command: %s\n", iscsi_get_error(iscsi)); ret = -1; - goto finished; + goto test2; } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("Read12 command: failed with sense. %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } buf = task->datain.data; @@ -100,7 +98,7 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } /* flip a random byte in the data */ buf[random() % task->datain.size] ^= 'X'; @@ -114,6 +112,15 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d printf("Failed to send verify12 command: %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); + goto test2; + } + if (vtask->status == SCSI_STATUS_CHECK_CONDITION + && vtask->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && vtask->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + scsi_free_scsi_task(vtask); goto finished; } if (vtask->status != SCSI_STATUS_GOOD) { @@ -122,7 +129,7 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -130,6 +137,8 @@ int T0282_verify12_mismatch_no_cmp(const char *initiator, const char *url, int d } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi);