diff --git a/test-tool/0130_verify10_simple.c b/test-tool/0130_verify10_simple.c index 622344e..de7db1d 100644 --- a/test-tool/0130_verify10_simple.c +++ b/test-tool/0130_verify10_simple.c @@ -27,7 +27,7 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss struct scsi_task *vtask; struct scsi_readcapacity10 *rc10; int ret, i, lun; - uint32_t block_size, num_blocks; + uint32_t block_size; printf("0130_verify10_simple:\n"); printf("=====================\n"); @@ -65,7 +65,6 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss goto finished; } block_size = rc10->block_size; - num_blocks = rc10->lba; scsi_free_scsi_task(task); @@ -82,14 +81,14 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss 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; @@ -98,7 +97,7 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } vtask = iscsi_verify10_sync(iscsi, lun, buf, i * block_size, 0, 0, 1, 1, block_size); @@ -107,6 +106,15 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss 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) { @@ -115,7 +123,7 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -123,6 +131,8 @@ int T0130_verify10_simple(const char *initiator, const char *url, int data_loss } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0270_verify16_simple.c b/test-tool/0270_verify16_simple.c index 6acda0a..1a7863b 100644 --- a/test-tool/0270_verify16_simple.c +++ b/test-tool/0270_verify16_simple.c @@ -28,7 +28,6 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss struct scsi_readcapacity16 *rc16; int ret, i, lun; uint32_t block_size; - uint64_t num_blocks; printf("0270_verify16_simple:\n"); printf("=====================\n"); @@ -66,7 +65,6 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss goto finished; } block_size = rc16->block_length; - num_blocks = rc16->returned_lba; scsi_free_scsi_task(task); @@ -83,14 +81,14 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss 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; @@ -99,7 +97,7 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } vtask = iscsi_verify16_sync(iscsi, lun, buf, i * block_size, 0, 0, 1, 1, block_size); @@ -108,6 +106,15 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss 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) { @@ -116,7 +123,7 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -124,6 +131,8 @@ int T0270_verify16_simple(const char *initiator, const char *url, int data_loss } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0280_verify12_simple.c b/test-tool/0280_verify12_simple.c index ecff89b..4bf762c 100644 --- a/test-tool/0280_verify12_simple.c +++ b/test-tool/0280_verify12_simple.c @@ -28,7 +28,6 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss struct scsi_readcapacity16 *rc16; int ret, i, lun; uint32_t block_size; - uint64_t num_blocks; printf("0280_verify12_simple:\n"); printf("=====================\n"); @@ -66,7 +65,6 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss goto finished; } block_size = rc16->block_length; - num_blocks = rc16->returned_lba; scsi_free_scsi_task(task); @@ -90,7 +88,7 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss 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; @@ -99,7 +97,7 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss printf("Failed to access DATA-IN buffer %s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } vtask = iscsi_verify12_sync(iscsi, lun, buf, i * block_size, 0, 0, 1, 1, block_size); @@ -108,6 +106,15 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss 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) { @@ -116,7 +123,7 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); - goto finished; + goto test2; } scsi_free_scsi_task(task); @@ -124,6 +131,8 @@ int T0280_verify12_simple(const char *initiator, const char *url, int data_loss } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi);